[Biome博客翻译]宣布 Biome

873 阅读7分钟

原文:biomejs.dev/blog/annouc… 。以下为翻译。

我们很高兴宣布 Biome,web 的工具链

Biome 是 Rome 的官方分支,它将继续 Rome 的遗产。

Biome 是由迄今为止维护 Rome 的同一群人领导和维护的。

关注我们

背景

我想给你一些背景和上下文,这可能有助于你理解核心团队为什么要创建一个新的项目并给它起一个新的名字。如果你对此不感兴趣,可以直接跳到下一节

它是如何开始的

在解释分叉的原因之前,我想给你一些背景和上下文;这将有助于你理解导致这个决定的原因。

当我加入 Rome 项目时,该项目还很年轻,用 TypeScript 编写。过了很长时间,项目经历了许多转变。

Rome 最初在 Meta OSS 的保护下发布并获得许可。Meta 是一个优秀的 OSS 项目孵化器,但有些人并不喜欢它。至少,我印象中他们并不喜欢。

npm 包 rome 属于另一个人,所以当所有权发生变化时,已经使用了很多版本号。团队总是在版本控制上挣扎。版本控制一个软件不应该这么难!

几个月后,项目脱离了 Meta 的 OSS 保护。在六个月内,创始人 Sebastian McKenzie 创建了 Rome Tools Inc. 公司,以继续 Rome 项目,最终实现可持续发展。

我对这个消息感到兴奋,因为我相信 Rome 的使命,所以我决定辞职并加入这个冒险。几周后,我作为全职员工加入了 Rome Tools Inc.,每天的工作就是开发开发者工具。对我来说,这就像梦想成真!

它是如何结束的(或者说它结束了吗?)

并非所有的创业公司都能成功,Rome Tools Inc. 就不是其中的幸运者。最终,所有的员工都被解雇了。

我与 Rome Tools Inc. 的冒险悲剧性地结束了,但幸运的是,我在开发者工具的职业生涯还在继续!几个月后,我全职加入了 Astro Technology Company。这是一个很好的工作地方,我每天都能和一群出色的人一起做我喜欢的事情。我喜欢它!

我仍然被 Rome 的使命所吸引。然而,不仅仅是这样。我喜欢在业余时间研究解析器/编译器。我 Rust 语言,而 Rome 是我可以使用它的完美 OSS 项目。

所以,在我的业余时间,我尽可能地继续为 Rome 做贡献;幸运的是,我仍然有一些权利,允许我发布项目的新版本。尽管与 Rome Tools Inc. 的冒险未能成功,我还是想让项目活下去。

一些新的 OSS 贡献者 加入了这个事业,帮助贡献项目。我并不孤单,这就是 OSS 的好处。你最终会找到喜欢这个项目并想要贡献的人。

在 6 月,我在 JsNation 2023 上做了一个关于 Rome 的演讲

Emanuele Stoppa 在 JsNation 的舞台上

所以,项目仍然活着,但维护它变得越来越困难:

  • 我在 Discord 上没有管理员权限,所以我不能把版主权利委派给其他人;
  • 我无法访问网站的托管平台;
  • 我无法访问任何注册表(npm、VSCode 等);
  • 项目仍然在 Rome Tools Inc. 的 MIT 许可下,这使得从法律角度看起来,归属和贡献似乎有些模糊(公司在哪里?我不知道)。

尝试联系当前的所有者都没有结果。只有一件事我可以做。我们可以做

进入:Biome

我们创建了 Biome。经过核心团队成员和一些朋友的几周讨论,我们认为清空是最好的行动方案。

我们考虑过在新的分支中保留 "rome" 这个名字,但这证明是困难的:

  • Sebastian 已经用 "rome" 这个名字注册了很多东西(GitHub 组织、网站域名、开放集体、npm 组织)。找到正确的组合并不容易;
  • 没有在 Discord 服务器上的适当权限,我们无法委派版主权利。Discord 对于社区建设来说是一个非常重要的资产;
  • 保留名字会导致一些归属于 Rome Tools Inc.,在源代码的法律方面仍然会有些模糊;
  • 我们不知道 "rome" 这个名字是否已经注册;如果结果是已经注册了,我们可能会遇到一些法律问题;
  • "Rome" 有很多历史包袱,如前所述(Meta 和作为创业公司的失败);

鉴于所有这些困难,核心团队决定创建一个新的项目。

"新的总是更好。"

Biome 将拥抱旧 Rome 的同样的哲学和同样的使命。尽管如此,路线图可能会改变,核心团队可能决定专注于使当前的功能更稳定,而不是发布新的功能。

然而,主要的使命仍然存在,Biome 希望成为一个 360° 的工具链;我们最近开始研究转换,这将最终为编译器的基础做好准备。

为什么是 Biome

团队希望创建一个第二个 "Rome",它的第二个版本。所以我们把 "Bis" 和 "Rome" 合并在一起。**Biome""。

我仍然使用 rome 包。我应该怎么做?

rome不再由核心团队维护,所以你不会得到任何新的发布。

  1. 你应该使用 @biomejs/biome 包。注意,Biome 还带有很多新的功能和修复。我们已经为此准备了一篇博客文章

    {
    -  "rome": "12.1.3"
    +  "@biomejs/biome": "1.0.0"
    }
    
  2. 并在你的脚本中更改 CLI 名称:

    {
      "scripts": {
    -    "format": "rome format --write ./src",
    +    "format": "biome format --write ./src"
      }
    }
    
  3. 在你的 rome.json 文件中,更新 $schema 字段的 URL:

    {
    -  "$schema": "https://docs.rome.tools/schemas/12.1.3/schema.json",
    +  "$schema": "https://biomejs.dev/schemas/1.0.0/schema.json"
    }
    
  4. 然后安装新的官方 VSCodeopen VSX 扩展。如果你使用这些扩展,这是一个重要的步骤。

  5. 安装扩展后,打开 settings.json。如果你在那里有一些 Rome 相关的设置,你需要更新它们:

    {
      "[javascript]": {
    -		"editor.defaultFormatter": "rome.rome"
    +		"editor.defaultFormatter": "biomejs.biome"
      },
      "editor.codeActionsOnSave": {
    -    "quickfix.rome": true,
    -    "source.organizeImports.rome": true
    +    "quickfix.biome": true,
    +    "source.organizeImports.biome": true
      }
    }
    

Biome 仍然接受 rome.json 文件作为配置,所以你现在不需要做任何事情。Biome 也接受 biome.json 作为配置文件。

我们最终会把 rome.json 配置文件淘汰掉,换成 biome.json,但 Biome 会在后续的发布中为你做这件事。所以,除非你想要,否则不用担心更新所有的东西。

核心团队

  • Emanuele Stoppa:我,项目的领导 🤓
  • Denis Bezrukov:Denis 已经为项目贡献了很长时间。他对许多工具,如格式化器和解析器,做出了贡献;
  • Victorien Elvinger:Victorien 非常热情,他为 Biome 的 linter 创建了新的规则,并优化了他加入时已经存在的规则;
  • Daiki Nishikawa:Daiki 在 linter 和解析器上工作,添加新的规则,修复现有的规则,改进内部语义模型,并向 JavaScript/TypeScript 解析器添加新的语法;
  • unvalley:unvalley 为 linter 和解析器增加了很多价值。他们处理了一些复杂的规则,例如,特别是关于正则表达式的规则;

特别感谢

  • Strager:他对项目的输入和建设性批评是帮助 Biome 到达这个点的原因;
  • Boshen:自从 Rust 重写以来,他是项目的最大崇拜者之一;他加入 Biome 社区是为了从我们这里学习并尽可能地贡献。他现在领导着一个类似于 Biome 的项目,oxc。去看看吧。
  • Micha:Rome Tools Inc. 的前员工,他现在是项目 Ruff 的全职开发者,他给出了很多好的建议,当我在做正确的决定时,他是一个好的倾听者。