TL;DR:我创办了一家公司 Astral,旨在继续为 Python 生态系统构建高性能开发工具——继续开发 Ruff,并构建更多类似 Ruff 的工具。

我们已完成由 Accel 领投的 400 万美元种子轮融资,Caffeinated Capital、Guillermo Rauch (Vercel)、Solomon Hykes (Docker)、David Cramer (Sentry) 等参投。


我构建 Ruff 是为了验证一个理论:Python 工具可以变得非常非常快。这个理论在最初的原型中得到了验证。但即便如此,我仍然不确定是否会有人关心一个更快的 linter。

过去几个月已经证明,Python 社区确实非常关心——而且是非常关心!自八月以来,Ruff 的每月下载量已突破一百万,星标数达到 12,000。它已被地球上一些最受欢迎和成熟的 Python 项目采用,例如 AirflowFastAPIPandasSciPy——以及 AmazonHugging FaceLangChainMicrosoftMozillaNetflix 等公司,以及更多

Ruff 的增长甚至超出了最雄心勃勃的预期。

5,00010,00015,000GitHub Starsfor selected projectsRuffPyreisortMypyPyrightPyflakesFlake8Prospector20152020

星标可能是一个虚荣指标,但作为衡量兴奋度的指标……Ruff 令人兴奋。

除了数字之外,Ruff 周围的积极氛围也一直令我惊叹。它在每一次互动、每一次对话中都闪耀着光芒。我感到非常幸运,能够从事一项与用户产生如此强烈共鸣的工作,因此感谢所有帮助 Ruff 成就今天的贡献者和用户

作为一名工程师,我深知采用新工具是一个重大决策,具有广泛而长期的影响。那些聪明、严谨的人们愿意在 Ruff 开发的早期阶段就采用这个 0.1 版本之前的项目,这为 Ruff 的成长和繁荣提供了所需的氧气。许多成熟的项目和公司现在每天都依赖 Ruff 来编写代码。我将这视为我最大的动力来源,也是我最重要的责任。感谢您的信任。我不会让您失望的。

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

Astral 的存在就是为了抓住这个机会。

介绍 Astral

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

当用户第一次尝试 Ruff 时,他们经常形容这是一种难以置信的感觉。Astral 试图将这种感觉带到工具链的更多部分。

我们构建的一些工具将是 Ruff 的自然扩展(例如,一个自动格式化工具);另一些则会偏离静态分析的主题。但我们的北极星目标非常简单:通过构建人们喜爱的工具——那些感觉快速、健壮、直观且集成的工具——来提高 Python 生态系统的生产力。

为了实现我们的目标,我们已完成由 Accel 领投的 400 万美元种子轮融资,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,我都非常乐意听取您的意见。

什么做得好?什么做得不好?我们能提供什么帮助?联系我们

P.S. 我们正在招聘

我们正在扩大团队——不是快速扩张,而是深思熟虑。我们的早期团队包括 Maturin 的原作者、Rome 的核心贡献者之一,以及……嗯,Ruff 的作者。我们正在机会性地寻找一到两名新团队成员,以帮助构建 Ruff 本身和更多类似 Ruff 的工具。

对我来说,能全职从事这类问题是梦想成真。我热爱构建工具,我认为工具开发是一项极具杠杆效应的工作。如果您能让 Python 生态系统提高哪怕 1% 的生产力,想象一下这种影响会如何倍增?

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