祖鲁语

决定 在Zulip about GITLAB,github

Avatar of tabbott
Founder at 祖鲁语 ·

我对这个有着复杂的感觉github作为一种产品,我们将其用于Zulip开源项目。On the one hand,I do feel that being on GitHub helps people discover Zulip,因为我们有足够的明星(等),我们在平台上的项目中排名很高。对于降低贡献壁垒(这对我们很重要),Github在每个人的账户方面都占据着主导地位,这是一个明显的好处。

但即使忽略了人们对他们的新企业主(微软)的看法,在很多方面,Github对于开源项目来说是一个糟糕的产品。“亲爱的Github”信之后的几年,它的问题追踪器仍然存在基本的差距:

  • 如果没有对项目的完全写入权限(包括将内容合并到主控形状的能力),则不能授予某人标记/分类问题的权限。post releases,等等)。
  • 您不能让任何拥有Github帐户的人自行分配问题。
  • 更多类似的问题。

很尴尬,因为我已经在各种开源活动中与Github产品经理讨论了3年,他们总是认为事情很重要,但问题产品没有任何改进。也许微软的新管理层会解决他们的产品管理问题,but if not,我想我们最终会迁移到GitLab.

我们有一个定制的机器人程序项目,http://github.com/zulip/zulipbot,to deal with some of these issues where possible,我们讨论的每一个大项目都会做同样的事情,或多或少。

十三 优胜亚博平台怎么样票 · 评论 · 94.9K 意见

决定 在Zulip about 弹性搜索MySQL,波斯特雷斯尔

Avatar of tabbott
Founder at 祖鲁语 ·

我们一直在使用波斯特雷斯尔从祖利普的早期开始,but we actually didn't use it from the beginning.祖利普一开始是个MySQL2012年的项目,因为我们听说这是一个拥有广泛社区的初创企业的好选择。However,we found that even though we were using the Django ORM for most of our database access,we spent a lot of time fighting with MySQL.问题包括错误的排序规则默认值,坏的查询计划需要大量的手动查询调整。

最后我们很沮丧,尝试了PostgreSQL,结果非常好。我们不需要进行任何真正的定制(只是一些针对我们拥有的服务器有多大的调优设置)。and all of our most important queries were faster out of the box.As a result,我们可以删除一组自定义查询,这些查询转义了我们编写的ORM,以使MySQL查询计划器满意(因为Postgres只是自动做了正确的事情)。

之后,我们刚刚从Postgres中获得了大量的价值。我们使用它出色的内置全文搜索,这帮助我们避免了像弹性搜索,我们非常喜欢它的部分索引等特性,这就为我们节省了大量的工作,增加了不必要的额外表,以便在诸如“未读消息”和“星标消息”索引等方面获得良好的性能。

我推荐得不够好。

十二 优胜亚博平台怎么样票 · 22.9K 意见

决定 在Zulip about CircleCI,特拉维斯词

Avatar of tabbott
Founder at 祖鲁语 ·

我们实际上是从特拉维斯词,但是我们已经把主要的建筑迁移到CircleCI,这是一个巨大的进步。

这是一个巨大的进步,原因是Travis CI的图像设计根本不好,where they start with a standard base Linux image containing tons of packages (several versions of postgres,每个编程语言环境,等)。对于“为快速运行的小项目获取构建”用例来说,这可能很好,但对于一个需要大量依赖关系并关心构建的性能和可靠性的大型项目来说,这是一场灾难。

这一问题因其网络基础设施不可靠而加剧;we usually saw over 1% of builds failing due to transient networking errors in Travis CI,even after we added retries最经常失败的操作,如APT更新orPIP安装.他们从不安装Ubuntu的点发布更新到他们的图片。所以做一个APT更新apt install,或者特别是APT升级would take forever.最后我们编写了代码来实际卸载他们的许多基本包,并锁定其他数百个版本以获得半快速的,半可靠结构。It was infuriating.

Circleci 2.0系统对CI系统有正确的设计:我们可以自定义基本映像,以从安装构建所需的任何昂贵软件包开始,我们可以随时更新图像。最终结果是当迁移时,we were able to delete all the hacky optimizations mentioned above,但最终的构建延迟要快50%。我们在与网络相关的薄片方面的问题也减少了5-10倍,which means one doesn't have to constantly check whether a build failure is actually due to an issue with the code under test or "just another networking flake".

优胜亚博平台怎么样票 · 2.3K 意见

决定 在Zulip about Markdown

Avatar of tabbott
Founder at 祖鲁语 ·

我们对选择Markdown作为祖利普的作曲语言:

  • 每个人都可以写,因为它就像电子邮件和许多其他产品一样使用它。
  • It has a WYSIWYG type experience,所以我们不觉得有必要整合像Quill这样的高级编辑。
  • There are mature markdown processors for every programming language.Having compatible,Python和JavaScript的高质量实现对于正确执行本地Echo非常重要(有关必要原因的详细信息,请参阅我们链接的降价文档)。
  • 呈现到HTML很快,易于自动化测试,而且易于调试。

我们必须为聊天上下文定制一些降价实现,because we don't have the guarantee that content is not split across multiple messages (a good example is that you don't want the "automatically change numbered lists to start at 1" feature in default markdown;你想把它限制在所有数字都是1的编号列表中,for example) .

优胜亚博平台怎么样票 · 2.3K 意见

决定 在Zulip about React Native

Avatar of tabbott
Founder at 祖鲁语 ·

我们一直在使用React Native对于Zulip移动应用程序,虽然平台确实有问题,这也节省了我们大量的时间。

人们谈论得不够多的一件事是为同一个应用程序维护重复代码库的产品思考成本,as one would have with a traditional fully native app for both platforms.

That said,RN生态系统经常令人沮丧;RN的发布经常打破重要的东西,通常,底层实现的基本特性(如支持在各种网络环境中自动跟踪重定向)没有正确地公开,which can result in a bunch of extra work.但同时,我们节省了维护两个冗余移动团队的所有工作,determining and communicating details of the server/client interface with those two teams,and fixing bugs twice.

总体而言,我们对当地的反应很满意,since I think it's the best platform available for what it does in 2018.但我也对颤振感兴趣,which in our view has a better development strategy/structure,能够在未来几年提供更好的跨平台移动开发经验

9 优胜亚博平台怎么样票 · 17.8K 意见

决定 在Zulip about Redis,蟒蛇,拉比麦克

Avatar of tabbott
Founder at 祖鲁语 ·

我们一直在使用拉比麦克因为我们需要一个排队系统。我喜欢的是它的扩展性非常好,并且有适合各种平台的好库,包括我们自己的蟒蛇.所以除了让它运转,we've had to put basically 0 effort into making it scale for our needs.

However,有几个方面可以做得更好:*它的错误消息是绝对可怕的;如果我们的一个用户最终在rabbitmq中出错(即使对于简单的事情,如配置错误的主机名)。他们总是需要得到祖利普队的帮助,因为错误日志是不可破解的。As an open source project,we've handled this issue by really carefully scripting the installation to be a failure-proof configuration (in this case,将rabbitmq主机名设置为127.0.0.1,所以没有任何用户控制的配置可以破坏它)。但是到达那里真的是一种痛苦,我们确定需要这样做的过程给安装zulip的人带来了巨大的痛苦。pikalibrary for Python takes a lot of time to startup a RabbitMQ connection;这意味着zulip服务器重新启动比理想情况下更具破坏性。*需要运行rabbitmqctlmanagement commands as root.

但总的来说,我喜欢它干净,clear semanstics and high scalability,也没想过要做这样的工作雷迪斯(有它自己的缺点)。

优胜亚博平台怎么样票 · 86K 意见

决定 在Zulip about 水银般的,Git

Avatar of tabbott
Founder at 祖鲁语 ·

I've been excited aboutGitever since it got a built-in UI.这是一个真正坚实的完美结合,simple data model,它允许有经验的用户精确预测git子命令将要执行的操作,通常不需要阅读文档(有关详细信息,请参阅所附文章中链接的幻灯片)。Most important to me as the lead developer of a large open source project (Zulip) is that it makes it possible to build a really clean,clear development history that I regularly use to understand details of our code history that are critical to making correct changes.

它的表现真的很好,真的很好。In 2014,我管理了Dropbox的迁移水银的Git。只是交换工具,几乎所有常见的操作(GIT状态GIT日志GIT提交等)比Mercurial快2-10倍。如果你考虑一下这是有道理的,因为Git是为在Linux上运行良好而设计的,最大的开源项目之一,but it was still a huge productivity increase that we got basically for free.

If you're learning Git,我强烈建议阅读Zulip的Git指南的其他部分;我们从开发人员那里得到了很多积极的反馈,认为它是一种有用的资源,即使对于与zulip无关的项目也是如此。

优胜亚博平台怎么样票 · 84K 意见

决定 在Zulip about Go,蟒蛇

Avatar of tabbott

我们一直很喜欢蟒蛇自从我第一次创业时就采用了它,克莉丝蒂But it's been an absolutely ideal tool for Zulip,它现在是松弛的主要替代品之一。Zulip is 100% open source software,Github上有约10万颗星星。And being written in idiomatic Python has been really helpful for our open source project,因为它是这样一种可访问的语言:任何程序员都可以快速学习Python。And that means we're not restricted to e.g.“那些对为祖利普做出贡献感到兴奋的人,也知道“。

I've linked to a blog post I wrote on Python's awesome new static type system,它修复了人们对使用Python进行大型代码库的主要抱怨,which has a lot more perspective,以及一些关于我们的python 3迁移的评论。

优胜亚博平台怎么样票 · 7.7K 意见

决定 在Zulip about 松弛,祖鲁语

Avatar of hackerkid
软件工程师 at 祖鲁语 ·

祖鲁语在所有聊天应用程序中都很容易找到最好的线程模型,我更喜欢它而不是slack,Mattermost火箭聊天嬉皮士不和等每次谈话都是一个独立的主题。这种模式使人们更容易赶上和参与对话。一旦你习惯了zulip的线程模型,它就很难容忍线程模型松弛这真的是低效和浪费时间。

5 优胜亚博平台怎么样票 · 7.1K 意见

决定 在Zulip about Django REST framework,丹戈

Avatar of tabbott
Founder at 祖鲁语 ·

Zulip has been powered by丹戈从它与Django 1.4开发的早期开始,早在2012年。作为一个相当成熟、规模巨大的Web应用程序,we're at the stage in many companies' development where one starts to rip out more and more of the web framework to optimize things or just make them work the way we want.(E.g.while I was at Dropbox in early 2016,we discovered we only had about 600 lines of code left from the original Pylons framework that actually ran).

对于django来说,其中一件非常棒的事情就是我们仍然很乐意将它用于项目中的绝大多数代码,每次Django推出新版本,I read the changelog and get excited about several improvements that actually make my life better.虽然Django做了一些我不同意的设计决策(例如我不喜欢Django REST framework,认为这会让生活变得更困难,Django also makes it easy to do your own thing,我们已经做了很大的努力(有关我们的有请求变量框架)。

Overall I think we've gotten a ton of value out of Python and Django and would recommend it to anyone starting a new full-featured web application project today.

5 优胜亚博平台怎么样票 · 2.1K 意见