Romeは、混沌の極みであるフロントエンドツールをひとつに纏め上げようという気宇壮大なプロジェクトです。
当初はOSSとして始まり、その後は資金提供を受けて会社を設立し、メンバーは給料をもらってフルタイム開発に従事していました。
さらに元々JavaScriptで書かれていて低速だったのをRustに切り替え、2022年11月には無事Stableまで辿り着くなどなど順風満帆であるように見えました。
しかし、その裏では大きな問題が発生していたようです。
開発は2023年1月あたりで停滞し、さらに一部の主要開発者が相次いで脱退してしまいました。
どうやら資金が尽きて給料を支払えなくなったようです。
このあたりの経緯は、ちょうど同時期に加入したnissy_devさんのRome の core contributor になったに詳しく記載されています。
その後2023/09/03にはRome公式サイトのSSL証明書が有効期限切れになり、10月にはrome.tools自体が消滅するなど、Romeはもはや終わったといっていいでしょう。
というわけでRomeの開発メンバーの一部が新たにRomeのfork、Biomeを立ち上げました。
以下はBiomeのアナウンス記事、Announcing Biomeの紹介です。
Announcing Biome
Webの垂直統合ツールチェーン、Biomeを発表できてうれしく思います。
BiomeはRomeのオフィシャルなforkであり、Romeの後継です。
Biomeの中の人は、これまでRomeを維持してきたメンテナと同じです。
・Github organization
・GitHubリポジトリ
・Discordアカウント
・Twitterアカウント
Background
なぜコアチームが新しいプロジェクトを立ち上げたのか、その背景や状況を解説します。
How it started
フォークした理由を説明する前に、これまでの経緯と背景を説明します。
この決断に至った理由を理解する助けになるでしょう。
私がRomeに参加した当初、プロジェクトはまだまだ未熟で、TypeScriptで書かれていました。
時間の経過とともに、プロジェクトは様々な変遷を経てきました。
Romeは当初MetaによるOSSとしてリリースされました。
Metaは優れたOSSの創造主ですが、それを好まない人も多くいます。
少なくとも私の感じた印象では、彼らは忌避されるべき対象ではありませんでした。
Romeという名前のnpmパッケージは既に別の人が使っていたので、その権利を受け取ったときには既に多くのバージョンが使われていました。
そのため、開発チームはバージョニングにいつも苦労していました。
バージョニングなんて本来苦戦するようなところではないはずなのに。
数か月後、プロジェクトはMetaから離れました。
半年後にSebastian McKenzieはRome Tools Inc.という会社を設立し、Romeを持続可能なプロジェクトにすることを目標としました。
私はすっかりRomeに心酔していたので、このニュースを聞くやいなや仕事を辞めて冒険の旅に出ることを決意しました。
数週間後、私はRome Tools Inc.に正社員として入社しており、開発ツールの開発に取り掛かっていました。
私にとって、夢が実現したかのような瞬間でした。
How it ended (or did it?)
全ての新興企業が必ずしも成功するわけではなく、Rome Tools Inc.もその運命から逃れられませんでした。
結局、全社員が解雇されました。
Rome Tools Inc.での私の冒険は残念ながら終わってしまいましたが、幸いなことに私のキャリアは終わらずに済みました。
数か月後、私はAstro Technology Companyに拾われ、フルタイムで働くことになりました。
素晴らしい職場で、素晴らしいチームメイトたちと共に、好きなことを仕事にできて最高です!
とはいえ、私はまだRomeに心残りがありました。
さらにそれだけではなく、私は暇なときにパーサーやコンパイラに取り組むのが大好きでした。
私はRustが大好きで、そしてRomeはそれを最大に引き出すことのできる完璧なOSSプロジェクトでした。
だから、私は自由時間にはRomeへのコントリビュートを可能な限り続けていました。
幸いなことに、私にはまだRomeの権限を剥奪されていませんでした。
Rome Tools Inc.との冒険は失敗してしまいましたが、Romeプロジェクトそのものは諦めたくありませんでした。
幾人かのコントリビュータが参加して、プロジェクトを手伝ってくれました。
私は孤独ではありませんでした。
これこそがOSSの素晴らしいところであり、プロジェクトが好きで好きで自分も参加したい、そんな人たちを見つけることができるのです。
6月にはRome at JsNation 2023でトークもしました。
さて、Romeプロジェクトはかろうじて生きていましたが、維持することが困難になってきました。
・Discordの管理者権限を持っていないため、権限の委譲ができない。
・Webサイトのホスティングにアクセスできない。
・npm、VSCodeなどのレジストリにアクセスできない。
・Romeプロジェクトは未だRome Tools Inc.の所有であるため、法的に帰属が曖昧である。
オーナーにコンタクトを取ろうとしましたが、接触することができませんでした。
我々にできることは、たったひとつしかありませんでした。
私たちなら、それができます。
Enters: Biome
我々はBiomeを立ち上げました。
コアチームのメンバー同士で何週間も議論し、友人たちと話をした結果、一から出直すことを決意しました。
新しいプロジェクトでも"rome"の名前を残したいと考えてはいましたが、それは難しいことがわかりました。
・既にSebastianが"rome"の名前でGitHubやドメイン、open collectiveなどの名前を取得しているため、正当に引き継ぐことが困難。
・Discordサーバを委譲する権限がない。Discordコミュニティはたいへん重要な資産である。
・この名称はRome Tools Inc.に帰属するため、法的にどうなるかはっきりしない。
・"rome"の名前が商標登録されているかわからないため、法的問題が発生する可能性がある。
・この名は、前述のように多くの負の遺産を背負っている。
これらの状況を鑑み、我々は新しい名をつけることにしました。
“New is always better.”
新しいことは、常に良いことだ。
Biomeは、Romeと同じ哲学、同じ使命を担います。
しかし、ロードマップはこれまでと変わるでしょう。
新しい機能を追加するよりも、現在の機能をより安定化させる方向に進むかもしれません。
Biomeは万能ツールチェーンを目指しています。
最近我々はtransformationに取り組み始めましたが、これは最終的にコンパイラへと進化するでしょう。
Why Biome
なぜBiome?
我々は新たな"Rome"を作り上げたかった。
そこで我々は、"Bis"と"Rome"を融合させました。
"Biome"の誕生です。
I still use the rome package. What should I do?
まだRomeを使っています。どうすればいい?
Romeパッケージは既にメンテナンスされていません。
-
@biomejs/biome
に変更する。
Biomeにはたくさんの新機能とバグの修正が含まれています。
詳しくはblog記事を参照ください。
{
- "rome": "12.1.3"
+ "@biomejs/biome": "1.0.0"
}
- scriptsのCLI名を変更する。
{
"scripts": {
- "format": "rome format --write ./src",
+ "format": "biome format --write ./src"
}
}
-
rome.json
の$schema
を変更する。
{
- "$schema": "https://docs.rome.tools/schemas/12.1.3/schema.json",
+ "$schema": "https://biomejs.dev/schemas/1.0.0/schema.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
を認識するため、rome.json
については何もする必要がありません。
また設定ファイルbiome.json
も受け取ります。
いずれはrome.json
を全てbiome.json
に置き換える予定ですが、その際はBiomeが自動的に作業を行います。
従って手動で何かを行う必要はありません。
The core team
Emanuele Stoppa わたしです。プロジェクトリーダーだよ🤓
Denis Bezrukov Denisは長いことプロジェクトに貢献してきました。フォーマットやパーサなど多くのツールを手掛けています。
Victorien Elvinger Victorienは情熱的なキャラで、Linterにルールを追加したり、既存のルールを最適化したりしています。
Daiki Nishikawa ルールの追加修正、内部セマンティックモデルの改善、JavaScript/TypeScriptパーサーへの文法の追加など。
unvalley Linterとパーサーに貢献し、特に正規表現の複雑なルールに取り組んでいます。
Special thanks
Strager 彼のインプットと適切な指摘により、Biomeはここまで成長することができました。
Boshen Rustへの書き替えなど、このプロジェクト最大の貢献者のひとりです。彼は現在、Biomeと同じようなプロジェクトであるoxcを率いています。
Micha Rome Tools Inc.の元社員で、現在はRuffプロジェクトの開発者。我々の良き相談相手であり、多くのアドバイスをもらいました。
感想
見える、見えるぞ。
ボランティアベースでの開発が行き詰まった結果資金調達して会社を立ち上げるところが見えるぞ。
さて、Romeのnpmパッケージのバージョンがどうこうというところがよくわからなかったので調べてみたところ、どうやら元々のRomeは、全く別の人が開発していた全く別のパッケージだったようです。
バージョン3.0.0ではromeというDatePickerでした。
ところがその次で0.0.23と大幅にバージョンダウンされ、さらに中身も完全に入れ替わったみたいです。
円満譲渡なのか無理矢理奪い取ったかはわかりませんが、これDatePickerだったころのromeを使っていた人にとっては大迷惑だったのでは?
さらにその後も10.0.0が出てきたと思ったら0.0.0に戻ったり0.3.0に進んだりと、極めて意味のわからないバージョニングがされています。
たしかにこれは混乱しますね。
それではBiomeはというと、@biomejs/biomeという新しいnpmパッケージで公開されています。
これは最古のバージョンから既に現在のBiomeであり、バージョンによる問題などは起こらないでしょう。
ちなみにbiomeというパッケージが遥か昔から存在しています。
最終更新が7年前、週間ダウンロード数も1桁であり、当然ながら今回のBiomeとは一切関係のないパッケージですが、何故か2023年8月末あたりから週間ダウンロード数が3桁に跳ね上がっています。
明らかに@biomejs/biome
と間違った奴ですね。
感想をちょっと聞いてみたいですね。