アンドリュー・タネンバウムとリーヌス・トーヴァルズの議論

アンドリュー・タネンバウムとリーナス・トーヴァルズの議論 (アンドリュー・タネンバウムとリーナス・トーヴァルズのぎろん) は、アンドリュー・タネンバウムとリーナス・トーバルズの間で交わされた、Linuxカーネルとカーネルアーキテクチャ一般に関する議論。

概要

アンドリュー・タネンバウムは、1992年にUsenet (ネットニュース) のニュースグループ comp.os.minix で、Linuxを批判する趣旨の投稿をして、この議論を始めた。
この投稿の中で、タネンバウムは、オペレーティングシステム (OS) のカーネルの設計方式として、マイクロカーネルはモノリシックカーネルより優れており、それゆえモノリシックカーネルを採用したLinuxは1992年において既に時代遅れになっていると、主張した。
デイヴィッド・S・ミラーやセオドア・ツォーなどの著名なハッカーたちも、この議論に参加した。
ニュースグループ (comp.os.minix) では、強い文章での投稿が交わされた。そのため、この議論は「フレーム戦争」として、広く人々に認識されるようになった。
すなわち、2つの陣営が対峙して敵対的なメッセージが飛び交うようになったのである。
2つの陣営とは、Linux陣営とMINIX陣営であり、言い換えると、モノリシックカーネルの信奉者たちの陣営とマイクロカーネルの信奉者たちの陣営であった。
そして、このような議論の構図が、その後に出版された多くの書籍で言及されることとなった。
トーヴァルズ自身もまた、この議論における彼の最初の投稿で、議論がこうした構図であると認めた。
トーヴァルズは、最初の投稿の中で、次のように述べている。
「 [タネンバウムの投稿という] 『餌を無視する』ことができればいいのですが ... 真剣に議論するべき時ですね。」
この議論は、2006年に再燃した。
再燃のきっかけは、同年にタネンバウムがIEEEの「コンピュータ」誌で「オペレーティングシステムの信頼性を高め、かつセキュアにすることが可能か?」という題のカバーストーリーを書いたことであった。
タネンバウム自身は、カーネル設計についての議論を再び始める文章は書かなかったと、述べている。
2006年の当時は、このタネンバウムのカバーストーリーと、コンピュータに関するニュースのウェブサイトであるスラッシュドットに存在した1992年の議論のアーカイブが、ともに存在する情況となった。
こうして、議論は再燃した。
トーヴァルズは、オンラインのフォーラムで、タネンバウムの主張に反論する投稿をした。
そして、コンピュータに関するニュースの複数のウェブサイトが、この議論を報道し始めた。
こうした情況を受けて、Jonathan Shapiro は、信頼性が高くかつセキュアであると実際に証明されたコンピュータシステムの多くは、マイクロカーネルに似た方式を採用していると、述べた。

背景

アンドリュー・タネンバウムは、MINIXの中心的な開発者であり、オランダのアムステルダム自由大学コンピュータ科学部の教授であり、オペレーティングシステム (OS) などの教科書の著者であった。
リーナス・トーヴァルズは、Linuxカーネルの中心的な開発者であり、フィンランドのヘルシンキ大学でコンピュータ科学を専攻する学生であった。
MINIXとLinuxは、どちらもUNIXに似たオペレーティングシステムである。
MINIXは、設計方式としてマイクロカーネルを採用している。
Linuxは、設計方式としてモノリシックカーネルを採用している。
comp.os.minix は、MINIXについて議論をするUsenet (ネットニュース) のニュースグループである。
トーヴァルズは、1991年10月はじめに Linux 0.02 をリリースした旨を comp.os.minix に投稿した。
その後Linuxはバージョンアップを重ね、1991年12月はじめには Linux 0.11 がリリースされた。

「Linuxは時代遅れだ」

この議論の発端は、1992年1月29日であったと記録されている。
この日にタネンバウムは、Linuxカーネルについての初めての批判をUsenet (ネットニュース) のニュースグループ comp.os.minix に投稿した。
この投稿では、モノリシックカーネルの設計方式はオペレーティングシステムにとっていかに有害でその能力を失わせるかを、述べていた。
タネンバウムは、この投稿に“Linux is obsolete” (「Linuxは時代遅れだ」) という題名をつけた。
タネンバウムは、この最初の投稿では、なぜ自分がマイクロカーネルの設計方式がモノリシックカーネルより優れていると感じているかについては、あまり詳細には説明しなかった。
しかしタネンバウムは、マイクロカーネルが移植性と強く関連していると述べ、Linuxカーネルとx86系列のプロセサとの関係が密接過ぎているためLinuxカーネルの移植性が損なわれていると主張している。
またタネンバウムは、1991年にモノリシックカーネルを作ることは、「1970年代への大いなる後退」であると、述べている。
タネンバウムによる批判がニュースグループに投稿されたとき、トーヴァルズはこの批判に対して直接に返信することができた。
半日後にトーヴァルズは実際に返信した。
トーヴァルズはこの返信で、MINIXには設計について固有の欠点があると主張した。
欠点の一つとして挙げたのは、ある特定の状況におけるマルチスレッディングの欠如である。
トーヴァルズは、「理論的および美的」な観点に立てばマイクロカーネルの設計がモノリシックカーネルより優れていると認識していると、述べた。
トーヴァルズはまた、自分が自由になる時間を使ってLinuxを開発し、Linuxを誰もが自由に無償で使えるように公開したことを、強調した。
なおMINIXは、この時点では誰もが自由に無償で使えるようにはなっていなかった。
さらにトーヴァルズは、特に Intel 80386 向けにLinuxを開発したと述べた。
それは単に、Intel 80386 アーキテクチャについてより深く学ぶことができるようにするための、自分の個人的なプロジェクトを行っていたからであった。
こうした事情からトーヴァルズは、Linuxはカーネル自体は移植性の面でMINIXより劣っていると述べたが、一方で移植性のあるアプリケーションプログラミングインタフェース (API、システムコール) がLinuxの設計原則であるとも述べた。
この設計原則に従うことで、Linuxの設計を簡潔にすることができたとしている。
このような理由から、トーヴァルズは「LinuxはMINIXより移植性が高い」と述べた。
トーヴァルズの返信に応じてタネンバウムは、MINIXのいくつかの制限は自分が教授であることに関係していると、述べた。
MINIXのシステムには、平均的な学生が使うような資源の少ないハードウェア上でも動作することができることという、要件がある。
タネンバウムは、Intel 8088 を基にしたコンピュータに言及した。
Intel 8088 を基にしたコンピュータは、ハードディスクを備えていない場合がある。
Linuxは、その当時は Intel 80386 に特化して構築されていた。
Intel 80386 は、Intel 8088 と比べて非常に性能が高くまた値段も高いプロセサであった。
こうした事情について、タネンバウムは次のように述べた。
「 [...] 約1年前の時点では、[MINIXには] 2つのバージョンがありました。
PC (360KB ディスケット) 向けのバージョンと、286/386 (1.2MB ディスケット) 向けのバージョンです。
PC向けのバージョンは、286/386 向けのバージョンと同じかあるいはその2倍売れていました。」
タネンバウムは、Linuxは自由に無償で使うことができるが、自分が受け持つ学生にとっては採用することができないだろうと、述べた。
なぜならタネンバウムの学生は、Linuxを動かすために必要とされるハードウェアを買うことができないであろうからである。
そしてMINIXについては、「ハードディスクを備えていない普通の 4.77 MHZ PC 」上で使うことができると、述べた。
これに対して Kevin Brown という Usenet のユーザが、タネンバウムはLinuxが386アーキテクチャに密に結びついていることについて論難するべきではないと、述べた。
なぜならLinuxは、オペレーティングシステムの設計についての知識が身につかないという事態を避けるために、意識的により良い選択をした結果だからである。
Brownは次のように述べた。
「 [...] Linuxにおける明確な設計面の目標は、386アーキテクチャに特有な複数の機能を活用することです。
それでは肝要なことは正確には何でしょうか?
設計面で異なる目標があれば、異なる設計をすることになるということです。」
Brownはまた、特に廉価なハードウェア向けにシステムを設計するということは、将来には移植性の問題につきあたるであろうとも、述べた。
Linuxがサポートしている新しいハードウェアをMINIXでは十分にサポートできない。
こうしたことからLinuxは、新しいハードウェアを実際に所有する人々にとっては良い選択肢となった。
こうした事実にもかかわらずタネンバウムは、x86アーキテクチャは将来には他のアーキテクチャの前に敗北するであろうから、自分はLinuxに関係する議論には深く関わる必要はないと、述べた。
次のように言及した。
「今から5年後には当然ながら情況は変わっていることでしょう。
5年後には誰もが自由なGNUを、200MIPSで64MBのSPARCstation-5 [ のコンピュータで ] 動かしていることでしょう。」
タネンバウムは、Linuxカーネルはハードウェアの進歩によっていずれ突然に廃れるだろうと述べた。
なぜならLinuxは、386アーキテクチャに非常に密接に結びついているからである。
このタネンバウムの主張についての詳細は、#外れた予言を参照。
トーヴァルズは、議論をここで終わらせようと試みた。
自分は、タネンバウムの最初の投稿に対して過剰に反応するべきではなかったと感じていることと、謝罪するための個人的な電子メールをタネンバウムに対して送るために執筆していることを、述べた。

影響

このような議論があったにもかかわらず、リーナス・トーヴァルズとアンドリュー・タネンバウムの仲は良好のようである。
トーヴァルズは、自分とタネンバウムに対して全く敵意をもっていないということを、人々に理解してほしいと思っている。
タネンバウムは、考え方や技術的な問題についての不一致は、確執として解釈するべきではないとの立場を、明確にしている。

外れた予言

この論点と初期の全ての議論は、オライリーメディアから1999年に出版された書籍 Open Sources: Voices from the Open Source Revolution (日本語訳『オープンソースソフトウェア― 彼らはいかにしてビジネススタンダードになったのか』) に収録されている。
この書籍ではこの議論を「オペレーティングシステムの設計について当時はどのように考えられていたか」を示す例であると言及している。
Intel 80386 プロセサは、1992年の議論の後に、最も普及したプロセサとなった。
そのとき、Intel 486 プロセサはハイエンドのコンピュータで使われており、また Intel 80286 プロセサは既に時代遅れになっており、World Wide Web は未だ広く使われるようにはなっていなかった。
タネンバウムによるLinuxに対する批判の一つは、x86系列のプロセサに密接に結びつき過ぎているということであった。
しかし2008年の時点では、x86系列のアーキテクチャのプロセサは、デスクトップコンピュータのプロセサとして世界で最も一般的に使われ続けている。
Linuxは、x86系列以外の数多くのプロセサアーキテクチャに移植されてきている。
Linuxが移植されたプロセサアーキテクチャとしては、DEC Alpha、SPARC、POWER/PowerPC、MIPS、680x0、ARM、IA-64、x64 などがある (この他にも多数のプロセサアーキテクチャに移植されている) 。
もう一つ、議論で繰り返し言及されてきたのは、LinuxやMINIXの代わりとして使うことができるシステムについてであった。
例えば、GNUと4.4BSDである。
タネンバウムは、議論の発端となった最初の投稿では、GNUを薦めていた。
GNUはLinuxと異なり、「現代的な」 (モダンな) システムであると述べたのであった。
タネンバウムは、2回目の投稿で次のように述べた。
「 [...] 5年後には誰もが自由なGNUを、200MIPSで64MBのSPARCstation-5 [ のコンピュータで ] 動かしていることでしょう。」
議論に参加した人々のうち複数の人々が、GNUはLinuxやMINIXの代わりとしてはふさわしくないと考えた。
Kevin Brown は、GNUをベーパーウェアと呼び、(GNUではなく) Linuxによりx86アーキテクチャから大きな恩恵を受けることができるであろうと述べた。
x86アーキテクチャは、この議論の後も一般的に使われ続けており、一般の人々が手に入れやすいアーキテクチャとなっている。
Linuxの初期の開発に貢献したセオドア・ツォーは、マイクロカーネルの方法からは恩恵を受けることができるであろう、しかし
「 [...] Linuxは手元にあります。
そしてGNUは手元にありません。
— そして複数の人々が [ GNU ] Hurd を長い期間をかけて開発し続けてきています。
それも、リーナスがLinuxを開発してきた期間よりもずっと長い期間をかけて。
」
トーヴァルズは、GNUの人々の努力に関心を払ってきたが、次のように述べている。
「もしGNUのカーネルが去年 (1991年) の春に完成していれば、わざわざ自分のプロジェクトを始めたりはしなかったでしょう。
しかしGNUのカーネルは去年の春には完成していませんでしたし、現在も完成していません。
」
4.4BSD-Lite は、USLとBSDiとの間の訴訟のために、2年間使うことができない状態だった。
この訴訟は、AT&Tの子会社である Unix System Laboratories (USL) が Berkeley Software Design (BSDi) を訴えたことによるものであった。
BSDiは、UNIXに関する知的財産権に直接に関係していた。
この訴訟のために、BSDから派生した自由なソフトウェアは、2年近くの間、BSDの法的な状態が疑わしい情況であったので、開発が遅くなってしまった。
Linuxにはこのような法的な曖昧さは存在しなかったため、Linuxに基づくシステムは広く支援を受けることができた。
USLとBSDiとの間で和解が交わされたのは、1994年1月のことであった。
その後1994年6月に4.4BSDがリリースされた。
なお4.4BSDの最後のリリースは1995年に行われたが、4.4BSDに基づいた複数の自由なバージョンがその後開発されてきている。
4.4BSDに基づいた自由なバージョンとしては、FreeBSD、NetBSD、OpenBSDなどがある。

"Samizdat" について

2004年3月23日、Alexis de Tocqueville Institution というシンクタンクの所長である Kenneth Brown が、タネンバウムにインタビューした。
このインタビューは、Kenneth Brown が著した Samizdat: And Other Issues Regarding the 'Source' of Open Source Code という書籍の出版に先立って行われたものであった。
その書籍には、LinuxはもともとはMINIXから不正にコピーして開発されたという趣旨の記述があった。
タネンバウムは、これに対して公に強い反論をして、トーヴァルズを擁護した。
その際に次のように述べた。
私は、いくつかの誤解を解くことと、また2つの誤りを正すことにより、この問題を終わらせたいと思っています。
まず、私はリーナスに対してまったく腹を立ててはいません。
本当です。
リーナスもまた、私に対して腹を立てていません。
私は、リーナスにより失墜させられたと感じている「手痛い敗北を喫した人間」などでは、ありません。
MINIXは私にとって、個人的な楽しみであり趣味のようなものであるに過ぎません。
私は教授です。
私は、学生に教え、研究をし、書籍を書き、カンファレンスに出席し、またその他に教授として行うことを行っています。
私は、自分の仕事が好きですし、自分が受け持つ学生たちが好きですし、自分が属する大学が好きです。
 [...] 
私がMINIXを書いたのは、自分が受け持つ学生たちにオペレーティングシステムを扱うという実践を通じた経験をしてほしかったからです。
AT&Tが、John Lions により著された書籍を使って教育することを禁じた後、私はUNIXに似たシステムを書くことを決めました。
学生たちが扱えるようにするためです。
 [...] 
私は、GNU/HURDや Berkeley UNIX に取って代わるものを開発しようとしていたわけではありません。
事実、私はこの旨をこれまで十分に繰り返し述べてきました。
私はただ、自分の学生たちや他の学生たちに、現代的な技術を使ってUNIXに似たシステムをどのようにして書くことができるかを、示したかっただけです。
他の多くの人々は、自由に使える製品水準のUNIXを声高に何度も強く望み、MINIXをそのようなシステムに書き換えたいと思いました。
私は、しばらくの間こうした渦の中に引きずり込まれていました。
しかしLinuxが出現すると、私は教授としての活動に戻ることができてほっとしました。
 [...] 
リーナスは、すばらしい活動を行っているようです。
そして私は、将来に彼が大きな成功を収めることを期待しています。
MINIXを書くことは私にとって楽しみではあるのですが、私は、自分がこれまで行ってきたことの中でMINIXが最も重要なこととは、実際は評価していません。
MINIXを書くことは、私にとって何にも勝る気晴らしです。
私がこれまで行ってきたことの中で最も重要なことは、非常に良い学生を数多く育ててきたことです。
とりわけPh.D.を取得した学生たちです。
Ph.D.を取得した学生たちの一覧が私のホームページにありますので、見てください。
彼らはいくつも大きな業績を残しています。
私は、自分が彼らの母親であるような思いで、彼らを誇りに思っています。
リーナスは、私の学生たちの中に含めることができるので、私は彼のことも誇りに思っています。
教授というものは、自分が受け持った学生たちが大きな名誉を手にするとき、それをすばらしいことだと思うものなのです。