多くのプログラマーは若く、「Git」や、それを中心に構築された「GitHub」「GitLab」のような開発者向けサイトが存在しなかった世界を知らない。Linus Torvalds氏が、より良いバージョン管理システム(VCS)を開発せざるを得ないと感じたことに、心から感謝すべきだ。
それ以前に筆者が使っていたのは第1世代のソース管理(SCM)システムで、例えば「Revision Control System」(RCS)などがあるが、とても使いにくかった。その後、1986年にConcurrent Versions System(CVS)が登場し、2000年には「Subversion」(SVN)がリリースされた。同年に登場した「BitKeeper」は、元々オープンソースのVCSで、「Linux」初のSCMだった。
それまでTorvalds氏はLinuxのコードを手作業で管理することに満足していた。しかし、1999年には、Torvalds氏は燃え尽き症候群の一歩手前まで疲れ切っていた、と開発者のLarry McVoy氏は指摘する。何が問題だったのだろう。Torvalds氏を増やすことはできない。同氏には、負荷を分散する適切なツールが必要だった。McVoy氏は、自身のSCMプログラムBitKeeperが解決策になると考えたが、Torvalds氏は懐疑的で、それまでのやり方を続けたいと思っていた。
BitKeeperのジレンマ
2003年になると、状況が大きく変わった。「Linux 2.4」カーネルは出荷が大幅に遅れ、「Linux 2.6」のリリースはさらに遅くなった。そのため、Torvalds氏はついにBitKeeperを使うことにした。
当初はうまく機能していたが、BitKeeperがプロプライエタリープログラムであることが常に悩みの種となっていた。確かに、オープンソースプロジェクトでのみ使用可能な無料版のBitKeeperも提供されていたが、無料版には重大な問題があった。
Linuxカーネルの開発者で、Linux Weekly News(LWN)の編集者であるJonathan Corbet氏は当時、次のように述べている。「Larryは、いいとこ取りをしたかった。フリーソフトウェアの開発を支えたいという思いは本心だったが、そのソフトウェアが自分の特定のビジネス分野を脅かさない限りにおいて、という条件付きだった。BitMover(McVoy氏の会社)は、自社のビジネスモデルが脅かされていると感じるたびにライセンス条項を変更していたため、BitKeeperライセンスは一部で『Larryを怒らせるなライセンス』として知られるようになったほどだ」
著名な開発者で、Oxide Computerの最高技術責任者(CTO)を務めるBryan Cantrill氏は後年、Y Combinatorで次のようにコメントした。「何とも皮肉なことに、LarryはSun(Microsystems)で最も早い時期にOSのオープンソース化を提唱した1人だった。したがって、オープンソースという観点から見ると、BitKeeperの物語はその悲劇的な展開がまるでギリシャ悲劇のようにも見える」
2005年、Linuxカーネル開発者のAndrew Tridgell氏がBitKeeperのプロトコルをリバースエンジニアリングして、オープンソースのBitKeeperクライアントを作成しようとした。McVoy氏はこの一件で堪忍袋の緒が切れ、その後、BitKeeperの無料版の提供を停止した。
しかしTorvalds氏は、BitKeeperとの決別をMcVoy氏のせいにするのは公平ではないと感じていた。Torvalds氏はLinuxカーネルメーリングリスト(LKM)への投稿にこう記している。「BitMoverを責めないでほしい。そういう反応が非常に多いとは思うが。特にLarryは事態の解決に真剣に取り組んでくれたが、決断を下さざるを得ない段階まで事態は進行した。多大な労力を払って2者の仲を取り持つという立場には、もういたくない」
誰に責任があるにせよ、LinuxはSCMを失ってしまった。どうすればよいのか。
Gitの誕生
Torvalds氏の解決策は、BitKeeperに代わる真のオープンソースVCS、すなわちGitを開発することだった。同氏はわずか10日でGitの実際に動作するバージョンを開発し、2005年4月7日に初めてコミットした。
もちろん、同氏はしばらく前からGitについて考えていた。BitKeeperとの対立は、最初のころから火種がくすぶっていたからだ。Torvalds氏は先ごろ、GitHubのインタビューで、自身が直面していた問題について語った。「BitKeeperよりもさらに優れた機能を持ちながら、BitKeeperとは異なる方法で動作するものを作るには、どうすればいいのか」
当時、Torvalds氏は筆者に対し、ソフトウェア構成管理ツールを変えたくはないが、BitKeeperと決別して独自のシステムを開発するしかない、と語った。「名前自体にあまり意味はない」と述べたTorvalds氏は、こんな冗談を言っていた。「発音しやすく、一般的な『UNIX』コマンドで実際に使われていないランダムな3文字の組み合わせなら、何でもいい。『get』の誤った発音であるという事実は、重要かもしれないし、重要ではないかもしれない。あるいは、『stupid』(愚かな)でも、『contemptible』(卑劣な)でも、『despicable』(軽蔑に値する)でも、『simple』(単純な)でもよかった。俗語の辞典から好きなものを選んでくれ。『global information tracker』(グローバル情報トラッカー)はどうだろうか。機嫌が良くて、実際に機能する場合は、天使が歌い、部屋が突然光で満たされる」
天使はともかく、Torvalds氏には当時、Gitが代替ツールとして定着するという確信はなかった。「まだ新しいプロジェクトで、成熟するには時間がかかる。この状況は何年も続くだろう。他のオープンソースのSCMが最終的に十分な能力を示し、Gitは一時的な橋渡し役を立派に果たしたという判断ができれば、話は別だが」