logo
Go to the homepage of the Vrije Universiteit. Goto the homepage of the faculty of sciences. Goto the homepage of the department of computer science.
www.TellAnAmericanToVote.com

 


「誰がLinuxを書いたか」の馬鹿騒ぎについてのちょっとしたノート、リリース1.5


Original comment Follow up Code comparison Rebuttal

背景

UNIXとそのさまざまな子や孫の歴史が、最近ニュースに取り上げられている。 Alexis de Tocqueville Institutionから刊行された書籍がその原因だ。私はこの歴史の一部に関係しているので、記録を整 理して、極めて重大な誤りを正す義務があるように感じる。しかし、その前に背景をまず示そう。

3月の頭に、Alexis de Tocqueville InstitutionのCEOであるKen Brownが私に連絡してきた。彼は、UNIXの歴史に関する書籍 を執筆しており、私にインタビューしたいと言った。私は15冊の書籍を執筆しており、いくつかの面でUNIXの歴史に関係してき ているので、協力しましょうと言った。私は長年にわたって多くの人にさまざまな理由でインタビューを受けており、オランダ と米国のテレビとラジオとさまざまな新聞と雑誌で放送され掲載されているので、このことについてあまり深く考えなかった。

Brownは私にインタビューするために、2004年3月23日に飛行機でアムステルダムまでやってきた。彼がヨーロッパにやってき た唯一の理由が私であることは、明らかだった。インタビューはのっけから怪しかった。分かりやすくするとだいたいこんな具 合だ:
AST:「Alexis de Tocqueville Institutionとはどういう組織ですか?」
KB:「政策に関する業務を行っています」
AST:「Rand Corporationのようなシンクタンクですか?」
KB:「まあそんな感じです」
AST:「具体的に何をしているのですか?」
KB:「問題報告書の作成と、書籍の発行です」
AST:「誰が資金を提供しているのですか?」
KB:「我々には複数の資金源があります」
AST:「それにSCOは含まれますか? これはSCOの訴訟に関することなのですか?」
KB:「我々には複数の資金源があります」
AST:「Microsoftは含まれますか」
KB:「我々には複数の資金源があります」

彼は、彼がそこにいる理由について、そして誰が彼に資金を提供しているのかについて、口を濁すことおびただしかった。彼 はただただ、UNIXの歴史に関する本を執筆しているだけだと繰り返すのだった。私は彼に、Peter Salusの本"A Quarter Century of UNIX"(『UNIX の四半世紀』)についてどう思うか聞いた。彼はその本について聞いたこともなかった! もしUNIXの歴史に関する本を執筆し ていて、主題について誰かにインタビューするために3000マイルも飛行機で飛んでくるのであれば、最低でもamazon.comに行っ て検索フォームに"history unix"と入力する、というくらいはしてみるというのが道理ではなかろうか。そうすれば、Salusの本 が最初に表示される。$28(うまくやれば送料は無料)で、題材について驚くほど多くを学ぶことができ、時差ボケにもならずに 済むのだ。私もじきに気付いたのだが、Brownはそれほど切れ者ではなかった。だがしかし、私は既に疑いを持っていた。私の長 年にわたる著作者としての経験から、少なくとも本当の相手が何なのか気付くというのは道理だった。彼のことなどどうでもよ くなっていた。

UNIXと私

BrownがUnixの歴史について私にインタビューしたいと考えたのは、おかしなことではないと私は思う。聞くに値しない人な らほかにもいる。1970年代の終わりから1980年代の始めにかけて、私はベル研のUNIXグループ(1127部)にいた。長期間にわたっ て、Rob Pikeの家やAl Ahoの家に滞在していたこともある。また特に名前を挙げるなら、Dennis Ritchie、Steve Johnson、そし てPeter Weinberger はアムステルダムの私の家に泊まったことがある。私が教えた博士課程の学生のうち3人はベル研のUNIXグ ループで働いたことがあり、そのうち一人は今では常任スタッフメンバーになっている。

妙な話だが、私がベル研にいたときには、私の興味はOSにはなかった。OSを1つ書いて、それについて論文を書いて出版した ことはあったのだが(see "Software - Practice & Experience," vol. 2, pp. 109-119, 1973)。私の当時の興味はコンパ イラにあった。というのも私はAmsterdam Compiler Kitの設計責任者だったからだ(see Commun. of the ACM, vol. 26, pp. 654-660, Sept. 198 3)。私はそこでしばらく過ごす間に多くの人とともに働いたが、Steve Johnson とコンパイラについ て議論をし、Greg Chessonとネットワーキングについて議論をし、Lorinda Cherryとツールを書き、Brian Kernighanと本を書い たことは特筆に値するだろう。また、私は他の「外国人」とも友人になった。後にC++を設計・実装することになるBjarne Stroustrupである。

要するに、オリジナルのUNIXの開発にはかかわっていないとはいえ、私はその関係者全員とその歴史について極めてよく知っ ているのだ。さらにいえば、ベル研のUNIXグループと私との関係は秘密ではない。私の著書Computer Networks(『コン ピュータネットワーク』)の初版の序文で、夏期の訪問研究員として歓迎してくれたことについて、彼ら全員に対して謝辞を述 べているほどだ。驚くことに、Brown はこれらのことをひとつも知らなかった。彼は自分のちっちゃなプロジェクトにとりかか る前に、宿題を済ませてこなかったのだ。

MINIXと私

何年もの後、私はOSの講座で教えることになり、LionsのUNIX第6版の本を使っていた。AT&TがUNIXの内部構造を教えるこ とを禁じると決定したとき、私は自分独自のバージョンのUNIXを書くと決心した。AT&Tのコードや制限事項は一切なくて、 私が教材として使えるようなものをだ。私の思い付きはベル研にいたときのものではない。もっとも、一人の人間が UNIXライクなOSを書くことができた(Ken ThompsonはPDP-7上でUNICSを書いた)という事実を知っていたから、私はそれが実現 可能だと考えたのだけれども。私の思い付きは本当のところ、私がバークレイで博士課程の学生でButler LampsonのOSの講義を 受けていたときの、彼の何気ない言葉だ。Lampsonは先駆的なCTSS OSについて説明し終えたばかりのところで、彼独特の調子で こう言った。「ここに、1ヶ月でCTSSを書けない人はいるかな?」誰も手を挙げなかった。1ヵ月もかかってOSを書けないなんて、 本物の馬鹿に違いないと私は結論付けた。前述の論文は私がバークレイでBill Bensonの助けを借りて書いたOSについてのものだ。 それには1ヶ月よりもはるかに長い時間がかかったが、私はButlerのように頭が良くはないのだ。彼より頭がいい人間などいやし ない。

私は極めて小さなUNIXのクローン、MINIXを書きは じめ、そして一人で完成させた。コードにはAT&Tの知的財産は全く含まれていなかった。完全なソースコードは書籍Operating Systems: Design and Implementation(『オペレーティングシステム―設計と理論およびMINIX による実装』)の付録として1987年に出版された。 この書籍は後にAl Woodhullとの共著で第2版が発行された。MINIX 2.0 はPOSIX準拠でさえあった。どちらの版も、数百ページに わたってコードを非常に詳しく説明しているものだった。すべてのバイナリとソースコードが入った、箱入りの10枚のフロッピー ディスクが、$69でPrentice Hallから別売りされていた。

これは"free beer"という意味でのフリーソフトウェアではなかったが、"free speech"という意味でのフリーソフトウェアだっ た。すべてのソースコードは製造コストをわずかに上回るだけの値段で手に入ったのだから。しかし"free speech"でさえ完全に "free"というわけではない。誹謗中傷や、混雑した劇場での非難の叫び声などのことを考えてみてほしい。それに加えて、(あ なたがそれなりに年がいった人間なら)このことを思い出してほしい。1987年までに、UNIX の大学向け教育用ライセンスは$300 で、大学向け商用ライセンスは$28,000で、企業向けの商用ライセンスはもっと高価なものになっていた。「UNIXライクな」ソー スコードを学生が買える程度の価格で提供したのは、MINIXが初めてだ。Prentice Hallはソフトウェアの販売にはあまり興味が なかった。彼らは書籍の販売に興味があったので、MINIXをコピーすることについての方針はかなりリベラルなものだった。しか し、企業がそれを金銭的利益のために販売したいという場合には、PH社はロヤルティを要求した。そんなわけで、PH社の弁護士 はMINIX を数多くの契約書で守っていたが、大学や学生を相手にそれを実際に強制執行しようという意図は全くなかった。イン ターネットを使ってそれほどの量のソースコードを配布するというのは、(1200ボーの)高速モデムを持っている人にさえ、 1987年当時はまだ無理だった。インターネットでの配布が現実的になったとき、私はPrentice Hallを説得して、その(極めて慎 ましやかな)商売上の野心を捨て去ってもらい、ソースコードを私のウェブサイトに置いて無料でダウンロードできるようにし てよいという許諾を得た。ソースコードは今もそこにあり、ダウンロード可能だ。

リリースから2ヶ月ほどのうちに、MINIXはある種の熱狂的な支持を受けるようになり、40000人が購読する専用のUSENETニュー ズグループcomp.os.minixを持つようになった。多くの人々が新しいユーティリティプログラムを追加し、さまざまな方法でカー ネルを改善した。しかし、オリジナルのカーネルはたった一人の人間、つまり私の作品だった。多くの人々がカーネルの改善に ついて私に嫌がらせをするようになった。USENETでの多くのメッセージに加えて、私には1日あたり200通の電子メールが届いて いた(限られたごく少数の人しか電子メールアドレスを持っていなかった時代のことだ)。こんな調子だ:「疑似端末が必要で、 金曜までに欲しいんだ。」私の返答はたいてい素早く要を得ていた:「お断りします。」

私が頻繁にNoと言った理由は、誰もがMINIXを製品レベルのUNIXシステムにしたいと思っていたが、私はMINIXが複雑になりす ぎて私の目的に合わなくなることを望まなかったということだ。私の目的とはすなわち、それを学生に教えることだった。私は 同時に、フリーの製品レベルのUNIXシステムというニッチは、GNU かバークレイUNIXによって近いうちに満たされると期待して いた。だから私はそちらの方向には向かわなかった。蓋を開けてみれば、GNU OSはなんだかどこかへ行ってしまった(多くの UNIX ユーティリティは書かれたが)。バークレイUNIXは、その設計者がそれを販売するためにBSDI社を設立して電話番号に 1-800-ITS UNIX を選んだときに、訴訟に巻 き込まれてしまった。AT&Tはそれが版権侵害を生じさせると感じ、彼らを告訴した。これが解決するまでには2年ほどかかっ た。フリーのBSDを世に出す際のこの遅れが、息つぎをして追い付くための余裕をLinuxに与えた。この訴訟がなければ、強力で フリーなUNIXクローンのニッチをBSDが占めていただろうことは疑う余地がない。なぜならBSDは既に、多くの支持者を持つ安定 して成熟したシステムだったからだ。

Ken Brownと私

そして今Ken Brownが現れて、質問し始める。私はすぐに、彼はUNIXの歴史についてひとつも知らず、Salusの本のことを聞い たこともなく、BSDとAT&Tの訴訟についても知らないと確定した。私は歴史について彼に説明しはじめたが、彼は私を押しと どめて、もっと法的な側面に興味があるのだと言った。私は言った:「ああ、setuidビットに関するDennis Ritchieの特許番号 4135240のことを言っているのかね?」そして付け加えた:「あれは問題ないよ。ベル研は特許を提供したのだから。」そしてそ のとき分かったのは、(1)彼はその特許のことを聞いたことがなく、(2)特許をdedicateする(公有にする)という言葉の意味を 知らず、(3)知的財産法について何も知らなかった、ということだ。彼は特許(patent)と著作権(copyright)と商標 (trademark)について混乱した認識を持っていた。余計なことに、私は彼に彼が弁護士なのかと聞いた。しかし彼がそうではな いことは明白だったし、彼もそう認めた。この時点でまだ私は、彼がSCOのスパイかもしれないと考えていたが、しかし彼がそう だったとしたらSCOは金を無駄にしたというものだ。

彼は所有権の問題について話を進めたがったが、同時に彼は、自分の本当の目的が何であるかについて私に話すことは避けて いたので、彼は質問を歯切れ良く表現することができなかった。とうとう彼は、LinusがLinuxを書いたと思うかと私に聞いた。 私はこう言った。自分が知る限りでは、Linusがカーネル全体を自分自身で書いたが、リリースされた後は他の人々が(最初はと ても原始的だった)カーネルを改善しはじめ、新しいソフトウェアをシステムに追加しはじめた──本質的にはMINIXと同じ開発 プロセスであると。すると彼はこのことに焦点を移し、こんな質問をしてきた:「彼はMINIXのコードの一部を許可なく盗用しま せんでしたか」私は彼に伝えた。MINIXは明らかにさまざまな面でLinuxに大きな影響を与えている。ファイルシステムのレイア ウトから、ソースツリーの名前付けまで。しかし、Linusが私のコードを少しでも使ったとは私は思わない、と。Linusは当初 の開発プラットフォームとしてもMINIXを利用したが、それは全く問題ないことだ。彼は、私がそれに反対したかと聞き、私は、 いいや反対しなかった、非商用目的なら人々がそれをどのように使っても自由だったのだと答えた。後にMINIXはバークレイライ センスでリリースされ、どんな目的であっても利用がフリーになった。MINIXは今でも教育用と第三世界の両方で驚くほど広く使 われている。第三世界では、古い廃棄された1MBの386があればこの上なく満足という人々が数百万人おり、そういったコンピュー タ上でMINIXは問題なく動く。上記のMINIXのホームページはいまだに週に1000ヒット以上のアクセスがある。

最後に、Brownは要点に鋭く切り込んできた。彼は、一人の人間がどうやって自分だけでOSを書けるのかについて、聞き方を 変えて何度も質問をした。彼はただただ、それが可能だということを信じなかった。そこで私は彼にもっと歴史について教えて やらなければならなかった(溜息)。はじめに、Ken ThompsonがPDP-7用にUNICSを全部自分だけで書いた。それが後にPDP-11に 移植されCで書き直されたときに、Dennis Ritchieがチームに加わったが、C言語を設計し、コンパイラを書き、I/Oシステムとデ バイスドライバを書くことを第一としていた。Kenがカーネルのほとんどすべてを自分で書いた。

1993年、いまはなきMark Williams社という会社が、Coherentというとても優秀なUNIXクローンを作って販売していた。製品 の大部分はウォータールー大学の元学生3人によるものだった:Dave Conroy、Randall Howard、そしてJohann Georgeだ。2年が かりの仕事だった。しかし彼らはカーネルだけではなくCコンパイラ、シェル、そしてUNIXユーティリティ全部を作ったのだ。こ れはカーネルだけを作るのに比べてはるかに大変なことだ。カーネルだけなら1人年かからなかっただろう。

1983年、Ric Holtが書籍を出版した。今では絶版だが、それはTUNISシステムというUNIXライクなシステムについてのものだっ た。このシステムが一からの書き直しであることは確かだった。なぜならTUNISは、concurrent Euclidという完全に新しい言語 で書かれていたからだ。

そしてDoug ComerがXINUを書いた。 UNIXクローンではないが、それに匹敵するシステムだ。

さらに、Gary Kildallが自身でCP/Mを書き、Tim PetersonがMS-DOSを書いた。1980年代初頭に現れたこれらのシステムは、 UNIXクローンには遠く及ばなかったが、個人によって書かれた実用的で人気のあるOSである。

Linusが始める前に、5人の人々あるいは少人数からなるグループが、それぞれ独自にUNIXカーネルかそれに相当するものを実 装していた。すなわち、Thompson、Coherent、Holt、Comer、そして私だ。これらはすべて完全に合法で、誰も何かを盗んだりは していない。この歴史を前提として考えると、Linux程度の複雑さを持ったシステムを一人の人間が実装することはできないとし て訴訟を起こすのは、かなり難しい。LinuxのオリジナルサイズはMINIXのV1.0とほぼ同じだ。

もちろん、人々が何かをなすのは先人の成果の上においてであるというのは、科学においては常に真実だ。Ken Thompsonでさ え、最初の一人ではないのだ。UNIX を書く前に、KenはMIT MULTICS(MULTiplexed Information and Computing Service)シス テムにかかわる仕事をしていた。事実、UNIXのオリジナルの名前はUNICSで、それはUNIplexed Information and Computing Service を指すBrian Kernighanのジョークだった。なぜならPDP-7版がサポート可能なユーザ数はたった一人──つまりKenだけ だったからである。機能削減されたMULTICSとしてのEUNUCHSについて、出来の悪い駄洒落がうんざりするほど交わされた後に、 名前はUNIX に変更された。しかしMULTICSでさえ最初のものではないのだ。それ以前に、前述のCTSSが存在した。それはMITの、 MULTICSと同じチームによって設計されたものだった。

このように、当然ながらLinusは何もないところに座っていて突然Linuxのソースコードをタイプしはじめたわけではない。彼 は私の著書を持っており、MINIXを動かしており、疑いの余地なく歴史について知っていた(私の本に載っているのだから)。し かしコードは彼のものだ。彼が設計をめちゃめちゃにしたことが、その証拠だ。MINIXはきれいなモジュール化されたマイクロカー ネルシステムで、そのメモリマネージャとファイルシステムはユーザ空間プロセスとして動作する。このおかげで、巨大なモノ リシックカーネルよりもクリーンで信頼性が高く、デバッグと保守がより容易なシステムになっている。わずかなパフォーマン スの低下はあるものの、4.77MHzの8088上でさえだいたい5秒以内に起動した(それに対してWindowsは、500倍高速なハードウェ ア上で起動に1分かかる)。商用で成功しているマイクロカーネルとしては、QNXがある。新規にファイルシステムとメモリマネー ジャを書くことは簡単だっただろうが、その代わりにLinusは、もろもろすべてを巨大なモノリシックカーネルとして書き直した。 しかもインラインアセンブリコード付きで :-( 。最初のバージョンのLinuxは、まるでタイムマシンだった。それは時代遅れの もので、彼が既に自分の机の上に持っていたシステムよりもひどかった。もちろん彼はまだ子供で分別がなかったのだが(彼が もっとしかるべき注意力を持って講義を受けていたならとは思うものの)、しかし開始地点として定めたものとは本質的に異な るシステムを作ったということは、それが新規設計であることの良い証明であるように思える。私は彼がUNIXをコピーできたと は思えない。彼にはUNIXのソースコードにアクセスする手段がなかった。例外はおそらくLionsの本だが、それに載っているのは Linuxにはさほど似ていない古いバージョンのUNIXだ。

私の結論は、Ken Brownは自分が何について話しているのかさっぱり分かっていないということだ。私はまた彼の方法論につ いて疑念を禁じ得ない。彼は私と話した後、大学のホールをうろついて、適当な学生をつかまえては長々と質問していた。一次 情報としてはいかがなものかと思うが。

私が知る、UNIXを書いた(書き直した)6人の人物は、すべて独自にそれを成し遂げ、誰一人として、何ひとつ、誰からも盗 んだりはしなかった。人々が30年の間、UNIXライクなシステムを構築しようとして失敗しつづけてきたというというBrownの考え は、明らかにでたらめ(patent nonsense)だ。6人の異なる人々が、それぞれ他とは独自にそれをやりとげたのだ。科学におい て、アイデアが誰のものであるかを明記するというのは重要なことであり、Linusは彼が本来そうして然るべきよりもはるかに不 十分にしか、それを行っていないと私は思う。ここでの本当の英雄は、KenとDennisだ。しかしLinusがいくらクレジットについ てだらしないからといって、LinusがLinuxを書かなかったと主張する理由にはならない。彼はCTSSを書かなかったし、MULTICSを 書かなかったし、UNIXもMINIXも書かなかったが、彼は確かにLinuxを書いたのだ。Brownは我々の多くに対して詫びてしかるべき だと私は考える。

Linusと私

読者のなかには、ここで私がLinusを弁護しているので奇妙に思う人もいることだろう。結局のところ、彼と私は数年前に、 かなり公の場で「討論」を行ったのだ。私のここでの第一の関心事は、真実を引き出そうとすることであって、ウェストバージ ニアの裏山から出てきたティーンエイジの女の子かなにかにすべての責任を負わせることではない。また、Linusと私は「敵同士」 などではない。私は彼に一度会ったが、彼は気だてが良くて友好的で頭のいい男のように見えた。私がただひとつだけ残念に思 うのは、彼がMINIXのマイクロカーネル技術に基づいてLinuxを開発しなかったことだ。Windowsが現在抱えている諸々のセキュリ ティ上の問題を見れば、巨大なモノリシックカーネルよりも(MINIXが持っているような)小さなマイクロカーネルのほうが、OS の土台としてより優れていることは、万人の目にますます明らかだ。LinuxがWindowsよりも攻撃の対象になることが少ないのは、 (1) 実際によりセキュアだからであるが、同時に、(2)攻撃者のほとんどは、Windowsを叩いたほうが見返りが大きいと考えるの で、Windowsのほうが単純により多くの攻撃を受ける。20年前と同じく、私はいまだに次のことを信じている。ソフトウェアをセ キュアで信頼性が高く高速にするための唯一の方法は、それを小さくすることだと。機能主義に屈してはならない。

ここまで読んだ読者には、時間を割いてくれたことに感謝する。このウェブページは、オリジナルの改変されていないバージョ ンを使うことを条件に、ミラーすることを許可する。

Andy Tanenbaum, 20 May 2004

Followup statement on Ken Brown's motivation written 21 May 2004

Back to my home page

This article was translated by Hisashi MORITA with permission from the author. Feedback on the translation are welcome.

    Changelog
  • 2004-08-08: Fixed typo (thanks to Akira YAMADA).
  • 2004-08-05: Permission obtained, put onto the web.
  • 2004-06-06: Draft.


If you spot a mistake, please e-mail the maintainer of this page.
Your browser does not fully support CSS. This may result in visual artifacts.