摘要:我创办了一家公司 Astral,旨在继续为 Python 生态系统打造高性能开发工具——我们将继续维护 Ruff,并开发更多类似 Ruff 的工具。

我们完成了 400 万美元的种子轮融资,由 Accel 领投,跟投方包括 Caffeinated Capital 以及 Guillermo Rauch (Vercel)、Solomon Hykes (Docker)、David Cramer (Sentry) 等业界人士。


我构建 Ruff 是为了验证一个理论:Python 工具链可以变得快得多、多得多。最初的原型验证了这一理论。但即便如此,我当时并不确定是否有人会在意一个更快的代码检查器(linter)。

过去几个月的表现证明,Python 社区确实非常在意!自去年 8 月以来,Ruff 的月下载量已突破百万次,GitHub Star 数超过 12,000 个。它已被全球一些最流行且成熟的 Python 项目采用,例如 AirflowFastAPIPandasSciPy,以及 AmazonHugging FaceLangChainMicrosoftMozillaNetflix知名公司和组织

Ruff 的增长甚至超过了最乐观的预期。

5,00010,00015,000GitHub Starsfor selected projectsRuffPyreisortMypyPyrightPyflakesFlake8Prospector20152020

Star 数或许是虚荣指标,但作为衡量热情的标尺……Ruff 确实让人激动。

撇开数据不谈,围绕 Ruff 的积极氛围始终让我感到惊讶。这种积极感贯穿于每一次互动和对话之中。能够从事一件与用户产生如此强烈共鸣的工作,我感到非常幸运。因此,感谢每一位帮助 Ruff 成长到今天的人——无论是贡献者还是用户。

作为一名工程师,我深知采用新工具是一个关乎深远、长期影响的重大决定。正是那些聪明、严谨的人们在项目 0.1 版本之前就愿意尝试,才给了 Ruff 茁壮成长所需的“氧气”。许多成熟的项目和公司每天都依赖 Ruff 来编写代码。我认为这既是我最大的动力来源,也是我最重要的责任。感谢你们的信任。我绝不会让你们失望。

对我而言,社区对 Ruff 的反应本身就证明了一个机会:通过构建出色的工具,让 Python 生态系统变得更具生产力。 几乎每天都有人要求我将 Ruff 扩展到其他问题领域,或是 Python 工具链的其他部分……

Astral 的存在正是为了抓住这一机遇。

关于 Astral

Astral 的使命是通过打造高性能的开发者工具,提升 Python 生态系统的生产力。简而言之,我们将通过(1)扩展 Ruff 本身,以及(2)开发更多类似 Ruff 的工具,将 Ruff 背后的理念发挥到极致。

当用户第一次尝试 Ruff 时,他们往往会描述一种难以置信的感觉。Astral 的目标就是将这种体验带到工具链的更多环节中。

我们构建的一些工具看起来会像是 Ruff 的自然延伸(例如 自动格式化工具);另一些则会跳出静态分析的主题。但我们的核心目标非常简单:通过构建人们喜爱的工具——那些快速、健壮、直观且易于集成的工具——让 Python 生态系统变得更具生产力。

为了实现我们的目标,我们完成了 400 万美元的种子轮融资,由 Accel 领投,跟投方包括 Caffeinated Capital、Guillermo Rauch (Vercel)、Solomon Hykes (Docker)、David Cramer (Sentry)、Wes McKinney (Voltron Data)、Nick Schrock (Elementl) 等。这些都是我长期以来一直崇拜的投资者和创始人。我很感激他们的支持。

我相信,我早期决定全职投入 Ruff 是它成功的关键:实时响应问题、当天发布修复、保持高开发速度——履行这一承诺需要全职专注。我相信,在扩大范围的同时维持这些高标准,同样需要一个全职团队。

融资使我们有能力组建这支团队(目前我们有三人),全身心投入工作,支持我们的社区贡献者,并着眼于长期发展。

下一步计划是什么?

坦白说:继续做同样的事。虽然我很高兴向世界展示 Astral,但这家公司(以及此次融资)是为了让我们能够沿着现有的道路继续前行。Ruff 依然是 Ruff,我们的工作将保持开源,并使用宽松的开源协议。 未来,我们可能会围绕工具构建和销售服务,但工具本身将永远保持免费和开源。

我们的计划是通过直接集成我们的开源产品,提供比现有方案更好、更易用的付费服务。我们的目标是让这些服务像 Ruff 本身一样具有影响力——但您可以选择不使用它们。无论如何,Ruff 都将保持免费和开源,就像今天一样。

从一开始,Ruff 的目标就是提升现有的标准并融入更广泛的 Python 社区(例如,您可以将 Ruff 与 isort 结合使用,或者将其作为 isort 的替代品;同样地,您以后也可以将 Ruff 与 Black 结合使用,或者使用 Ruff 内置的自动格式化工具)。这一点也不会改变。事实上,我们认为这对我们的成功至关重要。

同样,我们将继续与社区一起公开构建项目。Ruff 是我作为开源维护者大规模参与的首个项目,我始终有意创建一个对新老贡献者都友好的环境。虽然我仍在学习中,但我们已经取得了一些初步成功,这仍将是该项目以及我个人的优先事项。

如往常一样,您可以在 DiscordGitHub 上找到我们的核心团队。我们也将参加 PyCon(对我个人而言是第一次)。

联系我们

最后,在过去的几周里,我花了很多时间与用户交谈。感谢那些已经抽出时间与我交流的朋友,你们知道自己是谁。

如果您每天都在使用 Python,在生产环境中使用 Python,或者对 Python 工具链有自己的见解,无论您是否使用 Ruff,我都非常希望能听听您的想法。

哪些地方做得好?哪些地方不够好?我们可以提供什么帮助?请联系我们

附注:我们在招聘

我们正在扩充团队——不是盲目扩张,而是审慎进行。 我们的早期团队包括 Maturin 的原作者、Rome 的核心贡献者,以及,呃,Ruff 的作者。我们正在寻找一两位新成员加入,共同构建 Ruff 本身及更多类似 Ruff 的工具。

对我来说,能够全职致力于这些问题是梦想成真。我热爱构建工具,并认为工具开发是一项极具杠杆作用的事业。想象一下,如果能让 Python 生态系统的生产力哪怕提升 1%,这种影响将产生多大的叠加效应?

如果您也有同感,请联系我们。我们在北美和欧洲远程办公。对于这些早期岗位,我们寻找的是能够胜任全新工具和系统设计与实现的团队成员。具备 Rust 经验很重要,有编译器或开发者工具的背景也很有帮助。