塔能鮑姆 - 託瓦茲辯論

塔能鮑姆 - 託瓦茲辯論（Tanenbaum–Torvalds debate），於 1992 年在 Usenet 討論群組（新聞組）comp.os.minix 上發起的一場辯論，主角為 Minix 創作者安德魯・斯圖爾特・塔能鮑姆與 Linux 核心原始作者林納斯・託瓦茲，討論的主題在於作業系統核心架構的選擇。塔能鮑姆認為，以微核心架構設計的作業系統，在理論上，比宏核心架構更加優越，主張 Linux 應該以微核心架構來進行重新設計。但是林納斯・託瓦茲以開發實務上的觀點展開反擊，陳述 Linux 選擇單核心架構進行開發的理由，並比較 Minix 與 Linux 的效能差異。稍後，在 Linux 社群中的一些著名駭客也加入討論，如彼得・麥唐納、大衛・米勒、曹子德。

這場辯論有時被視為僅是一場網路論戰或口水戰，然而這場辯論影響了 Linux 核心與 Minix 的設計走向，展示了軟體工程師之間對於作業系統架構的不同思考角度，因此得到許多重視。在辯論結束後，Linux 社群並沒有因為這場辯論而改變作法，以微核心架構來重新設計 Linux 核心，但是在稍後改善了可移植性，擴充套件到 x86 之外的平臺，同時引進了許多微核心架構的設計想法來改進其程式碼，例如採用了可載入核心模組。塔能鮑姆教授也仍然堅持以微核心架構來設計 Minix，在 1997 年與 2004 年分別發表了兩個新版本，完全不收費的釋出 Minix，並改善了 Minix 經常被批評的效能問題。

歷史背景

1969 年，Unix 在 AT&T 的貝爾實驗室被研發出來，快速散佈到美國各大學，並衍生出許多變種，被稱為類 UNIX，其中以加州柏克萊大學研發的 BSD 套件最為著名。1979 年，Version 7 Unix 發布，在此時，AT&T 開始意識到 Unix 的商業價值，開始研發商用版本。1982 年，AT&T 釋出第一個商用版 UNIX，UNIX System III。AT&T 聲稱自己擁有 Unix 的著作權，Unix 的原始碼被當成商業秘密，不再對外發布。AT&T 不再授權大學可以免費使用 UNIX，對使用 Unix 的公司及個人發起訴訟，引起一系列法律爭議。UNIX 受到法律爭議影響，不再能自由散佈與使用。

為了教學上的方便，塔能鮑姆模倣 Version 7 Unix 風格，自行創作了一個無版權爭議的作業系統，Minix，讓學生可以在大學中繼續學習發展作業系統，並閱讀到完整原始碼。這是一個小型的類 Unix 作業系統，原始碼附屬在塔能鮑姆寫作的教科書中，在 1987 年首度釋出。原始碼大小為三個磁碟片，原始碼完整公開，在購買到磁片後，讀者可以自行編譯與安裝，也可以自由閱讀與修改。

林納斯・託瓦茲在芬蘭就讀大學時，其祖父贈送他一臺 Intel 80386 個人電腦。他不滿其附贈的 DOS 系統效能太差，在閱讀了塔能鮑姆教授的教科書後，他決定根據教科書上的內容，自行創作自己的作業系統。1991 年，林納斯・託瓦茲在 Usenet 新聞組 comp.os.minix 登載帖子，向社群釋出了他自行創作的作業系統核心完整原始碼，也就是日後的 Linux。

肯・湯普遜及貝爾實驗室的工程師們，在研發 Unix 時，採用單核心架構。在這個架構下，作業系統內核是一個單一的二進位執行檔，執行在核心空間中。肯・湯普遜選擇這個架構的原因，是鑑於其前身 Multics 的開發失敗經驗，使他決定選擇這種較為單純與直覺的架構，讓系統得到較好的效能。但隨著 Unix 的擴充套件以及中央處理器的快速發展，Unix 在移植到新的平臺時，遭遇到很大困難。學界中開始出現新的想法，在貝爾實驗室的後續計畫 Plan 9 與卡內基梅隆大學的 Mach 等研究的促發之下，出現了微核心架構。

微核心將核心功能模組化，劃分成幾個獨立的行程，各自執行，這些行程被稱為服務（service）。所有的服務行程，都執行在不同的位址空間。只有需要絕對特權的行程，才能在具特權的執行模式下執行，其餘的行程則在使用者空間執行。這種架構提高了程式碼的可移植性與系統的安全性，在學術界，一直得到很高的聲譽。Minix 採用微核心架構，反應了當時學術界的風潮。除了 Minix 之外，GNU 計劃發展的作業系統核心 GNU Hurd，也朝向微核心架構來研發。但微核心架構，設計過於精巧，使得程式碼研發的速度非常緩慢，系統效能長期無法提升。當時數個採用微核心架構的研究計劃，都受此拖累，沒有突破性的成果。

相較而言，Linux 直接繼承了 Unix 的傳統，選擇單核心架構。在 1992 年發生的這場辯論，展示了兩種架構的支持者，他們各別的想法。這場辯論也展示了軟體工程師，在為軟體專案選擇架構，所可能出現的各種思考角度。

辯論過程

宏核心的核心空間完全執行在核心態

安德魯・斯圖爾特・塔能鮑姆博士 (在 comp.os.minix 上叫 'ast')

林納斯・託瓦茲

雖然初步的辯論顯得相對溫和，當事人雙方僅僅平淡了討論了有關核心設計的話題。但隨著每一輪的發帖和參與者的增加，辯論開始逐步變得詳細和複雜，甚至跨足於核心設計之外的其它領域，如 "哪種微處理器架構將在未來戰勝其它架構"，但其中也包括了一些意氣之爭的言詞辯論。除了塔能鮑姆和託瓦茲，Linux 開發社群中一些著名駭客也加入辯論，包括彼得・麥唐納，第一個 Linux 發行版的建立者；大衛・米勒，Linux 核心的核心開發者之一；和曹子德，北美洲第一個 Linux 核心開發者。

2.1 “Linux 是過時的”

第一條有關這場辯論的記錄，在 1992 年 1 月 29 日，塔能鮑姆在 comp.os.Minix 上發表了他的批評。在題為《Linux 是過時的》（Linux is obsolete）的帖子中，塔能鮑姆指出宏核心在整體設計上是有害的。雖然他最初並沒有加入高深的技術細節，來解釋他認為微核心更好的原因，但他也表明，這關乎可移植性，Linux 內核的耦合度太高，完全為 Intel 80386 處理器設計，但處理器架構的進化很快。不應該在某個特定架構上開發作業系統，所有的作業系統都應該具備可以被移植到其他處理器平臺的能力。他提到，在 1991 年仍然以單核心來設計作業系統，是 “回到 1970 年代的巨大退步”（a giant step back into the 1970s），現代的作業系統，應該像 GNU Hurd 一樣採用微核心架構。

託瓦茲在一天之後反擊，他首先攻擊 Minix 在設計上有缺陷（缺少多執行緒是一個主要例子）。託瓦茲說，他用自己私人的時間來開發，完全沒有獲利，免費將程式碼貢獻出去（當時塔能鮑姆的 Minix 原始碼，仍然要購買才能取得），因此，對於 Minix 設計不良，塔能鮑姆不能用「這只是興趣」來為來辯護。託瓦茲說，從哲學及美學的觀點出發，微核心的確是一個比較好的架構，但是採用微核心架構的 GNU Hurd 根本沒有如期被成功開發出來，所以他才要開發 Linux。託瓦茲強調，作業系統核心主要的功能都倚靠硬體特性，所以核心本身不需要過度具備可移植性，讓高階的軟體應用程式介面（API）具備可移植性才是更重要的。以 Linux 來跟 Minix 比較，移植應用程式到 Linux 上是更容易的。Linux 核心採用單核心架構，是因為它能夠簡化核心設計，這是一個權衡下的結果（An acceptable trade-off）。託瓦茲進一步說，可移植性是那些寫不出新程式的人才需要的（Portability is for people who cannot write new programs）。Linux 一開始針對 Intel 80386 架構來開發，一部份的理由是為了託瓦茲自己買的電腦就是 80386，這正好可以讓他對 80386 架構瞭解更多。Linux 一開始就是準備自己使用的，如果想要移植到別的平臺，程式碼都是開放的，想要的人可以自己做。

對於託瓦茲對於可移植性的回應，塔能鮑姆辯稱到 Minix 系統的侷限性與他的教授身份有關 —— 系統的硬體需求必須足夠低，才能得以讓大多數學生普遍低配的機器上使用 —— 一臺基於 Intel 8088 的計算機，有時連硬碟都沒有；而 Linux 在這時，卻針對的是 Intel 80386 平臺，顯然是更加強大（和昂貴）的處理器。塔能鮑姆同時明確表示，“在大概一年之前，就有兩個版本（的 Minix），其中一個是 PC 版（360k 軟盤），另一個是 286/386（1.2M 軟盤）。PC 版本銷量是 286/386 版本的兩倍”。他補充，雖然 Linux 是免費的，但這並不能成為他學生的選擇，學生也負擔不起執行它所需昂貴硬體，而 Minix 在一臺 “沒有硬碟的 4.77 MHz PC” 上就能使用。他同時表示專門為廉價的硬體設計作業系統，日後將導致可移植性方面的許多問題。不顧 Minix 無法完全支援 386 硬體的事實，塔能鮑姆辯稱，既然 x86 架構未來將被其它架構所取代，他並不需要去關心和解決這個問題，“當然，5 年之後情況自然會有所不同，但至少每個人都將在他們 200 MIPS 的 64M SPARC station-5 上執行自由的 GNU 系統。” 他說，因為處理器的進化速度太快，而 Linux 核心實在太依賴 386 架構，最終將會因為硬體架構的過時而失敗。

Usenet 上另一位使用者凱文・布朗（Kevin Brown），認為 Linux 選擇在 386 處理器平臺上開發，這是一個清醒的抉擇，而不是缺乏對作業系統設計知識所致的，塔能鮑姆不應該對於 Linux 繫結在 386 架構上而頗有微詞。他表示 “Linux 明確的設計目標就是從 386 硬體特性中受益。你明確的論點到底是什麼？不同的目標自然會產生和你不同的設計。”

2.2 辯論結束

託瓦茲在稍後放低姿態，希望能夠停止這場口水戰。他在論壇上承認他對於塔能鮑姆一開始文章中的內容反應過度，而且已經向塔能鮑姆教授寄出私人電子郵件以表示歉意.。雖然他仍繼續回應了幾篇文章，但都是針對技術方面的討論。

在這場辯論結束之後，塔能鮑姆和託瓦茲皆表示他們之間沒有因此而產生個人恩怨，塔能鮑姆表示，不應該因為他們兩個人之間對於技術觀點不同，就認為他們兩人之間存在惡意對抗的情緒。

後續發展

3.1 1990 年代看法

這個論題和最初的完整辯論被髮表在歐萊禮媒體在 1999 年出版的《開源軟體：開源革命之聲》（Open Sources: Voices from the Open Source Revolution）書中的附錄，書中認為這是 “那時世上人們思考作業系統設計的方式” 的例子之一。

根據辯論參與者凱文・布朗（Kevin Brown）的說法，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&T 的 Unix 系統實驗室與伯克利軟體公司的糾紛，導致這樁官司纏身， 陷入 UNIX 智慧財產權歸屬的爭奪之中，而導致大大阻礙了 BSD 的開發程序，直到兩年之後，它們的法律爭議依然懸而未決。由於 Linux 並沒有法律爭議，基於它的系統都獲得了不少的支援。1994 年一月，USL 和 BSDi 簽訂了和解條約，4.4BSD 最終於同年六月釋出（而最終版本在 1995 年釋出，許多基於它的自由衍生版由此延續至今，包括 FreeBSD、OpenBSD 和 NetBSD）。

3.2 “出版物” 事件

2004 年 3 月 23 日，肯尼斯・布朗（Kenneth Brown），亞歷西斯・托克維爾中心（Alexis de Tocqueville Institution）的主席，採訪了塔能鮑姆，這是為布朗即將出版的一本名為《異見出版物：關於開原始碼的 “根源” 問題》的書而做準備。此書聲稱 Linux 起初從 Minix 非法複製程式。塔能鮑姆發表了一份態度強烈的反駁宣告，以捍衛託瓦茲對 Linux 的貢獻與成就，反駁抄襲的說法。在這份宣告中，塔能鮑姆指出：

我希望透過澄清一些誤解和錯誤來結束這件事。首先，我真的沒有對託瓦茲發火。這是實話。他也並沒有對我發火。我並不認為託瓦茲遮掩了我的才智，我不是那種怨天尤人的失敗者。Minix 僅僅是我的一個興趣愛好。我是一位教授。我講課、搞研究、寫書、參加討論會，我做著任何一位教授都會做的事情。我熱愛我的職業，學生和大學。…… 我編寫 Minix，為的是希望我的學生擁有一次親自動手研究作業系統的經歷。在 AT&T 禁止利用 John Lions 的書本講課後，我才決定親自動手編寫一個類 Unix 系統讓學生們擺弄。我並沒有企圖替代 GNU/Hurd 或者 Berkeley Unix。天知道，我說這話的次數已經足夠多了。我只是希望向我學生，以及其它學生們展示，如何透過現代的技術重新編寫出一個類 UNIX 系統。不少其他人都希望擁有一個擁有琳琅滿目特性的自由 UNIX 產品，並且希望讓 Minix 變得如此。我曾一段時間陷入這種想法之中，但當 Linux 出世，我實際上對於能夠做回教授的工作而感到欣慰。…… 託瓦茲看起來做了一份十分出色的工作，我希望他能在未來取得更加顯著的成就。

編寫 Minix 固然有趣，但我並沒有真正將其視作我所作的最重要的事情，反而更加使人有些分散精力。我所作最重要的事情是培養了一群非常出色的學生，特別是博士生。列表詳見我的個人主頁。他們完成了不少漂亮的事。我像一隻會下蛋的母雞一樣自豪。廣泛的說，託瓦茲也可以算作我的一個學生。我為他而驕傲。教授都對他們學生能成就更大輝煌感到欣喜。

3.3 再次論戰

2006 年，塔能鮑姆在 《計算機》（Computer）雜誌發表題為《我們能讓作業系統可靠和安全嗎？》（Can We Make Operating Systems Reliable and Secure?）的文章後，這個話題被再次提起。儘管塔能鮑姆本人提到，他並不是想借這篇文章重啟核心設計的論戰，但是這篇文章本身和 Slashdot 技術網站上附加的 1992 年論戰的歸檔共同使戰火重燃。

透過一個線上論壇，託瓦茲重新反駁了塔能鮑姆的論點，幾個技術新聞網站隨即開始對其進行報道。這使研究者喬納森・夏皮羅（Jonathan Shapiro）回應稱，大多數經過實際檢驗的安全可靠的計算機系統，都使用更近似於微核心的模式設計。