塔能鮑姆-托瓦茲辯論
塔能鮑姆-托瓦茲辯論(英語:Tanenbaum–Torvalds debate),於1992年在Usenet討論群組(新聞組)comp.os.minix[1]上發起的一場辯論,主角為Minix創作者安德魯·斯圖爾特·塔能鮑姆與Linux核心原始作者林納斯·托瓦茲,討論的主題在於作業系統內核架構的選擇。塔能鮑姆認為,以微內核架構設計的作業系統,在理論上,比整塊性核心架構更加優越,主張Linux應該以微內核架構來進行重新設計。但是林納斯·托瓦茲以開發實務上的觀點展開反擊,陳述Linux選擇宏內核架構進行開發的理由,並比較Minix與Linux的效能差異。稍後,在Linux社群中的一些著名黑客也加入討論,如彼得·麥唐納、大衛·米勒、曹子德。
這場辯論有時被視為僅是一場網絡論戰或口水戰,然而這場辯論影響了Linux核心與Minix的設計走向,展示了軟件工程師之間對於作業系統架構的不同思考角度,因此得到許多重視[2]。在辯論結束後,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
登載貼文[3],向社群釋出了他自行創作的作業系統內核完整原始碼,也就是日後的Linux。
肯·湯普遜及貝爾實驗室的工程師們,在研發Unix時,採用宏內核架構。在這個架構下,作業系統內核是一個單一的二進位執行檔,運行在核心空間中。肯·湯普遜選擇這個架構的原因,是鑑於其前身Multics的開發失敗經驗,使他決定選擇這種較為單純與直覺的架構,讓系統得到較好的效能。但隨着Unix的擴展以及中央處理器的快速發展,Unix在移植到新的平台時,遭遇到很大困難。學界中開始出現新的想法,在貝爾實驗室的後續計劃Plan 9與卡內基梅隆大學的Mach等研究的促發之下,出現了微內核架構。
微內核將核心功能模組化,劃分成幾個獨立的行程,各自運行,這些行程被稱為服務(service)。所有的服務行程,都運行在不同的地址空間。只有需要絕對特權的行程,才能在具特權的執行模式下運行,其餘的行程則在用戶空間運行。這種架構提高了程式碼的可移植性與系統的安全性,在學術界,一直得到很高的聲譽。Minix採用微核心架構,反應了當時學術界的風潮。除了Minix之外,GNU計劃發展的作業系統核心GNU Hurd,也朝向微核心架構來研發。但微內核架構,設計過於精巧,使得程式碼研發的速度非常緩慢,系統效能長期無法提升。當時數個採用微內核架構的研究計劃,都受此拖累,沒有突破性的成果。
相較而言,Linux直接繼承了Unix的傳統,選擇宏內核架構。在1992年發生的這場辯論,展示了兩種架構的支持者,他們各別的想法。這場辯論也展示了軟件工程師,在為軟件專案選擇架構,所可能出現的各種思考角度。
辯論過程
編輯雖然初步的辯論顯得相對溫和,當事人雙方僅僅平淡了討論了有關內核設計的話題。但隨着每一輪的發帖和參與者的增加,辯論開始逐步變得詳細和複雜,甚至跨足於內核設計之外的其它領域,如"哪種微處理器架構將在未來戰勝其它架構",但其中也包括了一些意氣之爭的言詞辯論[4]。除了塔能鮑姆和托瓦茲,Linux開發社群中一些著名黑客也加入辯論,包括彼得·麥唐納,第一個Linux發行版的建立者;大衛·米勒,Linux內核的核心開發者之一;和曹子德,北美洲第一個Linux內核開發者[5]。
「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設計不良,塔能鮑姆不能用「這只是興趣」來為來辯護。托瓦茲說,從哲學及美學的觀點出發,微核心的確是一個比較好的架構,[6]但是採用微核心架構的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的電腦,有時連硬碟都沒有[7];而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硬件特性中受益。你明確的論點到底是什麼?不同的目標自然會產生和你不同的設計。」[8]
辯論結束
編輯托瓦茲在稍後放低姿態,希望能夠停止這場口水戰。他在討論區上承認他對於塔能鮑姆一開始文章中的內容反應過度,而且已經向塔能鮑姆教授寄出私人電子郵件以表示歉意.[9]。雖然他仍繼續回應了幾篇文章,但都是針對技術方面的討論。
在這場辯論結束之後,塔能鮑姆和托瓦茲皆表示他們之間沒有因此而產生個人恩怨,塔能鮑姆表示,不應該因為他們兩個人之間對於技術觀點不同,就認為他們兩人之間存在惡意對抗的情緒。[2]
後續發展
編輯1990年代看法
編輯這個論題和最初的完整辯論被發表在歐萊禮媒體在1999年出版的《開源軟件:開源革命之聲》(Open Sources: Voices from the Open Source Revolution)書中的附錄,書中認為這是「那時世上人們思考作業系統設計的方式」的例子之一。[2]
根據辯論參與者凱文·布朗(Kevin Brown)的說法,386處理器之所以成為了當時大行其道的晶片,這是因那時486晶片主要使用在高端電腦中,286幾乎過時,而且萬維網還沒有廣泛使用。塔能鮑姆反對Linux的論據之一,是Linux過於依賴x86指令集,他本人事後將此視作錯誤。[1]現在Linux則已經具備可移植性良好的代碼庫,並且被移植到多種處理器架構上。
另一個在討論中反覆出現的話題,是Linux和Minix的替代品,比如GNU或者4.4BSD。塔能鮑姆的第一則貼文中,稱讚GNU,不同於Linux,是一個「現代」作業系統。[1]在他的第二則貼文中,他提到「5 年之後每個人都將在他們 200 MIPS 的 64M SPARC station-5上執行自由的GNU 系統」。[7]許多辯論者都不同意GNU是一個合適的替代品。凱文·布朗認為它就是個虛幻的霧件,相較而言,Linux更可能從x86平台中受益,成為一個常見而且通用的系統。早期Linux開發者曹子德說,微內核範式確實有不少優點,但Linux看得見摸得着;反觀GNU,無數人在Hurd花了比托瓦茲在Linux上多的多的時間,然而卻仍沒有完成。[10]托瓦茲對GNU的努力表示尊重,但也認為它的開發速度太慢,他說:「如果GNU內核早在去年春天完成了,我壓根不會開始我的專案 —— 但事實是它至今尚未完成。」[11]
4.4BSD-Lite由於AT&T的Unix系統實驗室與伯克利軟件公司的糾紛,導致Unix系統實驗室訴伯克利軟件公司案這樁官司纏身, 陷入UNIX知識產權歸屬的爭奪之中,而導致大大阻礙了BSD的開發行程,直到兩年之後,它們的法律爭議依然懸而未決。由於Linux並沒有法律爭議,基於它的系統都獲得了不少的支援。1994年一月,USL和BSDi簽訂了和解條約,4.4BSD最終於同年六月發佈(而最終版本在1995年發佈,許多基於它的自由衍生版由此延續至今,包括FreeBSD、OpenBSD和NetBSD)。
「出版物」事件
編輯2004年3月23日,肯尼斯·布朗(Kenneth Brown),亞歷西斯·托克維爾中心(Alexis de Tocqueville Institution)的主席,採訪了塔能鮑姆,這是為布朗即將出版的一本名為《異見出版物:關於開原始碼的「根源」問題》的書而做準備。此書聲稱Linux起初從Minix非法拷貝程式。塔能鮑姆發表了一份態度強烈的反駁聲明,以捍衛托瓦茲對Linux的貢獻與成就,反駁抄襲的說法[12]。在這份聲明中,塔能鮑姆指出:
我希望通過澄清一些誤解和錯誤來結束這件事。首先,我真的沒有對托瓦茲發火。這是實話。他也並沒有對我發火。我並不認為托瓦茲遮掩了我的才智,我不是那種怨天尤人的失敗者。Minix僅僅是我的一個興趣愛好。我是一位教授。我講課、搞研究、寫書、參加討論會,我做着任何一位教授都會做的事情。我熱愛我的職業,學生和大學。[……] 我編寫 Minix,為的是希望我的學生擁有一次親自動手研究作業系統的經歷。在AT&T禁止利用John Lions的書本講課後,我才決定親自動手編寫一個類Unix系統讓學生們擺弄。我並沒有企圖替代GNU/Hurd或者Berkeley Unix。天知道,我說這話的次數已經足夠多了。我只是希望向我學生,以及其它學生們展示,如何通過現代的技術重新編寫出一個類UNIX系統。不少其他人都希望擁有一個擁有琳琅滿目特性的自由UNIX產品,並且希望讓Minix變得如此。我曾一段時間陷入這種想法之中,但當Linux出世,我實際上對於能夠做回教授的工作而感到欣慰。[……] 托瓦茲看起來做了一份十分出色的工作,我希望他能在未來取得更加顯著的成就。
編寫Minix固然有趣,但我並沒有真正將其視作我所作的最重要的事情,反而更加使人有些分散精力。我所作最重要的事情是培養了一群非常出色的學生,特別是博士生。列表詳見我的個人首頁。他們完成了不少漂亮的事。我像一隻會下蛋的母雞一樣自豪。廣泛的說,托瓦茲也可以算作我的一個學生。我為他而驕傲。教授都對他們學生能成就更大輝煌感到欣喜。[13]
再次論戰
編輯2006年,塔能鮑姆在 《計算機》(Computer)雜誌發表題為《我們能讓作業系統可靠和安全嗎?》(Can We Make Operating Systems Reliable and Secure?)的文章後,這個話題被再次提起[14]。儘管塔能鮑姆本人提到,他並不是想借這篇文章重新啟動內核設計的論戰[15],但是這篇文章本身和Slashdot技術網站上附加的 1992 年論戰的歸檔[16]共同使戰火重燃。
通過一個線上討論區,托瓦茲重新反駁了塔能鮑姆的論點[17],幾個技術新聞網站隨即開始對其進行報道。[18]這使研究者喬納森·夏皮羅(Jonathan Shapiro)回應稱,大多數經過實際檢驗的安全可靠的電腦系統,都使用更近似於微內核的模式設計。[19]
參考資料
編輯- ^ 1.0 1.1 1.2 A. S. Tanenbaum. LINUX is obsolete. Newsgroup: comp.os.minix. January 29, 1992 [2015-06-02]. 12595@star.cs.vu.nl. (原始內容存檔於2013-05-26).
- ^ 2.0 2.1 2.2 DiBona, Chris; Sam Ockman, Mark Stone, Brian Behlendorf, Scott Bradner, Jim Hamerly, Kirk McKusick, Tim O'Reilly, Tom Paquin, Bruce Perens, Eric Raymond, Richard Stallman, Michael Tiemann, Linus Torvalds, Paul Vixie, Larry Wall, Bob Young. The Tanenbaum-Torvalds Debate. Open Sources: Voices from the Open Source Revolution. O'Reilly Media. January 1999 [2015-05-29]. ISBN 1-56592-582-3. (原始內容存檔於2014-09-21).
When Linus himself heard that we were including this, he wanted to make sure that the world understood that he holds no animus towards Tanenbaum and in fact would not have sanctioned its inclusion if we had not been able to convince him that it would show the way the world was thinking about OS design at the time.
- ^ What would you like to see most in minix?. Linus Benedict Torvalds. 1991-08-26 [2010-12-21]. (原始內容存檔於2019-10-18).
- ^ 如塔能鮑姆宣稱「很慶幸你不是我的學生,否則這種設計肯定不能得高分」,而托瓦茲則抨擊塔能鮑姆「你是個學者和教授,這就是你開脫那些Minix腦殘設計的最好藉口之一」。
- ^ 值得注意的是,一名叫做Ken Thompson的用戶也出現在討論中。然而,此人並非UNIX的創始者肯·湯普遜。
- ^ L. Torvalds. Re: LINUX is obsolete. Newsgroup: comp.os.minix. January 29, 1992 [2015-06-02]. Usenet: 1992Jan29.231426.20469@klaava.Helsinki.FI. (原始內容存檔於2013-06-11).
- ^ 7.0 7.1 A. S. Tanenbaum. LINUX is obsolete. Newsgroup: comp.os.minix. January 30, 1992 [2015-06-02]. Usenet: 12615@star.cs.vu.nl. (原始內容存檔於2013-05-30).
- ^ Kevin Brown. RE: LINUX is obsolete. Newsgroup: comp.os.minix. January 31, 1992 [2007-04-07]. Usenet: 1992Jan31.074347.1198@menudo.uh.edu. (原始內容存檔於2013-05-11).
- ^ L. Torvalds. Apologies (was Re: LINUX is obsolete). Newsgroup: comp.os.minix. January 30, 1992 [2007-01-10]. Usenet: 1992Jan30.153816.1901@klaava.Helsinki.FI. (原始內容存檔於2013-06-14).
- ^ Theodore Y. Ts'o. Re: LINUX is obsolete. Newsgroup: comp.os.minix. January 31, 1992 [2007-05-11]. Usenet: TYTSO.92Jan31164013@SOS.mit.edu. (原始內容存檔於2013-05-11).
- ^ L. Torvalds. Re: LINUX is obsolete. Newsgroup: comp.os.minix. January 29, 1992 [2015-06-02]. Usenet: 1992Jan29.231426.20469@klaava.Helsinki.FI. (原始內容存檔於2013-05-09).
- ^ Tanenbaum, Andrew S. Some Notes on the "Who wrote Linux" Kerfuffle, Release 1.5. [2008-05-21]. (原始內容存檔於2010-09-11).
- ^ Tanenbaum, Andrew S. Ken Brown's Motivation. [2007-12-24]. (原始內容存檔於2004-05-24).
- ^ Tanenbaum, A. S. Can We Make Operating Systems Reliable and Secure? (PDF). IEEE Computer Society. May 2006, 39 (5): 44–51 [2015-06-02]. doi:10.1109/MC.2006.156. (原始內容存檔 (PDF)於2017-08-09).
- ^ Tanenbaum, A. S. Tanenbaum-Torvalds Debate: Part II. Vrije Universiteit Amsterdam. May 2006 [2007-01-14]. (原始內容存檔於2015-08-05).
- ^ "bariswheel", "Hemos" & Slashdot contributors. Microkernel: The Comeback?. Slashdot. May 2006 [2007-01-14]. (原始內容存檔於2012-03-23).
- ^ Torvalds, L. Hybrid kernel, not NT. Real World Technologies. May 2006 [2015-06-02]. (原始內容存檔於2007-01-02).
- ^ diegocgteleline.es, ScuttleMonkey & Slashdot contributors. Torvalds on the Microkernel Debate. Slashdot. May 10, 2006 [2015-06-02]. (原始內容存檔於2012-03-23).
- ^ Jonathan Shapiro. Debunking Linus's Latest. coyotos.org. May 11, 2006 [2015-06-02]. (原始內容存檔於2016-09-22).