Yakstは、海外の役立つブログ記事などを人力で翻訳して公開するプロジェクトです。
10ヶ月前投稿 修正あり

LinuxとBitKeeperとGitの関係

Linuxは過去にバージョン管理システムとしてBitKeeperを使用していて、それがGitに置き換えられた経緯について
原文 What are some well-written accounts of the Linux-Bitkeeper-Git story? - Quora (English)
ライセンス Quora license
翻訳者 D98ee74ffe0fafbdc83b23907dda3665 doublemarket


LinuxとBitKeeperとGitの関連について書かれたいい記事ってありますか?」という質問へのOscar Bonilla氏の回答


いい記事は見た事ないけど、どういうことがあったのか簡単に書いてみます。

90年台後半のLinuxプロジェクトは、問題を抱えていました。非常に多くの開発者が関係している一方で、彼らがハッピーになるようないいシステムは存在していませんでした。LinusはCVSについて調査しましたが、最悪という判断を下し、結局tarballとdiffpatchを使っていました。これは彼の取り巻きたちの間ではうまくいきませんでした。なぜなら、多数の開発者から送られてくるパッチをLinusが適用できるような巨大パッチに統合して、コンフリクトを見つけて、そして修正すべきところを開発者に送り返す必要があったからです。巨大パッチを分解して、何が問題でどのパッチが問題なのかを見つけ、他の巨大パッチと一緒にしてもう一度送るという作業。言うまでもなくこれは非常に時間がかかりましたし、Linuxのソースベースは常に更新されていくので、繰り返しやる必要があったわけです。

その頃、Larry McVoyがSun Microsystemsで、(条件付きながら)分散モデルを扱うシステムであるTeamWareに携わっていました。彼は自宅にLinusを連れてきて、何を作っているのか見せました。Linusは、もし彼がそれを作ったら使うよと言ったのです。

さて、Larryはもうそのうちのひとつを作ってしまっていて、SCMのエキスパートが誰かも知っていました。彼はBitKeeperを開発する会社(BitMoverという社名)を始め、どうにか成果物を書きました。Linusはそれを使い始め、カーネルサブシステムのメンテナーの多くが抱えていた痛みを和らげてくれました。しかし、そこには別の問題もありました。

ある程度知られている話ですが、BitKeeperはLarryが色々な人にハックしてもらおうと思ったことから、少々変わった「オープンソース」プロジェクトとして始まりました。オリジナルのBitKeeperはオープンソース開発者にはフリー(無料の意味)で提供されましたが、ひとつ注意事項がありました。それは、ChangeSetsのコメントは全てopenlogging.org(訳注 : リンク切れ)というパブリックなサーバー上に公開されてしまうというものです。この仕組みによって、プライバシーに価値を置く商業的企業は、コメントの公開を避けるためにライセンスを買えたのです。オリジナルのBitKeeperは、ライセンスを買わずに商用利用するためにopenlogging関係のコードを削除しないことという制限付きでソースが添付されていました。言うまでもなく、BitKeeperへの最初のコミットはopenlogging関連コードを削除するというものだったので、Larryはソースの添付をやめてしまったのです。

これは、Linuxコミュニティーのフリーソフトウェアの支持者たちに問題を引き起こしました。オープンソース活動の申し子のようなとてもパブリックなソフトウェアを開発するのに、技術的に優れてはいるけれどフリーソフトウェアではない製品を使っていたわけです。Linusは、Linuxカーネルの開発にBitKeeperを使うのに文句があるなら、もっといい代わりのものを出してこいと何度も言いましたが、誰もそうはしませんでした。

ここで、tridgeとして知られるAndrew Tridgellが登場します。Tridgeはrsync(1)の作者として、あるいはMicrosoft SMBプロトコルをリバースエンジニアリングしてSambaを作った人として評価されていました。2005年に彼はBitKeeperのフリーソフトウェアクローンを作るために、BitKeeperをリバースエンジニアリングし始めました。これは、BitMoverとBitKeeperをLinux上で使っている商用顧客の間に問題を引き起こしました。これについてはしばらく前に記事として書いたので、ここでは詳しくは書かないでおきます。

ここでひとつ言っておきたいのは、Tridgeが世の中には特に何もしていなそうな雰囲気を出しておきながら(オーストラリアでカンファレンスがあり、そこで彼はBitKeeperのTCPポートにtelnetしてhelpと打つのしかしてないと言っていた)、その時彼はBitKeeperをエミュレートするコード群(SourceForgeで今も見られます)を既に書いていたということです。

とにかく、2005年には、どうすべきかたくさんの議論が交わされました。BitMoverはフリーライセンスの削除とBitKeeperのメタデータの暗号化を迫り、フリーソフトウェアの支持者たちは彼らの自由を制限するのにBitKeeperが何を考えているのか気づき始め、Linusは彼には政治的あるいは宗教的な話にしか見えないことに時間が費やされているのを見ていつもイライラしていました。メーリングリストを検索すれば、Linusの見解が見えるはずです。Tridgeに関して、彼は「我々が使えるようなもっといいもの(あるいは同等のもの)をお前たちは作っていない。お前たちは要するに正当な理由なしにBitMoverとの関係を壊している」という立場でした。

LinusとLarryは電話で長い時間話し、BitKeeperはLinuxプロジェクトにはもうぴったりとは言えないと結論付けました。決別の時でした。Linusは代わりを探すのに何日も費やしましたが、彼の要求を満たすものは見つかりませんでした。よさそうなプロジェクト(あるいはLinusの言葉で低脳(訳注 : 原文ではretarded)でないもの)も、Linuxカーネルのような規模のプロジェクトにはスケールしなかったのです。そして、BitKeeperは高速でした。Linuxはパフォーマンスについて妥協したくなかったのです。結局、彼は自分で作ることにしました。カーネル開発の観点から開発したのです。そしてGitが生まれました。私の知っているLinuxとBitKeeperとGitの話はこんなところです。

次の記事
読みやすいREADMEを書く
前の記事
MySQLのメモリー使用量を最適化する設定のベストプラクティス

Feed small 記事フィード