mae : 2002/6/5

mae :
2002/6/5 (15:37)
contents :
2002/6/5 (15:37)
目 次
第 2 版の出版にあたって
謝 辞
はじめに
v
vii
ix
1 最高にかっこいい年
1
2 新しい GNU
11
3 ちょっとした反逆
4 因数 X
35
67
5 改良の積み重ね
87
6 たくさんの配布パッケージ
7 Linus 2.0
8 UCB から学んだこと
105
129
147
9 コードの芸術
171
10 シリコンバレーの実情
11 mozilla.party
197
221
12 普及への足がかり
249
13 配布パッケージと IPO
267
14 オープンソースと商売の関係
15 KDE vs. GNOME
16 ベンチマークという嘘
287
305
325
17 明日の中心地
349
18 マーケットを越えて
367
終 章
391
索 引
401
監訳者後書き
415
iii
chap03 :
2002/6/5 (15:37)
rebel code
CHAPTER 3
ちょっとした反逆
Linus が Unix に出会った 1991 年の秋には,数年前に始まっていた Richard
Stallman の素晴らしい GNU プロジェクトは完成に近づいていた。いまだ欠けて
いる,最後に残った,中核要素であるカーネル(OS の中心部分)は,GNU Hurd
(Stallman の OS の心臓部)として開発中であった。Stallman にとって,この遅
れは遺感ではあったが,大して問題ではなかった。いまや,彼のフリーの Unix 系
OS のより多くの要素が利用可能であり,ジクソーパズルの残りの 1 枚ははめこま
れつつあった。しかし,GNU Hurd が完成するまで数年待って,というのではな
く,いますぐに Unix クローンをと思っている Linus にとっては,このことは何
の慰めにもならなかった。Unix を学べば学ぶだけ,Linus と Lars Wirzenius は
どんどん Unix の世界にはまっていったのである。
Wirzenius は,この新しい世界の探検で,Linus と一緒に経験した興奮を思い
出す。「ある秋学期,来る日も来る日も,僕らはある課程で出された課題の相談を
していました。このとき,彼と,ある課題を,できるだけエレガントで,できるだ
け最短の手段で解くという,ちょっとした競争をしたことがある」
。いわゆるプロ
グラミングコンテストである。
しかし,当時,ヘルシンキ大学で Unix が動く計算機がサポートしていたのは
たった 16 名の利用者だけだったので,彼らは Unix を使う順番を待つ間にどんど
んとフラストレーションがたまり,絶望を感じ,
「当時,僕らは自分たちで Unix を
実際に書く必要があると思うって相談したことがある。商用のものは本当に高価
だったからね。しかし,これはジョークだったよ。特に僕からしてみればね。僕
はまったくもって Linus ほど優れたプログラマではなかったし,第 1 に『今週,僕
は OS を作るよ』といって決めるほど話は簡単ではないからね」と語っている。し
かし,この冗談は,彼らが想像していたよりも,真実に近いものだったことが示さ
35
chap03 :
2002/6/5 (15:37)
ソースコードの反逆
れている。
運の良いことに,Linus の Unix に対する興味と,Linus がこの秋に勉強したこ
とが,彼に Unix を修得する手段を与えた。「教科書は『Operating Systems: Design
and Implementation』∗1 だった」と Linus は思い出す。この本は,珍しいことに,
実例としてソフトウェアが付属していた。この実例ソフトウェアは MINIX と呼
ばれ,学生がソースコードを調べることで OS がどのように動作するかを修得で
きるように書かれていた。Linus は,この MINIX が本質的には PC 上で動作す
る Unix 系の OS 相当であることに気がついた。このことが,PC の Unix カーネ
ルである Linux の構築の足がかりにあたるものを彼に与え,さらに,多くのテク
ニックと,多くの Linux の開発の歴史すらの前兆にあたるとは,当時の彼は知る
よしもなかった。
MINIX は Andrew Tanenbaum によって書かれた。1984 年に Richard Stallman がコンパイラを探していたときに,Stallman の依頼を断り,Stallman が GCC
が書き始める原因を作った,あの Andrew Tanenbaum である。始まりは不幸
だったが,Stallman はのちに Tanenbaum に,GNU OS を完成するために欠け
ているカーネルに MINIX を使うことができるという話を 2,3 度持ちかけてきた,
「しかし,彼はあらゆる条件を準備していた。これはどう
と Tanenbaum は言う。
だ,あれはどうだってね。私は『まあ,まあ(落ちついてくれ)
』と言ったんだ。彼
は,ある意味で,うるさい奴だった。彼の話は本当に私の興味を引くことができな
かったんだ」
Stallman にとってすごく昔の出来事だから,この件に関する記憶はないと彼は
言うが,議論は起こり得たことを認めている。
Tanenbaum が Stallman の依頼に応じていたら,ソフトウェアの歴史はまった
く変わっていただろう。Linus は,自分のための Unix を探してまわっていたと
き,
「例えば,MINIX を流用するなどによって,GNU カーネルがすでに用意され
ていたら,わざわざ自分の Linux プロジェクトを始めることはありませんでした」
と話す。しかし,Tanenbaum はこれを拒否し,彼の MINIX は,Linux がつぼみ
のうちに摘み取られることを回避し,のちに Linux が育ち,開花するのを助ける
注 1 (邦訳)
「オペレーティングシステム:設計と理論および MINIX による実装」
(原著第 2
版の翻訳)今泉貴史監修,千輝順子訳, ピアソン・エデュケーション, 1998 年 5 月。
36
chap03 :
2002/6/5 (15:37)
Chapter 3 ちょっとした反逆
という,重要な役割を果たしたのである。
Tanenbaum は,MIT で学部生として研究し,次に UCB(University of California at Berkeley,カリフォルニア大学バークレー校)で大学院生として研究し,
1971 年にアムステルダム自由大学(Free University of Amsterdam)の計算機
科学部に奉職し,1980 年から教授を務めている。
Unix が最初に創られてから 10 年後の 1979 年には,AT&T はバージョン 7 を
発表した。このバージョン 7 はいくつかの理由で有名である。例えば,バージョ
ン 7 は Intel の 8086 に移植(利用できるように翻訳)された最初の Unix であっ
た。8086 は,のちに最初の IBM PC に使われた 8088 をわずかに強力にしたもの
である。Xenix と呼ばれていた,この 8086 版の Unix は 2 つの企業によるジョイ
ントプロジェクトによるものだった。1 社は Santa Cruz Operation で,現在で
は SCO という名前で知られている(SCO は一時は Unix の所有者であった)
。も
う 1 社は Microsoft だった。今日では記憶している者はわずかだが,Microsoft
は MS-DOS を発売した 1981 年の 1 年前にすでに PC 版の Unix を発売してい
た。いくら控えめに言っても,大した人気製品にはならなかったこの Xenix の存
在は,Linux を核とした OS による Microsoft への現在の挑戦を興味深いものに
している。
バージョン 6 からのもう 1 つの意義深い変更に,Tanenbaum は,もっと心を
動かされていた。「バージョン 7 の使用許諾書には,はっきりとソースコードを学
生に利用可能にすることを禁止すると書かれていた」と Tanenbaum は思い出す。
「終止符,無,無し,0」
。バージョン 7 は,商用ソフトウェアのブラックボックスの
内側にある Unix の象徴された終結を表していた。長い間,学生ハッカーの究極
の OS であった Unix にとっては,嘆かわしい結末であった。
教育的観点からすれば,Unix のソースコードに関する議論の禁止は納得できな
いものであった。「1979 年から 1984 年の間,私は実践的に Unix を教授すること
をまったくやめ,理論の講義に戻ったんだ」と Tanenbaum は言う。学生が利用
「あらゆる AT&T コード
できる何か同等のものを準備するたった 1 つの手段は,
から独立した,自分のコードによって,自分で Unix 互換の機能を持ち,まったく
同じように動く OS を書くことだ」と彼は気がついた。
Tanenbaum は,ちょうど Stallman が GNU プロジェクトを開始した 1984 年
に MINIX の開発を始めたのだが,Tanenbaum は開始時から MINIX を Unix 互
換にすることを決めていた。Tanenbaum の言葉を借りれば,
「私が MINIX をい
37
chap03 :
2002/6/5 (15:37)
ソースコードの反逆
じっている間は MINIX を正しく設計しよう」と決めていたのだ。Stallman の手
法との対照は興味深い。Stallman の手法では,彼がどのように書いたということ
よりは,彼が書いたものがフリーで入手可能であるということが重要であった。
Tanenbaum がすぐに,
「一般にマイクロカーネルの話が出てくるはるかに前から
私はマイクロカーネルを作ることを決心していた」と指摘するが,この文脈での
Tanenbaum の「正しく設計する」という言葉は,ある程度,マイクロカーネルを
使うことを意味していた。実際,
「MINIX は最初のマイクロカーネルだったよう
に思う」と彼は言う。
結果として,
「基本のカーネルはとてもとても単純である」
。これは MINIX を完
遂することが簡単だという意味ではない。
「
(MINIX が動くようにするためには)莫
大な時間を要した。MINIX のコードを書くのは楽ではなかった」と Tanenbaum
は言う。彼は家で夜 MINIX を書いていた。
新しい OS を書くのは難しいことである。Stallman が利用できる既存のマイク
ロカーネルを探した理由の 1 つはここにある。
「自分があまり十分に理解してい
ない,風変わりなハードウェア上のカーネルをデバッグすることは,とても嫌な
ことだ。私はプロジェクトを投げ出そうとしたことが何度もあった。単純に自分
で見つけることのできなかったバグがたくさんあった」と Tanenbaum は思い出
す。この難しさは,彼が使っていたハードウェアの,ドキュメントにない機能と,
いくつかのハードウェアの温度に依存するという奇妙なバグに原因の一部があっ
た。Tanenbaum の学生によってこの問題を指摘されなければ,彼は,最終的にす
べての努力を断念していただろう。
2 年間の努力の結果,1986 年,MINIX はほかの人々に使ってもらう準備ができ
た。「私はインターネット上に MINIX の開発を行っていると書いた文書を投稿し,
これを手伝ってくれる数名を得た」。Tanenbaum の OS を学生たちに解説する
ために書いた書籍と,一緒に発表されたソフトウェアを扱うための新しい Usenet
ニュースグループを彼が作成したとき,事態はまったく変わった。「MINIX の書
籍とソフトウェアは 1987 年に同時に発表された」と Tanenbaum は思い出す。
「当時,ニュースグループは始まって,とんでもないことになっていた。1 か月で
40,000 名もの参加があった。すくなくとも,現在の Linux に対するものと同じよ
うな熱狂ぶりだった」と彼は言う。
「OS はどのように動くかということを,学生に単純で率直な実例で解説するた
めの」私的なプロジェクトとして始まったものが,Tanenbaum の言葉を借りれ
38
chap03 :
2002/6/5 (15:37)
Chapter 3 ちょっとした反逆
ば,もっと大きくて,計算機コミュニティの中で今まで思いもよらなかった何かを
開発していった。
MINIX はすぐに成功を収めた,と Tanenbaum は言う。「MINIX は PC のた
めのソースコード付きの Unix であり,最小限のハードウェアだけを必要とし,ど
のように動くかを解説する書籍と一緒に販売されていた。いままでにそんなこと
を成し遂げた者はいなかった。MINIX はフリーではなかったが,だいたい 59∼69
ドルくらいだった。14 枚程度の FD を必要としたので,ほとんど製造コスト程度
だっただろう」
ハッカーコミュニティがそんな気軽さで MINIX を取り上げたのには,もう 1 つ
の理由があった。「私が 10,000 回,
『これは教育のための OS である』と言ったに
もかかわらず,多くの人は,彼らの(プログラミングの)懇願者たちに対する回答
としてしかそれを見ていなかった」。
「初めから,ニュースグループで,私は 1 日に 200 もの投稿を受け取っていて,
さらに,1 日に 200 通もの『これが欲しい,あれが必要だ』という調整をリクエス
トする電子メールも受け取った」と Tanenbaum は語る。
Tanenbaum は,彼らのリクエストを受け入れることを拒否した。「私は OS の
コードがどんどん難しく,どんどん大きくなっていくことを恐れていた」と彼は言
う。
「彼らのリクエストで膨らんだ OS は,私が学生のために欲しがっていた,こ
の最小限のハードウェア上で稼働するものではなかったし,解説するには難しす
ぎた。私は,付録に 10,000 ページものコードリストが掲載された書籍など欲しく
なかった」
しかし,Tanenbaum はいくつかの修正を行った。「基本的な判断基準は,多く
の要望があって,実行するのに適度に単純で,OS の構造を極端に台無しにしない
ものであれば,修正を行い,逆に,要求がわずかだったり,本当に困難なものだっ
たり,あるいは OS の構造を根本的に変更するものだったりすれば,修正は行わな
いというものだった」
結果として,多くの利用者が望んでいたよりも,もっとゆっくりとしたペースで
はあったとしても MINIX は発展していった。
「まるまる新しいものの集まりだっ
「授業の関係で半期(6 か月)ごとに,新しい改良を行
た」と Tanenbaum は言う。
う必要があるという意味では,スケジュールは決まっていた。
『これには,新しいバージョンに恥じぬ,新しい特徴がいろいろある。安定して
いるし,インターネット上でたくさんの人にテストしてもらっている。これは実
39
chap03 :
2002/6/5 (15:37)
ソースコードの反逆
用バージョンだ』と私が発言したこともある。当時は,新バージョンを FD に記録
することは価値のあることだったんだ」。また,MINIX はもともとの PC で使わ
れていた 8088 を除く,Intel の 386 などの CPU に移植された。
386 CPU の到来と,386 を使ったマシンのゆっくりとした価格の下落は,Linus
に開発の鍵を示した。
「386 は,いままでのどの CPU よりもずいぶん良いものだっ
「僕は,Tanenbaum 教授の書籍
た」と Linus はのちに思い出している。さらに,
から PC 版の Unix を入手できることを知った。僕が実際に行き詰まって,PC を
手に入れたときのことだった」と Linus は言う。いままでだったら,PC を手に入
れることは彼にとってはどうしても気の進まないことだったのだが。
Linus が幸運だったのは,フィンランドの大学教育体系は奨学金の制度があっ
「フィンランド政府は学生に奨学金を支給したり,また
たことだ。Wirzenius は,
学生が銀行から借りた学生ローンの返済も行うんだ。この奨学金は,生活費のほ
かに勉強のためのものの購入にも使えるんだ。Linus は学生ローンが受けられる
ように頑張り,また母親と一緒に暮らすことで生活費を浮かして,学生ローンを計
算機の購入のために使うことができるようにしたんだ」と言う。この借金は 1992
年 11 月に完済されている。
Linus は,先の資金に「クリスマスの小遣い」を付け足して PC の購入資金を
調達した。Linus は,新年の最初に店が開く日,1991 年 1 月 5 日に PC を買いに
行った。1996 年の取材時に,彼は当時購入したマシンの仕様をまだ記憶していた。
(387 数値演算)コプロセッサは無し,40M バ
「386,DX33,RAM は 4M バイト,
イトの HD(ハードディスク)
」
。この仕様は今日の標準からすれば,あまりに貧弱
に思われるが,Linus が「それほど大きくなかった」と言っている HD を除けば,
残りの仕様は当時としては比較的上等だった,特に MINIX を動かすためのもの
としては。
『Linux News』に掲載された,最初の Linus への取材記事「Linux コミュニティ
の活動概要」の中で,Linus は次に何をしたかを「1991 年 1 月 5 日に自分のマシ
ンを手に入れた後,MINIX のディスクが届くまでの数か月間,僕は,このマシン
で DOS を動かさなければならなかったんだ」と語っている。この取材記事は,最
初 Wirzenius によってまとめられ,1992 年の秋から 6 か月間続いた。Linus は変
わった暇潰しをした。「1∼2 月は 30%から 70%の時間を『Prince of Persia』とい
う PC ゲームで遊んで過ごし,毎日マシンの機能などを理解するのに使ったんだ」
振り返ってみれば,Linux を書く前の 2 か月もの間,Linus の活動の多くが
40
chap03 :
2002/6/5 (15:37)
Chapter 3 ちょっとした反逆
「Prince of Persia」をして遊ぶことであったことは非常に興味深い。この「Prince
of Persia」が「Best Computer Game(一番面白い)」,
「Action Game of the Year
(今年の一番)」,
「Game of the Decade(ここ 10 年で最高)」などの称賛を受けた
ゲームであったとしてもだ。
理由が何であれ,悪の Grand Vizier Jaffar の手先と戦った Sultan 城のダン
ジョンの,ある意味ひどく凝ったグラフィックによるブロックの積木の山の中で,
Linus は夢中で遊んでいるばかりではなかった。Linus の計算によれば,この期
間の 3 分の 1 を,例によって徹底的に「マシンの機能を理解するために」使ったの
である。
Wirzenius が言う。「当時 Linus は PC の MS-DOS のためのプログラミング
ツールに取り組み始めていたんだ。ある時点では,彼はアセンブリ言語でのプロ
グラミングのために,アセンブラを使っていました」
。ちょうど Linus が昔,祖父
の VIC-20 で行っていたように。アセンブリ言語でのプログラミングの長所は,
プログラムの実行速度の速さと,ハードウェアの直接制御ができることである。
Linus がアセンブリ言語を使った理由は,たぶんハッカーの優れた能力を示すた
めではなく,このように 386 CPU を探検できるアセンブリ言語の特徴からだった
であろう。彼は,10 代の早いうちからアセンブリ言語でプログラミングしていた
ので,疑う余地は何もなかった。
Wirzenius は,アセンブリ言語で書かれた,当時の DOS プログラムの 1 つのこ
とを思い出す。
「Linus が文字列の長さを計算するだけのサブルーチンを実装し
た短いコードのことを自慢していたのを覚えているよ。それは難しい仕事ではな
かったし,実際,彼は自分のためだけに書いていたけど,とても満足していたよう
だった」
しかし,Wirzenius は 1998 年の Linux Expo での発表の中で,
「Linus が何か
を学ぼうと決心したときには,本当にすぐに勉強を始めている」と話した。最初の
段階が大したことないからといって,この状態のままで終わるよう運命づけられ
ていたのではなかった。彼の次のプログラムは,すでに,最初の時期のサブルーチ
ンよりもだいぶ洗練されていた。386 の中心機能の 1 つである「タスク切替」を詳
細に研究していた。
Intel 386 CPU には,複数のタスク(仕事)あるいは利用者を,複数回(素早く次
から次に移動することで)処理することができるタスク切替の能力があった。タ
スク切替は,Unix の中心能力のうちの 1 つである多重タスクの心臓部分に存在す
41
chap03 :
2002/6/5 (15:37)
ソースコードの反逆
る。Linus の実験はいつのまにか Unix 系の OS のカーネルを作成するという方
向に動いていたということを,当時の彼は気づいていなかったかもしれない。
Linus は,386 のこの分野での最初の実験を次のように述べている。「僕は,タ
スク交換の機能をテストしていたんだ。僕が行ったのは,単に,画面に向かって
文字を書き出す 2 つのプロセス(処理)を作り,タスク切替を行うタイマを準備す
る。1 つのプロセスは『A』と書き,もう 1 つは『B』と書く。このとき,画面には
『AAAABBBB』というように表示される」
。のちに,Linus はこのタスク交換コー
ドのことを「僕は本当にあれが自慢だったんだ」と書いている。ただし,これはま
だ,Unix 互換などとはもちろんのこと,とても OS のカーネルとも言うことがで
きなかった。しかし,Linus は次の段階に,すくなくとも何が可能であるかを認識
するところまでは前進していた。最後の将来への跳躍は MINIX 登場の後だった。
MINIX の発表時に設置されたニュースグループ comp.os.minix への彼の最
初の投稿に,歴史的瞬間が記録されている。Linus が「僕は当時たくさんのニュー
スグループを読んでいた」と言うように,彼はたぶん 1991 年 3 月 29 日金曜日の
すこし前から comp.os.minix を読んでいて,最初に投稿するための勇気を奮い
起こしていたのだ。Linus の投稿は次のように始まり,
皆さん,こんにちは。
1 週間前から MINIX を使っていて,386-MINIX(結構いいですね)にアップ
グレードし,次に当然のように MINIX 版の GCC をダウンロードしました。こ
れらは動くことは動くのですが,でも最適化機能は駄目で,
『floating point
stack exceeded(浮動小数点スタックがあふれました)』とか何とかいうエ
ラーメッセージが返ってきます。これは普通ですか。
最後に,変わった署名が付随する。
AdvTHANKSance(よろしくね), Linus Torvalds
[email protected]
この投稿からいくつかの興味深い点が読み取れる。第 1 に,Linus はすでに
386-MINIX をインストールしている。386-MINIX は,もともとの MINIX コー
42
chap03 :
2002/6/5 (15:37)
Chapter 3 ちょっとした反逆
ドへの一連のパッチ(修正コード)で,これは「MINIX を 386 上で本当に利用可
能にするためのもので,もともとの MINIX は 16-bit だが,これによって実際に
32-bit の機能を利用できるようになる」と Linus に述べている。これらのパッチ
はオーストラリア人の Bruce Evans によって書かれたものをまとめたものであ
る。彼は,これらのパッチが受け入れられるようにするために戦う必要があった
という。Tanenbaum は,彼の教育のための OS を拡張するという話には非常に
保守的であった。すぐに Evans は Linus が Linux を書くのに手を貸してくれた
り,アドバイスをくれる最初の 1 人になった。
Linus がすでに C コンパイラの GCC を使っていたということは,彼が C 言語
で書いていた,あるいは書こうとしていたということがわかる。C 言語はプロの
プログラマに広く使われているプログラミング言語であり,アセンブラのように,
かなりのスキルを要求するものである。これらの C 言語プログラムは,先の単純
なアセンブリ言語での実験と結び付き,ゆくゆくは Linux の基礎になった。
Linus の comp.os.MINIX への最初の投稿は興味深いものだったが,2 回目のも
のは異常だった。2 回目は,MINIX を使い始めて 1 週間だった日の 2 日後の 1991
年 4 月 1 日に,386-MINIX に関する問題を抱えた人からの丁寧な質問に対して,
Linus は,自分がまるで MINIX(魔法)使いか何かであるかのように,この種の
質問はごくごくつまらない,ほとんど無礼なものだと,投稿している。彼はこう書
いた。
RTFSC(Read the F∗∗ing Source Code :-)
ソースコードを読んでよ。
この質問は何度も繰り返されているし,解決法は明らかでしょう。
でも,次のことを書き足して,この無愛想を和らげている。
(まあ加減して読んでね。確かに僕もしばらく困ったんだけどね:-)。
最初の部分はたぶん冗談だったにしても,うぬぼれた自信の調子は,独特のも
のである。Linus は,人前では自分を謙遜したりして,明らかなごう慢さを和らげ
ている。
時々人々を困惑させるこの振る舞いの説明は難しいことではない。ほかの多く
43
chap03 :
2002/6/5 (15:37)
ソースコードの反逆
の優れた識者と同じように,若い Linus には自信が不足していた。例えば,大学で
「僕は本当に恥ずかしがり屋だったんだ。授業で発表などしたくなかった。ただの
学生としてでさえ,手を挙げて発言するのが嫌だったんだ」と彼は話す。 ひょっ
としたら,comp.os.minix へたった 2 回しか投稿をしたことがない MINIX の初
心者として,Linus はわざと荒っぽい返事で振る舞ったのかもしれない。理由が
何であれ,ここに露呈された振る舞いが見られるのは興味深いことである。この
振る舞いは,各種の微妙に違うスタイルで,いくつもの公開議論の場で繰り返され
たが,時を経るにつれ,減ってきた。要するに,Linux が明らかに成功していくに
つれ,Linus は自信を付けてきたのである。
Linus の MINIX のニュースグループへの 3 回目の投稿は,4 月 1 日の爆発の 1
週間後に書かれた MINIX 利用者の質問に対する回答であり,節度のあるものだっ
た。「どちらかというと,僕は 386-MINIX への新参者です」と彼は謙遜して語り
始める。
「だけど,いくつかのものを移植しようとしてきたし,すこしコメントも
ある」
Linus によるニュースグループへの次の投稿が約 3 か月後だったのは,大学で
の学業のためであった。Wirzenius が思い出して語る。
「Linus のプログラミン
グプロジェクトに対する誘惑が膨らんでいくにもかかわらず,彼は,単位を取得す
るための時間を大学で費した」。これは彼の教授陣が何かするからという理由で
はない。
「大学自体は単位を取らなくても何も処分はしない。卒業したければ,単
に,のちに必要とされる単位を取らなければならないだけなんだ」と Wirzenius
は説明する。
Linus は,自分の PC を購入するために申し込んだ学生ローンのために試験に
パスする必要があった。Wirzenius は特に次のように言う。
「あの年の(学術的
な)功績が十分に認められなければ,次の年に政府からの支援を受けることができ
なくなってしまう。だいたい 2 年くらいの間に十分な功績が認められなければ,
ローンを返し始めなければならない。働いていなければ,それはちょっとした金
額なんだ」
幸運にも,Linus には必須の試験にパスするだけの生まれつきの能力があった
し,彼はまたさらにまじめにハックを続ける時間を手に入れた。MINIX を調べ始
めたのと同時期の 4 月に,Linus は実験のために作成した,単にタスク切替だけ
を行う例のコード(あるプロセスは「A」と画面に書き,もう 1 つは「B」と書く例
のコード)を端末エミュレータに書き直すことにした。端末エミュレータは,彼
44
chap03 :
2002/6/5 (15:37)
Chapter 3 ちょっとした反逆
の寝室にある,モデムが接続された PC で,ヘルシンキ大学のサーバの Usenet の
ニュースグループを読み書きできるようにするために必要だった。
Linus によれば,このときの作業はびっくりするぐらい単純であった。「僕は,
端末エミュレータのパッケージとして動くようにこれら 2 つのプロセスを変更し
た。1 つのプロセスは,キーボードからデータを読み込んでモデムに渡し,もう 1
つのプロセスは,モデムからデータを読み込んで画面に表示する」
。これを行うた
めに,彼はいくつかのドライバを書く必要があった。ドライバとは,キーボード,
画面などの各種装置間と,ほとんどの処理を実行する中心のソフトウェアとの間
の取り次ぎとして働く,小型のソフトウェアのことである。
Linus が 1992 年 10 月の取材で「Linux はある程度の間,端末エミュレータの
段階でとどまっていた。僕は MINIX で遊んでいたし,ヘルシンキ大学のサーバ
のニュースを読み書きするのに,この Linux の原型を使っていたんだ」と語って
いる。しかし,あとで,彼はこれをもうすこし拡張することにした。「いろいろと
ダウンロードする機能が欲しかった」と彼は言う。これは,彼のタスク切替コード
を修正したソフトウェアが HD ドライブとデータを受け渡しするということであ
る。「HD ドライバを書く必要があった」と Linus は思い出す。理論的には,この
作戦は簡単に終わるはずだった。しかし,Tanenbaum が MINIX を書いていた
ときと同じように「たちの悪いドキュメント(資料)に起因する問題が生じ始めて
いた」と Linus はのちに語っている。
Linus は,1992 年の Usenet への投稿の中で,
「PC は,現在,世界中で最も使わ
れているアーキテクチャだろうが,PC に関するドキュメントがほかよりも良いと
いう意味ではない」と書いている。この危機に,Linus の使っていたハードウェア
のいくつかの隠し機能を示すことで,Linus を支援してくれたのは,MINIX ハッ
カーの Bruce Evans であった。「彼は本当に,僕が最もよく相談した 1 人だった」
と Linus は語る。
HD ドライバができあがったとき,次は,利用できる HD 上のファイルに読み
書きする手段が必要だった。これには,HD 上にデータをどのように構成するか
という規則に相当するファイルシステムと呼ばれるものが必要だった。Linus は
腰を落ち着けて,彼がここ数か月間使ってきた MINIX のファイルシステムに基
づいて,同じものを書き上げた。これは,
「ファイルをアップロードするために,
ファイルの読み書きができるようにするためのものだった」と彼は言う。
「僕はファイルシステムを作り始めたとき,すでにテストできるだけのファイ
45
chap03 :
2002/6/5 (15:37)
ソースコードの反逆
ルレイアウトを持っていたという,単純に実用上の理由から MINIX(のファイル
システム)を利用した」と彼は『Linux News』の取材記事で言っている。「ファイ
ルレイアウト」とは,彼の PC の HD 上にすでに存在する MINIX 環境のことで
ある。彼は,新しいファイルシステムのコードをこれらを読み書きしようとする
ことで,テストを行うことができたのである。Linus は,
「単純に実用上の理由か
ら」MINIX のファイルシステムを使っていたのだろうが,Tanenbaum の書籍の
MINIX のソースコードから学べることは明らかに,この手法を使ったことによる
もう 1 つの恩恵であった。
Linus が 1992 年の投稿で振り返っているように,これで「最もたちが悪い部分
は動き始めた」ので,Linus が自分のシステムに基本機能を追加すればするだけ,
作業は簡単になっていった。
「コーディングは相変わらず難しかったが,僕には
いくつかの工夫があったし,デバッグはもっと簡単だった。僕はこの段階で C 言
語を使い始めたんだけど,これによって開発速度は確実に上がった。また,僕が,
『MINIX よりも優れた MINIX』を作るという誇大妄想的構想にまじめに取り組み
始めたということでもある」
Linus は,MINIX を使って仕事の基礎を築いていたが,その基礎はのちに Linux
に生まれ変わった。しかし,この手段には問題があった。「僕は自分のためだけの
ニュースリーダーでニュースを読み書きするためだけにマシンを再起動する必要
があり,これはとても面倒だった」と思い出す。これは,第 1 に時間がかかるし,
また Linus が MINIX の残りの能力を破棄したことを意味する。「よし,僕の『特
製のニュースリーダー』の中で MINIX のすべての機能を利用できるようにしよ
うと決心したんだ。この展開は本当に革新的だった。ある時点で僕は,これが,
MINIX(の必要性)の代わりに,潜在的に役に立つものに,だいぶ近づいているこ
とに気がついたんだ」と Linus は続ける。
彼のニュースリーダーは「潜在的に役に立つ」以上のものだった。
「タスク切替
機能,ファイルシステム,デバイスドライバという必須機能を持った Unix であっ
た」と彼は言う。Linux あるいは,Linux の遠い祖先が生まれていたのである。
大学の夏休みが始まると,Linus は自分のプロジェクトに専念することができ
た。このプロジェクトはのちに急速に進む Linux の開発に続く。Wirzenius が
言うには「夏休みは,理論上は 6∼8 月だが,実際には 5 月の半ばから 9 月の半ば
までだった。Linus は最初の夏は週に 7 日,1 日 10 時間,ある意味,1 日中コー
ディングばかりを行っていた」
46
chap03 :
2002/6/5 (15:37)
Chapter 3 ちょっとした反逆
Linus が 1992 年に書いた Linux の短い歴史には,これらのプログラミングの
たゆまぬ作業の結果,
「7 月 3 日には,僕は実際の利用者レベルのことを考え始め
ていた。この段階で,デバイスドライバのいくつかが用意され,HD は実際に動
いたが,ほかは大したものはなかった」
。Linus の関心の変貌は,comp.os.minix
ニュースグループへの 7 月 3 日の投稿から明らかである。彼は,
「プロジェクト」
のための POSIX(Portable Operating System Interface)と呼ばれるもののこと
を尋ねている。ここでの「プロジェクト」とは,要は Linux のプロジェクトのこと
である。彼の投稿は以下のとおりである。
こんにちは,ネットの国の皆さん,
僕が(MINIX で)取り組んでいるプロジェクトがあって,僕は POSIX 標準規
格の定義に興味があります。最新の POSIX 標準規格を参照できるところを教
えていただけませんか? できれば,マシンで直接読めるもののほうがいいです。
FTP サイトであれば最高です。
POSIX は,プログラムが Unix 上でどのように動くかということと,いわゆる
Unix の互換性を定義した標準規格である。プログラムが Unix 上でどのように
動くかとは,Linus がシステムレベルよりも「実際の利用者レベルのこと」とし
て参照していたものにあたる。POSIX は,ある種の Unix 環境で動いているプロ
グラムがほかの環境では動かすことができなかった時代の,バラバラに分断され
た Unix マーケットの問題を解決するために作成されたものである。ある OS が
POSIX 標準規格に従っているとき,この OS は POSIX に順応したあらゆるアプ
リケーションを実行できるわけである。
Linus は言う。「僕は標準規格で(プログラムがカーネルと相互作用を行う手段
である)インターフェイスに関して何が書かれているかすべてを知りたかったん
だ。すべてのプログラムを移植したくはなかった。僕は Linux にプログラムを移
植するときに問題があると,移植できるように Linux のほうを変更していた。要
するに,プログラムを移植するのではなく,プログラムを動かす側のカーネルを移
植していた」。これは,Richard Stallman が彼の GNU プロジェクトに使った手
段と同じであり,既存の,非常に多くの Unix のアプリケーションをほとんど無修
正で有効に活用できるという同様の長所をもたらした。
47
chap03 :
2002/6/5 (15:37)
ソースコードの反逆
しかし,
「POSIX 標準規格に関する僕の最初の質問に回答したうちの 1 人が『残
念ですが,POSIX は売り物だから,オンラインでは入手できません』と言った。こ
れは,
『わかったよ。でも,僕には買えないよ』ということを意味していたんだ」
と Linus は思い出す。しかし,Linus にはもう 1 つのオプションがあった。
「僕
らの大学には SunOS があったんだ」
。SunOS は,のちに Solaris と呼ばれる Sun
Microsystems 製の Unix の初期バージョンだった。「僕は,各種のインターフェ
イスを調べるために SunOS のマニュアルを使った」
次善の策として始めたものは,実は運の良い手段だった。「SunOS インターフェ
イスは,ある意味,数年後の Unix の姿だった」と Linus は言う。この偶然あるい
は事情によって左右された手段が,Linux の今後の発展に対する,姿を変えて現れ
た恩恵であることがわかったのはこれが初めてではなかった。
また,Linus が POSIX に関する情報を尋ねたことによる,もう 1 つの結果はさ
らに重要であった。
「(POSIX)標準規格は入手可能ではないと僕に教えてくれた
人は,彼が興味がある領域はカーネルと OS だと言ったんだ」と Linus が言う。
彼は Ari Lemmke,ヘルシンキ工科大学(Helsinki University of Technology)
の職員だった。「(Lemmke は)ftp.funet.fi 上にすこしの領域を準備し,
『君
のためにディレクトリを準備したよ』と言い,/pub/os/linux ディレクトリを作
成したんだ」と Linus は思い出す。ftp.funet.fi はゲストが標準の FTP(File
Transfer Protocol)を使ってダウンロードできるようにファイルが保存されてい
るヘルシンキ工科大学のインターネットサーバのことで,当時,nic.funet.fi と呼
ばれていた。
「Linux は僕の研究の名前だった。だから,ある意味では彼は本当の名づけ親で
はないのですが,僕は Linux という名前では公開したくなかったんだ」と Linus
は言う。
「僕が(Linux を)実際に公式名として使ったとすると,僕のことをうぬ
ぼれたオタクだと思って,誰もまじめに相手をしてくれないだろう」と Linus は
恐れていた。
Linus は,本当はじっくりと練っているソフトウェアのことを何かほかの呼び名
にしたいと思っていた。意気消沈しているときに,ときどき,どうしようもなくバ
グだらけの実態を示す「Buggix」と呼びたい時もあったと 1995 年の FAQ の冒頭
で告白している。しかし,たいていは,ほかの名前が頭にあった。「僕は『Freax』
(free(フリー)+freak(変わった)+x)という,このとても悪い名前を選んだんだ。
病気だよ。わかってる」と Linus は認めている。「幸運にも,Ari Lemmke はこ
48
chap03 :
2002/6/5 (15:37)
Chapter 3 ちょっとした反逆
の名前をまったくもって気に入らなかった。だから,彼はこの研究の名前を代わ
りに使ったんだ。これ以後,彼はこの名前を 2 度と変更しなかった」。今,Linux
は生まれると同時に命名されたのである。
最初,ヘルシンキ工科大学の FTP サーバ上の,この Linux の下位ディレクトリ
には,何もなかった。Linus は,当分の間,幼く,弱いカーネルを公開したくなかっ
たのだ。1992 年の Wirzenius との取材記事で Linus は「まだ本当は公開の準備
ができてなかったんだ。ディレクトリには 1 か月ほど,README しかなかった」
と彼は言っている。README ファイルには「このディレクトリは自由に配布でき
る MINIX のクローンのためのもの』などという感じのことが書かれていた。この
段階では,Linus はまだ Linux のことをただの MINIX のクローンであり,Unix
のようには立派なものではまったくないと考えていた。
Linus は,Linux の公開自体にはあまり気が進まなかったが,Linux の存在を
「What would you most like
話に出す準備はできていた。10 月 25 日,日曜日,
to see in MINIX?(MINIX で何が一番欲しい?)」という見出しで,Linus は以下
の記事を comp.os.minix のニュースグループに投稿した。
MINIX を使っている皆さん,こんにちは
僕は,386(486)の AT 互換機で動く(フリーの)OS を作成しています(こ
れはただの趣味で,GNU のように大きく専門的なものにはしません)
。この作
業を 4 月から行ってきて,だいぶ準備が整ってきています。僕の OS は,すこ
し MINIX に似ているので(例えば,実用上の理由からファイルシステムの物理
的レイアウトは同じです)
,皆さんが MINIX のどこが好きでどこが嫌いかを教
えていただけませんでしょうか。
いまのところ,Bash(1.08)と GCC(1.40)を移植し,ちゃんと動いてい
るみたいです。この 2,3 か月で,実用レベルに持っていくつもりですので,
皆さんがどういう機能を必要としているかが知りたいのです。どういう提案で
も歓迎します。でも,実装するかまでは約束できないけどね:-)
Linus ([email protected])
49
chap03 :
2002/6/5 (15:37)
ソースコードの反逆
この投稿に対する反応は早かった。4 時間も経たないうちに,フィンランド人の
同輩が「もっと教えて! 移植に関して障害はありますか?」と聞いてきた。オース
トリアの MINIX のある利用者は,
「僕はこの OS に非常に興味を持ちました。僕
は以前に自分だけの OS を書こうと考えたことがあります。だけど,最初からす
べてのものを書くだけの時間がないと考えました。しかし,赤ちゃん OS の台頭
を助ける時間はもてると思います:-)」と言ってきた。これは,間もなく Linux と
いう OS を運ぶ能力あるハッカーたちが台頭する巨大な波の前兆であった。
「簡単に言うと,
移植に関する質問に対する回答では,Linus は悲観的だった。
移植は不可能です。ほとんどは C で書かれていますが,386 のことを勉強するプ
ロジェクトがあったので,僕が探しうる 386 のありとあらゆる機能を使っている関
係で,C だと言っても,ほとんどの皆さんにとっては C にあらずという感じです」
最後に,Linus は,プロジェクトの最新の状態を詳しく述べた。
「物事を本当に
明確にすれば,僕はこの OS の上で GCC を動かすことができる。Bash と,ほと
んどの GNU ツールも動かすことができるけど,まだちゃんとはデバッグされて
いない。いまだに FD すらサポートしていない。数か月間は,配布のための準備が
できないだろう。それでさえ,たぶん,いくつかの点で MINIX より良いことも,
悪いこともできないだろう。しかし,この OS はフリーなんだ」
Linus が 1992 年に書いた Linux の歴史記録の中では,彼の「趣味」に関するこ
の最初の言及から,
「Linux のためのベータテストをしてもいいというメール数
通を受け取った」と Linus は思い出す。数週間後の 1991 年 9 月,彼は 0.01 バー
ジョンと呼ばれる,最初の公式の Linux をまとめた。しかし,Linus は,コーディ
ングの作業の成果がこのように支持されたことにまだ満足していなかった。
「まだ
きれいではなかったんだので,僕は自慢できなかったんだ」と彼は言う。Linus は
このバージョンを comp.os.minix の中で発表しないことに決めた。
代わりに,
「僕は,僕の(8 月 25 日付の)投稿(電子メール)に対して反応して
くれたすべての人々のリストをまとめたんだ」と彼は思い出す。次に,Linux0.01
を,Ari Lemmke によって作成された/pub/os/linux のディレクトリにアップ
ロードして,すぐに「僕は彼らにメールを出し,
『ほら,さっさと行って,これを見
てごらん』と言った。このリストはたかだか 10∼15 名程度だったと思う」
彼がこの最初の不満が残るバージョンを投稿したのは,
「僕がこのサイトを持っ
ていたので,何かをアップロードする必要があると感じていたんだ」という理由だ
けからだと Linus は言う。彼は単にソースコードをアップロードしたのだ。
50
chap03 :
2002/6/5 (15:37)
Chapter 3 ちょっとした反逆
これが,ただのジェスチャーだったかどうかにはかかわらず,ソースコードに
は,驚くほどしっかりとした 1,800 語程度のリリースノートが付いていた。この
リリースノートは「このバージョンはあくまで読んで理解するためのものだ」とい
うことを強調していた。読んで理解する(読解する)こと,これはハッカー楽しみ
であり,Dennis Ritchie が 1979 年の Unix の歴史記録に書いているように,C の
開発に端を発するコードの読みやすさに関する流儀に基礎を置くものである。
また,ソースコードのほうも非常に読みやすいものであった。基本の構造をはっ
きりと示すために,空白文字とインデントをうまく使っていたし,さらにコメント
(注釈)文も十分に付いていた。コメント文は,優れたハッカーたちであっても結
構省略してしまうことが多いものだ。コメント文のうちのいくつかは,非常に楽
しいもので,カーネルが Linus の指の下で姿を現し始めた,と彼がはっきりと感
じて,この膨らんでいく興奮を大変うまく表現している。
●
これは本当に「素晴らしいコード」だ!
●
うん,わかってる,汚い。でも,僕にはこれを正しくする手段がわからな
いし,これは動きそうだ……これのうちのほとんどは試みであり誤りで
あった……まったく。
●
これはバグ無しでありますように。これのデバッグは嫌だからね:-)
●
僕は機嫌が悪いんだ。
●
単にマニュアルをもたないのが好きなんだ。
●
うん,確かにつまらんね:-(. これが動けばいいんだけど……これが「真の」
プログラマの手口だよ。
●
8M バイトより多くのメモリを持っている皆さん。運が悪い。僕は持っ
ていないんだ。何で君が持っているの:-). ソースコードはここにあるん
だから適当にいじってよ。本気で。大して難しいことではないよ。たぶ
ん,いくつかの定数を変更するだけだよ。僕のマシンがもうこれ以上に
拡張できないから (うん,僕のマシンはちょっとばかり貧乏:-),8M バイト
のままにしてあるだけだから。
添付ドキュメントで Linus は注意を与えている。「君のマシン上でこれが動く
ようにするためには,僕はできることは何でもしようと思うけれども(僕にメール
ください),本当は,これにはサポートはありません。変更は頻繁に起こるだろう
51
chap03 :
2002/6/5 (15:37)
ソースコードの反逆
し,最初の『製品』バージョンは,このアルファテストの事前公開版とはたぶんだ
いぶ違うものだろう」
。この頻繁に起こる変更は Linux の歴史を通じて Linux の
品質を証明するものであった。
また,当時のすべてのハッカーにとって明白であったが,Linux が普及していく
にしたがって,あいまいにされてしまったことを Linus は指摘している。
「残念だ
が,カーネル(これが Linux である。常に)だけでは無力である。ちゃんと動作す
るシステムを手に入れるためには,シェル,コンパイラ,ライブラリなどが必要だ。
Linux と一緒に使われるツールのほとんどは,GNU ソフトウェアであり,GNU
の「copyleft」の下にある」と Linus は書いている。GNU と Linux,2 つのプロ
ジェクトが共存を始める初期の兆候であった。
この段階で,Linus が彼のカーネルに Stallman の GNU GPL(General Public
License),要するに「copyleft」をまだ未適用だったことは不思議である。代わり
に彼は次のように書いている。
このカーネルのコピーライト(著作権)は 1991 年の Linus Torvalds にあ
るが,以下の条件で,すべてまたは一部を再配布してもよい。
●
配布の際にソースコードの添付を省略した際でも,ソースコードの要望
があったときには,すべてのソースコードを入手可能(でフリー)にする
必要がある。
●
著作権の表示の変更は禁止する(実際は,いくつかのファイルにはコピー
ライトが抜けているので,一部だけを配布するときは,著作権を書き足す
必要があるだろう)。ただし,ごく一部の抜粋であれば,著作権を気にす
ることなく,流用してもよい。
●
「実」費であっても,料金をもらってこれを再配布することを禁止する。
最後の条項は,カーネル(圧縮されるとちょうど 72K)を収録した FD を作成す
ることにかかわる仕事に対して料金を課すことを禁止していたが,これは Linux
を広く配布することを明らかに抑制していた。
1992 年の『Linux News』の取材記事で,Linus は,どうしてこの使用許諾書を選
んだかという話をしている。シェアウェアというものがある。これはソフトウェ
アは無料で配布されるが,実際に使うと決心したら代金を支払う必要があるとい
52
chap03 :
2002/6/5 (15:37)
Chapter 3 ちょっとした反逆
うものだ。これは Linus の選択肢にはならなかった。
「僕は,概してシェアウェア
というものが嫌いなんだ。代金未払いに罪の意識があるように感じる。だから,
僕は使わないけど,実際に存在するということには刺激されるんだ。まったくの
不条理なことだけど,僕はそう感じているんだ」。彼が言うには,最初の使用許諾
書は「たぶん,MINIX のときに僕が感じた反感の過剰反応だった。僕が思ったの
は(いまだに思っている)
,MINIX は FTP,あるいは同様のものでフリーで入手で
きたほうが一層よかったのにということだった」
0.01 のリリースノートの残りの部分の大半は専門技術に関する内容であったが,
2 つの興味深い文があった。「Linux を実装するときのガイドラインは『速く動く
ようにしよう』だった」
。この「速く動くようにしよう」は Linux の開発の基本原
理の 1 つであり,この点で,Linux は,ほかのものの,慎重でゆっくりという手法
とは違うものであった。
Linus はまた次のように書いている。「これはまだ『すべての OS の源』ではな
い。それを期待している皆さんは,最初の正式版の公開(1.0)を待つ必要がある
。Linus は,Linux
し,それでさえも,MINIX から移行したくないかもしれない」
1.0 の公開までに 2 年半もかかるとは夢にも思っていなかったが,そのときまで,
何度でもベータ版を作ることにためらいはほとんどなかった。
Linus は 0.01 のリリースノートを,Richard Stallman のトレードマークでもあ
る「Happy hacking(楽しいハックをしよう)
」という言葉で締めくくった。Linus
が楽しいハックをした結果は,すぐに Linux 0.02 として姿を現した。このとき,
Linus が世界にこのことを発表するのに何も不安はなかった。1991 年 10 月 5 日
土曜日,彼は comp.os.minix に次の投稿を行った。
男はだまって自分のデバイスドライバを書いていた時代,あの MINIX-1.1 の
楽しかった頃が恋しいですか ? 楽しいプロジェクトがなくて,ちょうど自分
の必要に応じて修正できる OS を経験を積みたいと思っている ? すべてが
MINIX 上で動いているとき,挫折というものを味わっている ? 徹夜仕事して
まで動かしたいぐらい,素晴らしいプログラムがない ? この投稿はまさに君の
ためのものだね:-)
僕が 1 か月ぐらい前に書いたように,AT-386 マシンのためのフリーのバー
ジョンの MINIX のそっくりさんを開発している。何とか,使用に適した段階
53
chap03 :
2002/6/5 (15:37)
ソースコードの反逆
にたどり着いたんだ(すべての要望を満たしてはいないけれども)。僕は,ソー
スコードを広く配布するために発表したいと思っているんだ。
この投稿の次の段落では,GNU Hurd,MINIX などの名の知れたほかの Unix
カーネルとの関係で,Linus が Linux のことをどのように思っているかというこ
とが読み取れる。
僕には君が「どうして?」って自問自答しているのが(とってもよく)聞こえる
よ。Hurd は 1 年(あるいは 2 年,あるいは来月か,本当のところは誰にもわ
からないけど)のうちに発表されるだろう。僕にはすでに MINIX がある。こ
の OS は,ある 1 人のハッカーによるハッカーたちのためのプログラムだ。僕
はこのことを楽しんでいるし,これを見て楽しんでいたり,自分のために修正
していたりする人たちがいるだろう。この OS は,理解したり,使ったり,修
正するのにちょうどよいぐらいにまだ小さいんだ。また僕は君のあらゆるコメ
ントも楽しみにしているよ。
Linus は,完了しているが本質的には凍結された MINIX と,期待できるがいま
だに開発段階の GNU との間に,彼の「ある 1 人のハッカーによるハッカーたちの
すき
ためのプログラム」のための隙間があることを気づき始めていた。Linux は,いま
はまだ荒削りであるが,でも動くのだ。Hurd が期待をかきたてる約束にとどまっ
たのに対して,Linux はもう改善される段階にあるわけだ。ここで,Tanenbaum
と違い,Linus は改善のための意見を聞き,この分野での仲間たちの独自の努力を
歓迎したということは非常に重要である。
Linus は言う。「この第 2 のバージョン(0.02)は,僕が本当に欲しかったもの
にだいぶ近かった。これをどれくらいの人が手にしたかは知らないけど,たぶん
10∼20 名ぐらいの規模だと思う。ニュースグループでは,設計,目標,カーネル
がサポートすべきものに関して,いくつかの議論があった」。物事は,まだ,だい
ぶ小さい規模だが,成長していた。1992 年の『Linux News』の取材記事で,Linus
は最初のバージョン(0.01)に関して「僕は,最初のバージョンを見たのは,多くて
も 5∼10 名程度だと思う」と語っている。
結果として,
「僕は思いがけぬ成功に浮かれて,次のバージョンを 0.10 と呼んだ
んだ」と Linus は『Linux News』に語った。
「実際,物事は結構うまく動き始めた」
54
chap03 :
2002/6/5 (15:37)
Chapter 3 ちょっとした反逆
と Linus は思い出す。バージョン 0.11 は 12 月頭に登場した。Linus は 1991 年
12 月 19 日の comp.os.minix への投稿で「Linux 0.11 はまだ 386-MINIX ほど
完成度が高いものではないけれども,いくつかの点では 386-MINIX よりも優れ
ている」と書いている。この投稿には,Linux の当時の状態と将来の展開に関す
る,彼からのいくつかの興味深いコメントがあった。「僕は,すこし偏見が入って
いますが,Linux は MINIX より優れていると考えています。Linux は,Hurd が
(次の世紀かそこらに)なるような,本物の実用 OS の部類にはなりえないけれど
も,
(私の意見を正直に言うと,MINIX よりも)Linux はかっこいい教育ツールで
あり,また Linux での仕事は楽しかった(楽しい)のである」
GNU Hurd が公開される日は,いまでは急速に「次の世紀かそこらに」遠ざか
り,Linux は,MINIX よりも優れた教育ツールですらある。しかし,Linux では
「楽しかった(楽しい)
」という,あらゆる種類のプロジェクトでのハッカーが使う
究極の根拠が重要である。
12 月 19 日の投稿には Linus の「計画(plan)」が貼り付けられていた。これは,
「指でいじっ
利用者がネットワークを(
「finger」と呼ばれるプログラムを使って)
ている」ときに表示される plan ファイルであり,ニュースグループに投稿される
何百もの記事を区分しないで,Linux の情報を取得するための重要な手段であっ
た。当時の Linus の計画は「386 版のフリーの UNIX: 4QR91(1991 年第 4 四半
期)あるいは 1QR 92(1992 年第 1 四半期)登場」に向かって進んでいた。それは
こう始まっていた。「Linux の最新バージョンは 0.11 であり,Unix カーネルが必
要としているほとんどのものを持っている」。たぶん,これが,Linus が,Linux
を MINIX からのただの進展というよりは Unix 系のカーネルを作り上げるプロ
ジェクトとして,公に宣伝した最初の機会であった。
また,この plan ファイルには,もう 2 つのサイト(1 つはドイツにあるもので,
もう 1 つは Richard Stallman の故郷,ボストンの MIT にあるもの)に Linux の
ソフトウェアが置かれていることに言及していた。これらのサイトは,Ted Ts’o
(
「チョー」と発音する)によって運営されていた。彼の名前は(彼の電子メールの
名前の tytso で),この直後に現れる Linux 0.12 の新しい機能の実装者として同
じ plan ファイルの最後に現れている。
わずかに目に映るものすら,すごく意味のある進展であった。すでにほかのハッ
カーたちが Linux プロジェクトに参加し,貢献していたのだ。この同じ 12 月 19 日
の comp.os.minix への投稿には,Linux が各種の HD を利用できるように SCSI
55
chap03 :
2002/6/5 (15:37)
ソースコードの反逆
のドライバを実装している「人々」のことが書かれている。この「人々」とは,Linus
ではなく,Linux プロジェクトに参加しているほかの人々を示すものであった。
このことは Drew Eckhardt が次の日に投稿したものによって確認される。
Eckhardt はこれらの SCSI ドライバを書いた人物で,バージョン 0.11 ですでに
Linux プロジェクトに参加していた。彼の投稿は Linux に関する,以下のありふ
れた質問に対する回答だった。
誰か僕に(Linux のことを)教えてください? たぶん,この記事から始まるス
レッドで情報交換するのが一番だと思います。このニュースグループには潜在
的に興味を持っている読者は結構たくさんいると思うので。
ここで,Linus の代わりに Eckhardt が回答していること,非常に細かいことで
すが,最低限ほかの 1 名が質問に回答するだけのことをすでに十分知っていたと
」を使った
いうこと,さらに彼が Linux の話をするときに代名詞の「私たち(we)
ということが重要である。ハッカーの「趣味」の 1 つであったものがコミュニティ
に成長したのである。さらに,この初期の段階であっても,Linus はコミュニティ
の要望を聞くための準備をしていたのだ。
Linux の最初の利用者のうちの何名かは仮想記憶(VM: Virtual Memory)と
呼ばれるものを欲しがっていた。仮想記憶とは,あたかも通常の RAM であるか
のように HD の空間を使う機能である。仮想記憶は Unix の標準機能であり,物
理メモリが高価であった当時では,この機能は大変役立ったのである。Linus は,
この機能に興味を持っていなかった。たぶん,彼が RAM をちょうど十分持って
いたからであり,また彼の HD がとても小さかったからである。しかし,Linus
は 1991 年のクリスマスに腰を落ち着けて Linux カーネルに仮想記憶機能を与え
るコードを書き,バージョン 0.11+VM として公開した。Wirzenius は,Linus が
「いまクリスマスで,暇で,家族で過ごすときだから,僕はいまプログラミングす
る必要があると単純に決心したんだ」と思い出す。
Linux の初期の頃(Linus は 1992 年と書いている),
「0.11+VM は,徹底的にテ
ストしたいと思う,ほんのすこしの人々しか利用できなかった。また,このバー
ジョンが以前と同じように働いたことが僕はいまだに信じがたい」と Linus は思
い出す。さらに,彼は,このコードをたった 2∼3 日で書いたことに触れることを
謙虚に省略した。仮想記憶機能は,次のバージョンからカーネルの標準部分とし
56
chap03 :
2002/6/5 (15:37)
Chapter 3 ちょっとした反逆
て収録された。小さい私的な要請として始まったものが,公のためになったので
ある。
1991 年 1 月 5 日,Linus が「本当に行き詰まって,PC を手に入れた」と表現す
る,運命の日からきっかり 1 年後の 1992 年 1 月 5 日に Linux のバージョン 0.12
が公開されるということは,PC は,Linus がのちに「『成功した』カーネル」と呼
ぶもので最初の誕生日を祝ってもらったわけである。この時期は,Linux が急速
に広まり始めた頃である。さらに驚くべきことには,当時は C プログラミングも,
Intel アーキテクチャのこともほとんど知らない学生であった Linus が,PC 向け
の十分に機能を満たした Unix カーネルを 0 から構築するために,急速に成長し
ているハッカー集団のリーダーになったことが挙げられる。
0.12 のリリースノートには,Linus のしだいに膨らむ達成感がよく表れている。
まったく陽気で,ひょっとすると,本当にひょっとするとであるが,彼は何か大き
なものの頂点に向き合いつつあったのかもれない。
このリリースノートは,すべて大文字で書かれた「嘆願」で始まっている。Linux
をインストールするのは,自分が何をしようとしているか理解している利用者だ
けにしてくれ。
「自分が何をしようとしているかをちゃんと理解しているのであれ
ば,続けてください。適当に進めると,パニックに陥ってしまうよ。僕にメールで
尋ねてもいいし,あきらめて Linux のインストール以外のことをするのも手です。
インストール自体は単純だけど,自分がしようとしていることがわかっていない
と,たぶん,気の毒な結果になってしまうだろう。僕は,
『オマエは俺の HD を台
無しにしちゃったんだ。こんちくしょう! オマエを探し出してやる。俺がそうす
れば,オマエも後悔するだろうよ』と言うメールを受け取るよりは,余計なメール
の数通に回答するほうがいい」
Linus が「初期のバージョンは本当にハッカーのためだけだった」と言うという
ことは,バージョン 0.12 がより多くの利用者に適しているということを暗にほの
めかしている。ほとんどは事実であるが,インストールガイドには,いまだに以下
の段階がある。「再度 Linux を起動し,次に自分がいま新しいパーティションを
有していることを確認するための fdisk を実行し,今度は fdisk が表示したパー
ティションの 1 つにファイルシステムを作成するために mkfs を使ってください。
ファイルシステムの作成は『mkfs -c /dev/hdX nnn』を実行してください。ここ
で X は Linux の fdisk が返してきたデバイス番号,nnn は同様に fdisk が返して
きたサイズです。nnn は 1 ブロックのサイズ(キロバイト)で指定してください。
57
chap03 :
2002/6/5 (15:37)
ソースコードの反逆
このサイズ情報は,どのデバイス名でどのパーティションが表れるかを決定する
ために使うことができます」
これは数か月後に発表される Windows 3.1 との差を示している。
バージョン 0.12 でのコードの改良も重要であったが,このバージョンには新し
い使用許諾書が付いていた。この理由を Linus は以下のように釈明している。
だいぶ初期の頃には,偶然同じ地域に住んでいた人々が,Linux に興味を持っ
たほかの人々が利用できるようにしたいと思っていたとしよう。しかし,初期
の使用許諾書は,複製のための手数料すら許していなかった。だから,FD の
価格より高く FD を売ることはできなかった。FD の複製には単純作業で退屈
だし時間がかかるというのに,誰かが明らかにたくさんの仕事をする必要があ
るというのは,どう考えても変だったし,実際,こうした単純作業で複製され
たものを入手した者はほとんどいなかった。僕にある種の(ほんのわずかの)
複製手数料を取る許可を出すように言う人々もいた。彼らは,金儲けをしよう
と思ったからではなく,仲間が Linux を利用できるようにするために,あるい
は,仲間を助けるために,自分のお金を失いたくはなかったからである。
Linus は,Linux に Richard Stallman の GNU GPL(General Public Licence)
を適用することにした。
1996 年,Linus は「僕は本当は GPL が好きではなかったんだ。GPL はあまり
に法律者ぽかったし,僕にすればちょっと厳格すぎた」と認めている。
「でも,GPL
はとてもうまく機能したし,僕は満足している」とも彼は(しぶしぶ)認めてい
る。振り返ってみると,この GPL への変更は,非常に意味のある移行,特にのち
の Linux 商業の発展に関係する移行であった。
バージョン 0.12 の公開は Linux にとっての転機であっただろう。0.12 より前
の Linux は何か物珍しいものだった。確かに興味深いものではあったが,特に役
に立つというわけでも明らかに重要というわけでもなかった。しかし,0.12 以降,
より多くの人たちが注意を払い出した。新しいメーリングリスト Linux-activists
には,1 月 13 日の段階ですでに 196 名のメンバが登録していた。Linus はすでに
comp.os.minix のニュースグループでの雰囲気に気がついていた。「(Linux 0.12
の公開以後)2 週間の間に(Linux に関する)たくさんの議論が生じていた。いままで
MINIX で行っていた作業に,Linux を使っている利用者たちが comp.os.minix
58
chap03 :
2002/6/5 (15:37)
Chapter 3 ちょっとした反逆
にいたことは確かだが,comp.os.minix で行われた議論であったため,ほとんど
は MINIX の利用者たちであった」と彼は語る。
明らかに,多くの MINIX の利用者が Linux を試し,Linux の話をしていたの
だが,すべての読者が comp.os.minix 上で増加する Linux 論議を喜んでいたわ
けではなかった。例えば,以下の投稿があった。
僕は本当は口喧嘩を避けたいのだが,でもこのニュースグループの記事の 50%以
上が Linux に関するものであるという事実は僕を悩まし始めているんだ。
この当然とも思われる苦情が投稿された日,Linus は彼のマシンで発生した興
味深い事件を報告していた。Linus はヘルシンキ大学のサーバに接続しようと,
端末エミュレータで間違って HD に電話をかけてしまったのだ。言葉で言う際の
難しさに比べて,これの処理を実際に行うのは実に簡単である。Peter Salus が
「
(Unix の開発者が)いままでに創案したものの中で最も革新的だ」と指摘した概
念によって,Unix で(したがって Linux でも)すべてのものはファイルとして表
現される。したがって,モデムにデータを書き出すことも,HD にデータを書き出
すことも概念上の違いはまったくないのである。
このちょっとした間違いは,Linus が HD 上に着実に発展する Linux と一緒
に維持してきた MINIX 環境を一瞬にして破壊した。当初,MINIX は Linux の
開発のための欠くことのできない基礎を構成していたが,このときすでに Linux
は MINIX の支援がなくても機能できるようになっていたので,この災難の後
に,MINIX を再インストールする必要はなかった。Linus が HD に電話をして
MINIX 環境を消したということは,フロイトの言う「フロイト的失言(無意識の願
望)
」とまで言わないまでも,古い世代のソフトウェアからの象徴的な解放であっ
ただろう。
この偶然の一致によって,MINIX と Linux の最終の決裂はこの 2 週間後,
Andrew Tanenbaum が comp.os.minix に Usenet 史上最も名高い投稿によっ
て起こった。
Tanenbaum の投稿の題目は「Linux は時代遅れ(Linux is obsolete)」と挑発
的であり,次の文で始まっていた。
私は数週間ほどアメリカにいたので,Linux に関してあんまりコメントしませ
59
chap03 :
2002/6/5 (15:37)
ソースコードの反逆
んでした(こっちにいても,たくさんコメントするわけではないですが)。ま
あ,一応,いくつかコメントすることにします。
ほとんどの皆さんは御存知だと思いますが,私にとって MINIX は趣味,道楽で
あり,執筆に疲れたり,CNN が大きな戦争,革命,上院の聴聞会を生放送し
ていない夜にすることであって,私の本職は大学教授であり,OS の分野の研
究者です。
職業柄,次の 10 年ぐらいで OS がどういう向きに進んでいくかはすこし知っ
ているつもりです。ここで,2 つのことを取り上げます。
Tanenbaum は,
「マイクロカーネル vs. 単層カーネル」と「移植性」という 2 つ
の問題に,学者らしく,例によって洗練され,十分に議論されつくした長話で,焦
点を当てた。Tanenbaum はカーネルの設計の問題を次のように発言している。
ここで,2 つの設計手法の各長所をだらだらと書くこともできますが,実際に
OS を設計している者たちの間では,議論はもう本質的に終わっていると書け
ば十分でしょう。マイクロカーネルが勝ったのです。
次に Tanenbaum は Linus の開発に向けてジャブを打ってきた。
Linux は単層カーネルスタイルの OS であり,これは 1970 年代に大きく後
戻りしてしまっています。既存の,動作している C のプログラムを,BASIC
で書き直しているのと同じです。
Tanenbaum は絶対わかっていたはずだが,この発言はすべてのハッカーにとっ
て真の侮辱であった。
彼は,移植性に関しては,簡潔で機知に富んだ CPU の設計の歴史で始め,こう
締めくくった。
すう
私は,特定のアーキテクチャ向けの OS を設計することは,時代の趨勢とはほ
ど遠く,著しい間違いだと思います。MINIX はある程度の移植性があるよう
60
chap03 :
2002/6/5 (15:37)
Chapter 3 ちょっとした反逆
に設計されているので,Intel 系から 680x0(Atari,Amiga,Macintosh)
,
SPARC,NS32016 へと移植されています。これに対して,Linux は Intel
の 80x86 系と相当緊密に結び付いています。これは本来,選ぶべき道ではあ
りません。
Tanenbaum の見込みとは裏腹に,現在では Intel CPU は強力で,ほかのライバ
ルはほとんど消滅しているに等しい。しかし,この点を除けば,この段階での Linux
が Intel のアーキテクチャに「相当緊密に結び付いている」という Tanenbaum の
指摘は正しかった。しかし,これは Linux の出発点が単に Intel 系の CPU を理解
するための実験だったからである。のちの出来事が示すように,Linux は決して
Intel だけの OS という制限を持って生まれてきたわけではない。
Linus は Tanenbaum のコメントを無視することができなかった。Linus は,
この 9 か月間,自分の生活の中で Linux のために使う時間がどんどん増加して
きていた。Linus には,急速に成長する Linux の利用者とプログラマのコミュニ
ティという,確固としたプライドの根拠があった。いま,ここにかび臭い学者が現
れ,すべてをばかにしているのである。
Wirzenius は,
「Linus には大きなエゴがあった。誰かが彼のプライドを傷つけ
る発言をしたら,彼は仕返しするだろう」と特筆している。この場合,Linus は,
ちょうど 11 時間を仕返しのために費やし,彼の言葉は明らかに怒りで沸き立って
いた。もうすこしで,彼が戦闘準備のために,隠喩的な意味で,シャツの袖をまく
りあげるところを見ることができただろう。
まあ,こういう題目では,僕は返事を差し上げるしかありません。もう Linux
の話をさんざん聞いてきた MINIX の利用者には申し訳ありません。ただ,
「い
くらちょっかいをされても無視する」ことができればいいのですが……ちょっ
とまじめに議論する時間のようです!
Linus は,MINIX の品質に関して当然の非難を始めた。「Linux はほとんどす
,次に「PC MINIX のための優れた
べての面で MINIX をはるかにしのいでいる」
コードのほとんどは Bruce Evans によって書かれたようであるという事実には言
及していませんね」と書き足すことによって,軽めの一撃を与えた。
Linus が Linux の開発を始める動機に興味深く関係している「MINIX は趣味
61
chap03 :
2002/6/5 (15:37)
ソースコードの反逆
である」という Tanenbaum のコメントは Linus を激怒させた。
誰が MINIX で金儲けをしていて,誰が Linux を無料で配布しているのでしょ
うか。また,MINIX が趣味かどうかはこの質問の次です。MINIX をフリーで
利用できるようにしていただければ,僕の MINIX に対する一番の不満は解消
されます。
Linus は再度 MINIX を打ち破ることに戻った。今度は,Tanenbaum の本当
の仕事が教授であり,研究者であるという彼のコメントに対して Linus はコメン
トした。Amoeba OS は,Tanenbaum の本当の研究プロジェクトであり,した
がって,彼の「本職」である。
この本職の件は,MINIX が脳障害であることの抜群にうまい言い訳ですよね。
本当に,Amoeba が MINIX みたいに失敗に終わらぬことを望んでいます(ま
た,終わらぬはずですよね)
。
相当頭に来たにしろ,今からたった 9 か月前に MINIX を使い始めた者が,MINIX
開発者に向かって,
「MINIX は脳障害である」と呼ぶことに,何の良心の呵責も感
じないというのは驚くべきことである。さらには,MINIX 開発者というのは,OS
の分野の権威で名高い教授でもあり,Linus が認めているように,彼が徹底的に勉
強した『Operating Systems: Design and Implementation』の著者でもある。
ちょうど 9 か月前のエイプリルフールの手紙のときのように,Linus は,ほとん
どすぐに攻撃から手を引いた。
「P.S. いくつかキツイ表現を使ったことは謝りま
す。ほかに代わりがなければ,MINIX は十分に素晴らしい OS です。また,386 マ
シンが 5∼10 台,このあたりに転がっているのであれば,Amoeba は素敵でしょ
う。僕はもちろん持っていませんが。僕は普段は舌戦には参加しませんが,Linux
に話が及んだときは,気が短くなっちゃうんです:)」
この件をひと晩寝て考えたのでしょう。次の日,彼は深く反省していた。
僕が書いた:
まあ,こういう題目では,僕は返事を差し上げるしかありません。
62
chap03 :
2002/6/5 (15:37)
Chapter 3 ちょっとした反逆
僕の返事は,まったくハメをはずしていたし,まったく品を欠いていたし,ネ
チケットを忘れていました。
(Andrew Tanenbaum 教授に)陳謝いたします。
また,
「始まりは問題ではない」という親しみのある手紙をくれた John Nall
に感謝します。僕は過激に反応しすぎたし,今,
(Andrew Tanenbaum に常
識のある言葉で)私信の手紙を書いています。Linux は,
(a)時代遅れだろう
とか(批評のいくつかは妥当だとしても,僕はまだ時代遅れではないと思って
いる)
,
(b)怒りっぽい奴が書いたとかいう理由で,Linux を見捨てる人がいな
いといいんだけど:)
Linus 「僕の最初で,できれば最後の舌戦」 Torvalds
これが,Linus の「最後の舌戦」ではなかったけれども,この後,彼と Tanenbaum
が問題となっている技術的な点を議論するときでさえ,論調はずいぶん節度ある
ものになった。この議論には,ほか数名が参加し,例えば,独立した見地から状態
をきちんと要約した,思慮深い言葉が交わされた。
私たちが使っているソフトウェアのほとんどではないにしろ,多くのものが,
最新の設計基準から見れば,たぶん時代遅れだと判断されるだろう。ほとんど
の利用者は,自分たちが使っている OS の内部が時代遅れかどうかを,たぶん
まったく気にしていないのだ。彼らは,利用者レベルでの性能と能力に間違い
なく興味を持っている。
私は,マイクロカーネルが将来のカーネルの筆頭であるということには概して
同意するが,私の意見では,単層カーネルを実装するほうが容易だし,またさ
らに手をいれていくうちに,一瞬にして台無しにしてしまうのも簡単だ。
よろしく。
Ken
「Ken」とは,Unix を作り上げた,あの Ken Thompson である。
Linus と Tanenbaum の間の論調はほとんど冗談まじりであった。カーネルの
63
chap03 :
2002/6/5 (15:37)
ソースコードの反逆
設計と移植性という 2 つのテーマを再び取り上げると,Tanenbaum はカーネル
の設計に関しては「私は,1991 年に単層カーネルを設計することは根本的に間違い
であると断言する。君は私の学生ではないことに感謝すべきだ。君の設計では,私
のクラスでは高い成績を取ることはできないから:-)」と,移植性に関しては「1991
年の 386 のためだけに新しい OS を書いたことは,君に,今学期 2 つ目の『F(不
可)』をもたらす。しかし,最後の試験が本当に良くできれば,まだ単位を取得で
きるだろう」と発言している。
これに対して,Linus はうまいジョークを返している。
本当に。僕は Tanenbaum 先生なしでは,素晴らしい成績は取れないだろう
と思います。僕は,大学で OS の設計で教鞭を取っている人と(まったく関係
のない,OS にも関係のないことを)議論しました。僕は,いったいいつ勉強
できるのでしょう:)
「Linux は時代遅れ」の舌戦のすぐ後,Linus は,ほぼ完全に,comp.os.minix
ニュースグループへの投稿を止めた。これは,そこで Linux を広め続けることが
適当でないと感じたからでもなければ,Tanenbaum に腹を立てていたからでも
なかった。単に,Linus が alt.os.linux という自分のニュースグループを持っ
たからにすぎない。これは,
「非公式の」alt Usenet の階層の中にあったが,しばら
くして Tanenbaum の comp.os.minix と同等の「公式」の comp.os.linux に変
わった。この意味をうまく象徴するのは難しいが,すべての若いライオンにとっ
ての義務のように,老練なライオンに盾突き,Linus は自分のプライドを作り上げ
たのである。
のちに,1992 年の『Linux News』の取材記事で,
「僕は comp.os.linux の読者数
がついに comp.os.minix の読者数を抜いたと知ったとき,とても無作法だが(し
かし,できれば,理解してほしい)歓喜の気持ちがあったことを認める」と Linus
は語っている。非常に多くの読者,これは以前は 40,000 名もの読者に熱狂的に読
まれていたニュースグループよりも多くのという意味である。
Linus は,いまだに MINIX と comp.os.minix に対して,好感を持ち続けてい
た。1999 年 7 月まで,彼はここを読み,投稿していた。誰かが MINIX のための
GCC のことを尋ねていた。すべての始まりは,1991 年 3 月 29 日の最初の投稿で
あった。
「Linus はどのようにして MINIX で GCC のライブラリを動かしたんだ
64
chap03 :
2002/6/5 (15:37)
Chapter 3 ちょっとした反逆
ろう?また,彼のシステムコールなどのサポートをどのように追加したのだろう?」
という内容だった。
Linus は,過去からのサイレンの呼び出しに返答することに抗しなかったよう
だ。どのようにすべてが始まったかを数行で書き,彼の回答は過去へ逆回りする。
彼は次のように結んでいる。
この作業の多くは,いまだに入手できるようにする必要がある。僕は,自分の
(GCC の)1.40 の移植版を入手可能にしてあるけれども,それがどこで終わっ
ているのか知らないことを認めなければならない。8 年かかって……
これらの言葉から,遠い昔の郷愁の手がかりを見つけないということは難しい。
若い頃の向こう見ずな時期,1 人で何もないところから始めて,彼は,すこしずつ,
彼の名前を持つプログラムを構築していった。彼が,非常に多くの人々が利用す
る完全な OS のカーネルに成長するものの種をまいたとき,この動きが始まり,動
きの支脈は広がり続けている。
65