塔能鮑姆-託瓦茲辯論

塔能鮑姆-託瓦茲辯論comp.os.minix上發起的一場辯論，主角為Minix創作者安德魯·斯圖爾特·塔能鮑姆與Linux核心原始作者林納斯·託瓦茲，討論的主題在於作業系統核心架構的選擇。塔能鮑姆認為，以微核心架構設計的作業系統，在理論上，比宏核心架構更加優越，主張Linux應該以微核心架構來進行重新設計。但是林納斯·託瓦茲以開發實務上的觀點展開反擊，陳述Linux選擇單核心架構進行開發的理由，並比較Minix與Linux的效能差異。稍後，在Linux社群中的一些著名駭客也加入討論，如彼得·麥唐納、大衛·米勒、曹子德。這場辯論有時被視為僅是一場網路論戰或口水戰，然而這場辯論影響了Linux核心與Minix的設計走向，展示了軟體工程師之間對於作業系統架構的不同思考角度，因此得到許多重視。在辯論結束後，Linux社群並沒有因為這場辯論而改變作法，以微核心架構來重新設計Linux核心，但是在稍後改善了可移植性，擴充套件到x86之外的平臺，同時引進了許多微核心架構的設計想法來改進其程式碼，例如採用了可載入核心模組。塔能鮑姆教授也仍然堅持以微核心架構來設計Minix，在1997年與2004年分別發表了兩個新版本，完全不收費的釋出Minix，並改善了Minix經常被批評的效能問題。歷史背景.1969年，Unix在AT&amp;T的貝爾實驗室被研發出來，快速散佈到美國各大學，並衍生出許多變種，被稱為類UNIX，其中以加州柏克萊大學研發的BSD套件最為著名。1979年，Version 7 Unix發布，在此時，AT&amp;T開始意識到Unix的商業價值，開始研發商用版本。1982年，AT&amp;T釋出第一個商用版UNIX，UNIX System III。AT&amp;T聲稱自己擁有Unix的著作權，Unix的原始碼被當成商業秘密，不再對外發布。AT&amp;T不再授權大學可以免費使用UNIX，對使用Unix的公司及個人發起訴訟，引起一系列法律爭議。UNIX受到法律爭議影響，不再能自由散佈與使用。為了教學上的方便，塔能鮑姆模倣Version 7 Unix風格，自行創作了一個無版權爭議的作業系統，Minix，讓學生可以在大學中繼續學習發展作業系統，並閱讀到完整原始碼。這是一個小型的類Unix作業系統，原始碼附屬在塔能鮑姆寫作的教科書中，在1987年首度釋出。原始碼大小為三個磁碟片，原始碼完整公開，在購買到磁片後，讀者可以自行編譯與安裝，也可以自由閱讀與修改。林納斯·託瓦茲在芬蘭就讀大學時，其祖父贈送他一臺Intel 80386個人電腦。他不滿其附贈的DOS系統效能太差，在閱讀了塔能鮑姆教授的教科書後，他決定根據教科書上的內容，自行創作自己的作業系統。1991年，林納斯·託瓦茲在Usenet新聞組codice_1登載帖子，向社群釋出了他自行創作的作業系統核心完整原始碼，也就是日後的Linux。肯·湯普遜及貝爾實驗室的工程師們，在研發Unix時，採用單核心架構。在這個架構下，作業系統內核是一個單一的二進位執行檔，執行在核心空間中。肯·湯普遜選擇這個架構的原因，是鑑於其前身Multics的開發失敗經驗，使他決定選擇這種較為單純與直覺的架構，讓系統得到較好的效能。但隨著Unix的擴充套件以及中央處理器的快速發展，Unix在移植到新的平臺時，遭遇到很大困難。學界中開始出現新的想法，在貝爾實驗室的後續計畫Plan 9與卡內基梅隆大學的Mach等研究的促發之下，出現了微核心架構。微核心將核心功能模組化，劃分成幾個獨立的行程，各自執行，這些行程被稱為服務。所有的服務行程，都執行在不同的位址空間。只有需要絕對特權的行程，才能在具特權的執行模式下執行，其餘的行程則在使用者空間執行。這種架構提高了程式碼的可移植性與系統的安全性，在學術界，一直得到很高的聲譽。Minix採用微核心架構，反應了當時學術界的風潮。除了Minix之外，GNU計劃發展的作業系統核心GNU Hurd，也朝向微核心架構來研發。但微核心架構，設計過於精巧，使得程式碼研發的速度非常緩慢，系統效能長期無法提升。當時數個採用微核心架構的研究計劃，都受此拖累，沒有突破性的成果。相較而言，Linux直接繼承了Unix的傳統，選擇單核心架構。在1992年發生的這場辯論，展示了兩種架構的支持者，他們各別的想法。這場辯論也展示了軟體工程師，在為軟體專案選擇架構，所可能出現的各種思考角度。辯論過程.雖然初步的辯論顯得相對溫和，當事人雙方僅僅平淡了討論了有關核心設計的話題。但隨著每一輪的發帖和參與者的增加，辯論開始逐步變得詳細和複雜，甚至跨足於核心設計之外的其它領域，如"哪種微處理器架構將在未來戰勝其它架構"，但其中也包括了一些意氣之爭的言詞辯論。除了塔能鮑姆和託瓦茲，Linux開發社群中一些著名駭客也加入辯論，包括彼得·麥唐納，第一個Linux發行版的建立者；大衛·米勒，Linux核心的核心開發者之一；和曹子德，北美洲第一個Linux核心開發者。“Linux 是過時的”.第一條有關這場辯論的記錄，在1992年1月29日，塔能鮑姆在 comp.os.Minix 上發表了他的批評。在題為《Linux 是過時的》，現代的作業系統，應該像GNU Hurd一樣採用微核心架構。託瓦茲在一天之後反擊，他首先攻擊Minix在設計上有缺陷。Linux一開始針對Intel 80386架構來開發，一部份的理由是為了託瓦茲自己買的電腦就是80386，這正好可以讓他對80386架構瞭解更多。Linux一開始就是準備自己使用的，如果想要移植到別的平臺，程式碼都是開放的，想要的人可以自己做。對於託瓦茲對於可移植性的回應，塔能鮑姆辯稱到Minix系統的侷限性與他的教授身份有關 —— 系統的硬體需求必須足夠低，才能得以讓大多數學生普遍低配的機器上使用 —— 一臺基於Intel 8088的計算機，有時連硬碟都沒有；而Linux在這時，卻針對的是Intel 80386平臺，顯然是更加強大。PC版本銷量是286/386版本的兩倍”。他補充，雖然 Linux是免費的，但這並不能成為他學生的選擇，學生也負擔不起執行它所需昂貴硬體，而Minix在一臺“沒有硬碟的4.77 MHz PC”上就能使用。他同時表示專門為廉價的硬體設計作業系統，日後將導致可移植性方面的許多問題。不顧Minix無法完全支援386硬體的事實，塔能鮑姆辯稱，既然x86架構未來將被其它架構所取代，他並不需要去關心和解決這個問題，“當然，5年之後情況自然會有所不同，但至少每個人都將在他們200 MIPS的64M SPARC station-5上執行自由的GNU系統。”他說，因為處理器的進化速度太快，而Linux核心實在太依賴386架構，最終將會因為硬體架構的過時而失敗。Usenet上另一位使用者凱文·布朗，認為Linux選擇在386處理器平臺上開發，這是一個清醒的抉擇，而不是缺乏對作業系統設計知識所致的，塔能鮑姆不應該對於Linux繫結在386架構上而頗有微詞。他表示“Linux明確的設計目標就是從386硬體特性中受益。你明確的論點到底是什麼？不同的目標自然會產生和你不同的設計。”辯論結束.託瓦茲在稍後放低姿態，希望能夠停止這場口水戰。他在論壇上承認他對於塔能鮑姆一開始文章中的內容反應過度，而且已經向塔能鮑姆教授寄出私人電子郵件以表示歉意.。雖然他仍繼續回應了幾篇文章，但都是針對技術方面的討論。在這場辯論結束之後，塔能鮑姆和託瓦茲皆表示他們之間沒有因此而產生個人恩怨，塔能鮑姆表示，不應該因為他們兩個人之間對於技術觀點不同，就認為他們兩人之間存在惡意對抗的情緒。後續發展.1990年代看法.這個論題和最初的完整辯論被髮表在歐萊禮媒體在1999年出版的《開源軟體：開源革命之聲》書中的附錄，書中認為這是“那時世上人們思考作業系統設計的方式”的例子之一。根據辯論參與者凱文·布朗的說法，386處理器之所以成為了當時大行其道的晶片，這是因那時486晶片主要使用在高階計算機中，286幾乎過時，而且全球資訊網還沒有廣泛使用。塔能鮑姆反對Linux的論據之一，是Linux過於依賴x86指令集，他本人事後將此視作錯誤。現在Linux則已經具備可移植性良好的程式碼庫，並且被移植到多種處理器架構上。另一個在討論中反覆出現的話題，是Linux和Minix的替代品，比如GNU或者4.4BSD。塔能鮑姆的第一則貼文中，稱讚GNU，不同於Linux，是一個“現代”作業系統。在他的第二則貼文中，他提到“5 年之後每個人都將在他們 200 MIPS 的 64M SPARC station-5上執行自由的GNU 系統”。許多辯論者都不同意GNU是一個合適的替代品。凱文·布朗認為它就是個虛幻的霧件，相較而言，Linux更可能從x86平臺中受益，成為一個常見而且通用的系統。早期Linux開發者曹子德說，微核心正規化確實有不少優點，但Linux看得見摸得著；反觀GNU，無數人在Hurd花了比託瓦茲在Linux上多的多的時間，然而卻仍沒有完成。託瓦茲對GNU的努力表示尊重，但也認為它的開發速度太慢，他說：“如果GNU核心早在去年春天完成了，我壓根不會開始我的專案 —— 但事實是它至今尚未完成。”4.4BSD-Lite由於AT&amp;T的Unix系統實驗室與伯克利軟體公司的糾紛，導致這樁官司纏身， 陷入UNIX智慧財產權歸屬的爭奪之中，而導致大大阻礙了BSD的開發程序，直到兩年之後，它們的法律爭議依然懸而未決。由於Linux並沒有法律爭議，基於它的系統都獲得了不少的支援。1994年一月，USL和BSDi簽訂了和解條約，4.4BSD最終於同年六月釋出。“出版物”事件.2004年3月23日，肯尼斯·布朗的主席，採訪了塔能鮑姆，這是為布朗即將出版的一本名為《異見出版物：關於開原始碼的“根源”問題》的書而做準備。此書聲稱Linux起初從Minix非法複製程式。塔能鮑姆發表了一份態度強烈的反駁宣告，以捍衛託瓦茲對Linux的貢獻與成就，反駁抄襲的說法。在這份宣告中，塔能鮑姆指出：我希望透過澄清一些誤解和錯誤來結束這件事。首先，我真的沒有對託瓦茲發火。這是實話。他也並沒有對我發火。我並不認為託瓦茲遮掩了我的才智，我不是那種怨天尤人的失敗者。Minix僅僅是我的一個興趣愛好。我是一位教授。我講課、搞研究、寫書、參加討論會，我做著任何一位教授都會做的事情。我熱愛我的職業，學生和大學。[……] 我編寫 Minix，為的是希望我的學生擁有一次親自動手研究作業系統的經歷。在AT&amp;T禁止利用John Lions的書本講課後，我才決定親自動手編寫一個類Unix系統讓學生們擺弄。我並沒有企圖替代GNU/Hurd或者Berkeley Unix。天知道，我說這話的次數已經足夠多了。我只是希望向我學生，以及其它學生們展示，如何透過現代的技術重新編寫出一個類UNIX系統。不少其他人都希望擁有一個擁有琳琅滿目特性的自由UNIX產品，並且希望讓Minix變得如此。我曾一段時間陷入這種想法之中，但當Linux出世，我實際上對於能夠做回教授的工作而感到欣慰。[……] 託瓦茲看起來做了一份十分出色的工作，我希望他能在未來取得更加顯著的成就。編寫Minix固然有趣，但我並沒有真正將其視作我所作的最重要的事情，反而更加使人有些分散精力。我所作最重要的事情是培養了一群非常出色的學生，特別是博士生。列表詳見我的個人主頁。他們完成了不少漂亮的事。我像一隻會下蛋的母雞一樣自豪。廣泛的說，託瓦茲也可以算作我的一個學生。我為他而驕傲。教授都對他們學生能成就更大輝煌感到欣喜。再次論戰.2006年，塔能鮑姆在 《計算機》的文章後，這個話題被再次提起。儘管塔能鮑姆本人提到，他並不是想借這篇文章重啟核心設計的論戰，但是這篇文章本身和Slashdot技術網站上附加的 1992 年論戰的歸檔共同使戰火重燃。透過一個線上論壇，託瓦茲重新反駁了塔能鮑姆的論點，幾個技術新聞網站隨即開始對其進行報道。這使研究者喬納森·夏皮羅回應稱，大多數經過實際檢驗的安全可靠的計算機系統，都使用更近似於微核心的模式設計。