4. Linux の開発方針

(OHP 8)
-------------------------------------
Development Cycle
- Open Development tree
- Open Fast feedback
---------------------------------------

Linux kernel を開発するにあたって、僕は開発過程を公開すること(Open Development tree)を選んだ。最新のソースコードを週に 2 度ほど、Internet 上の anon-ftp サイトに公開しているので、誰でも、僕が使っているのと同じ 最新のソースコードを入手することができる。もちろん、この公開のサイクル はもっと頻繁なこともあるし、もっとまばらなこともある。例えば今週は日本 に来てるので、この一週間は新しいカーネルの公開ができない。

開発過程が公開されているから、C コンパイラを持ってる人なら誰でも、ソー スを入手して僕の持っているのと同じ最新のカーネルを手元で作成できる。必 ずしも常に最新のカーネルを追いかける必要はないが、やろうと思えばそうす ることもできる。カーネルは大部分 C 言語で、一部のドライバ類はアセンブ ラも使って書かれているが、コンパイルするだけならアセンブラの知識は不要 だろう。

開発過程を「公開」していることは、僕のような開発者にとって大きな利点に なっている。なぜなら、新しいカーネルを ftp サイト上に公開すれば、その 日のうちに数十から数百人の人がさまざまな環境でテストして、もし僕が何か 間違いをしでかしていたら、すぐに e-mail で教えてくれるからだ。この結果、 問題はすぐ解決できる。 このような feedback のおかげで、過去数日のあい だにやった修正のどこが問題だったかをすぐに知ることができる。

また、常に最新のソースコードが公開されているから、さまざまな開発者がバ ラバラに開発した何十ものバージョンを誰かが一つに統合するような作業が不 要になるので、そのことも開発速度を上げることに役立っている。

もちろん、カーネルそのものにそれほど関心のない普通のユーザーが常に最新 のカーネルを使う必要はなく、CD-ROM 等に入っているコンパイル済みのカー ネルを使うこともできる。週に 2 回、新しいカーネルを公開しているからと いって、必ずしも最新のカーネルを使わなければならないわけじゃない。でも、 最新のカーネルをテストしてくれれば開発者としては助かるな。

会場からの質問

Q: そんなに多くの人たちが開発に参加してるなら、どうやってドライバ同 士の衝突を避けているのか?

A: 公開で開発している、ということは誰でも常に最新のカーネルを利用でき るということだ。

先に述べたように、Linux ではソースコードの「モジュール化」がすすんでい るので、例えば僕がファイルシステムに何か変更を加えたとしても、それはド ライバの開発者に影響することはあまりない。すなわち、大部分の変更は「ロー カルに」行える、ということだ。カーネルそのものは何万もの部品が集ってで きているので、二人の開発者が同じコードを修正するような事態はまず生じな いだろう。もしそのような事態が起きた場合、どちらのコードを採用するかは 両方のコードを見て僕が決めている。

カーネルは巨大なプログラムで最近だと 35 万行にも達している。最近の肥大 化したアプリケーションプログラムから見ると、35 万行ぐらいではそれほど 大きくないと言われるかも知れないが、35 万もの「複雑な」コードで書かれ たプログラムはあまり無いだろう。

我々開発者は一つの集団を構成している。そのピラミッドのトップに立ってい るのが僕だが、僕以外にもネットワークコードを保守している人、ファイルシ ステムを保守している人、SCSI デバイスを担当している人、などが存在する。 それぞれの担当者の下にも、同様により小さな部分を担当している人が存在し ている。そして、例えばネットワークに関する修正点はネットワークの担当者 のところで集約され、僕に伝えられる。そして僕がそれを元にカーネルを修正 する、というわけだ。

もちろん、このシステムは強制力をもつものではないので、バグを見つけたら 僕に直接送ってもらっても構わない。実際、今までにも、見たことも聞いたこ とも無い人からバグレポートとパッチが届いて、そのパッチをそのままソース コードに組みこんだこともある。この開発者のピラミッドは、誰が何を成した かによって、きわめて動的に変動するもので決して固定したシステムではない。