嵐の後のBitkeeper(パート1)

Linus Torvaldsのスケーラビリティと、カーネルパッチを扱うためにBitkeeperというプロプライエタリなソース管理ツールを利用することの是非について、Linuxカーネルメーリングリストで議論が交わされたのは、2年前のことである。

現在、騒ぎが沈静化したことや、Bitkeeperの作者Larry McVoyがプレスリリースの中で、Linus Torvaldsを初めとするカーネルハッカーらがBitkeeperを利用して著しい生産性のアップを達成したと書いたこともあり、フリーソフトウェアハッカーとこのプライエタリなツールの間で何が起きているのか、McVoyに質問をぶつけるには良い機会だと判断した。インタビューの内容は、今回と次回の2回に分けて紹介する。

Q:BitKeeperによってLinus Torvaldsの生産性が2倍以上アップしたとの衝撃的なニュースを伝えたプレスリリースから、およそ1か月になります。他のカーネルハッカーからの反応はどうでしたか?

A:上級開発者は誰も驚きませんでした。先刻承知だったからです。

プレスリリースを出すことになった経緯はこうです。ある人物の雇用を検討していたときに、なぜ弊社で働きたいのかと尋ねました。「カーネルリストを見ていると、BitKeeperを使うようになって明らかにLinusのペースが10倍になったからです」というのが答えでした。うれしい言葉ですが、まさかと思いました。ペースアップはするでしょうが、10倍ですよ。ちょっと大げさではないかと。

上級カーネルハッカーの数人とは面識があるので、意見を聞いてみました。答えてくれたのは、Dave Miller、Jeff Garzik、Greg Kroah-Hartman、Andrew Morton、Linusの各氏です。最初に尋ねたDave Millerは、10倍はありえないが8倍ならと太鼓判を押します。これは面白い。そこでJeff Garzikにも尋ねてみると、「いやぁ、もっと上だろ。10倍だよ、実際」という答えです。Greg Kroah-Hartmanの答えも似ていました。カーネルのデジタル署名サポートの件を話し合うために(ちなみに現在は実装済み)Andrew Morton、Ted T’so、Linusの3人と昼食をとる機会があったので、この話題を振ってみました。Andrewは、Linusの仕事が以前より速くなったことに何か理由があると前から思っていて、BitKeeperがCVSよりずっと優れていることに同意しました。しかし、CVSに移行しただけでも効率は改善されただろう、というのが彼の見解でした。Linusの考えは逆でした。もしCVSに移行していたら、作業がスローダウンしただろうと断言するのです。要するに、Linusにとっては、作業のペースアップはひとえにBitKeeperのおかげということでした。

現在、GregはBitKeeperに切り替えてからの変更の頻度についてレポートをまとめています。BitKeeperの長所について書きたいことがたくさんあるようです。詳しいことは彼に尋ねればわかりますが、覚えているものをいくつか挙げてみます。

  • Linusのツリーを見ることができるので、初期リリースのかなり前でも以前よりずっと簡単に彼の仕事ぶりを追跡できる。彼は、毎日のようにlinus.bkbits.netにプッシュを行っている
  • 単独での開発作業がずっとやりやすくなる。BitKeeperを使ってマージを行い、Linusのツリーに何があるかを追跡できる
  • Linusが自分の変更をマージしてくれたかどうかが、すぐにわかる
  • システム全体は非同期。他の開発者と並行して作業を進められる。同期を行うと、BitKeeperによって作業がマージされる

上級開発者らは、作業が楽になったことを実感していました。生産性が2倍になったという発表はニュースでも何でもありませんでした。2倍どころではないことをよく知っていたので、控え目な数字だと思ったのですね。しかし、こういった数字には異論が出やすいので、変更回数をBitKeeper導入後の2年間とそれ以前の2年間で単純に比較するという無難な方法で、2倍という数字に落ち着きました。計算すると、回数は約2.5倍以上になっています。個人的には、統合されたパッチの数で違いを数値化したいですね。2.5倍をはるかに超える急激な増加を示していることに、誰も異論はないでしょう。Linusは、1年365日、毎日約50件のパッチを処理しています。驚異的な数です。過去にSCO、Sun、SGI、Google、その他のもっと規模の小さい数社の米企業に勤務したことのある私ですが、ソフトウェア業界でこれほど多くの変更を処理している人物は他に知りません。

生産性向上について発表する前に、Linusに相談しました。違いを量的な単位で測るというのは、Gregの案でした。Linusに数値を見せて異論はないかと尋ねると、ないとの答えでした。そこで発表となったわけです。

Q:TorvaldsがBitKeeperを利用すると最初に表明したときと比べて、BitKeeperに対する許容度は変わったでしょうか?

A:ほとんどの人が利用しているので、許容度は高いようですね。最初は、カーネルチームを食い物にするつもりかと疑われました。やりたいことは、今も昔も偽りなく、コミニュティに手を貸すことです。ただでランチを提供すると言うと誰も信じません。「何か裏があるんじゃないか」と。下心はないと説明すればするほど、疑いの声は増すばかりでした。人間の性分ですから、どうしようもありません。正しいことをしていると、引き続き行動で示すほかにありません。Googleの社員だったことのある私は、Googleのモットーである「悪事をなさず」を受け継ぎました。ビジネスを展開するには良い発想ですが、中には怪しむ人もいます。企業は「悪」だという思い込みが世間にはありますが、すべての企業がそうであるわけではありません。Googleは、正しいことをしようとしている、名前のよく知られた企業です。弊社の知名度ははるかに劣りますが、やはり正しいことをしようとしています。正しいことをしながら収益も上げることは可能です。Googleの先例に見習おうとする企業はこれからも現れるでしょう。

あれから数年がたち、弊社がまだ存続してBitKeeperのフリーサポートを提供していることから、疑念の多くは晴れたと思います。LinusがBitKeeperを使い始めて2年以上になりますが、PowerPCユーザは1999年からBitKeeperを使っています。ですから、BitKeeperを利用するカーネル関係者を少なくとも4年間サポートしてきたわけです。MySQLユーザも同じぐらいの期間BitKeeperを利用しているので、弊社がフリーソフトウェアのコミュニティに手を貸していることは明らかなはずです。

弊社に収益力があり、外部の資金が入っていないことは指摘する価値があるでしょう。つまり、カーネルユーザやその他のフリーユーザをサポートするのが良案かどうかを決めるのは、私たち、BitKeeperの雇用者と所有者なのです。正しいことをしているかどうかは、利益を優先する外部の投資家ではなく、私たちが決めます。そして、私たちはフリーソフトウェアのコミュニティに共感しています。

非GPLインフラストラクチャへの取り組みは、これからも常に行われるでしょう。そういった活動で懸念されることはよくわかっているので、BK2CVSゲートウェイを作成しました。BK2CVSを使えば、GPLツールにおいてどのようなヒストリを持っていても関係ありません。エキスポートが毎晩行われ、CVSルートがmaster.kernel.orgにミラー化されるので、データは問題なくフリーで使用できます。

BitKeeper本体のほかに、BitKeeperリポジトリ(LinuxやMySQLなど多数のプロジェクトが含まれる)のフリーのホスティングサービスとしてbkbits.netも提供しています。また、カーネルを作業対象としているユーザなら誰でも利用できるフリーのパブリックサーバ(kernel.bkbits.net)も提供しています。BitKeeperのユーザでなくても利用できます。これだけの量のサービスをフリーで提供していることは、私たちが善意に基づいて活動し、フリーソフトウェア開発者のコミュニティを真剣に手伝おうとしている証拠とならないでしょうか。最初は信じてもらえませんでしたが、支援を続けるうちに信頼を寄せてくれる人の数は増えています。

Q:Linux開発という公共の利益に奉仕することは、プロプライエタリな製品の販売にプラスになっていますか?

A:それはもう間違いなく。BitKeeperによるカーネル管理を目にすると、人はBitKeeperにその力があるなら自分の問題も処理できるだろうと思うのです。私たちにとって、フリーホスティングサービスbkbits.netは市場開拓の強力な武器です。サービスとデータの総量(合計55GBに達する600万のファイル)を目にし、bkbits.netのサポートに年間で1人週に満たない時間しかかからないことを知ると、管理者はほれ込んでしまいますね。誰にとってもいいこと尽くめです。私たちは便利なサービスを提供し、そこから市場開拓の実利を得ています。

公共の利益への奉仕には、別のメリットもあります。新しいリリースをテストするときには、bkbits.netに提供するだけで不具合がすぐにわかります。古いバージョンを使用するユーザが、bkbits.netに数秒おきにアクセスしていますからね。

Linuxカーネルコミュニティやその他のオープンソースプロジェクトの支援には、積極的に取り組んでいます。信じない人もいますが、たとえ利益にならないとしてもやり続けるつもりです。自分が毎日利用している素晴らしいフリーソフトウェアへの恩返しだからです。私たちは、フリーソフトウェアを基盤としてビジネスを展開し、フリーソフトウェアを利用して製品を開発し、フリーソフトウェアコミュニティをビジネスの支えとしています。フリーソフトウェアの恩恵をこうむる企業が、フリーソフトウェアの開発に携わる人々を助ける方法を見出すのは当然のことです。

新しいフリーソフトウェアを追加する方法で恩返しをすればいいとの意見がコミュニティにあることは知っていますが、そのモデルは私たちの製品に向いていないようなので、別の方法を選択したのです。これからもこの方法での恩返しが続けられると、コミュニティの大多数が信じるようになっています。