塔能鮑姆-托瓦茲辯論
塔能鮑姆-托瓦兹辯論(英語: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]. [email protected]. (原始内容存档于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: [email protected]. (原始内容存档于2013-06-11).
- ^ 7.0 7.1 A. S. Tanenbaum. LINUX is obsolete. Newsgroup: comp.os.minix. January 30, 1992 [2015-06-02]. Usenet: [email protected]. (原始内容存档于2013-05-30).
- ^ Kevin Brown. RE: LINUX is obsolete. Newsgroup: comp.os.minix. January 31, 1992 [2007-04-07]. Usenet: [email protected]. (原始内容存档于2013-05-11).
- ^ L. Torvalds. Apologies (was Re: LINUX is obsolete). Newsgroup: comp.os.minix. January 30, 1992 [2007-01-10]. Usenet: [email protected]. (原始内容存档于2013-06-14).
- ^ Theodore Y. Ts'o. Re: LINUX is obsolete. Newsgroup: comp.os.minix. January 31, 1992 [2007-05-11]. Usenet: [email protected]. (原始内容存档于2013-05-11).
- ^ L. Torvalds. Re: LINUX is obsolete. Newsgroup: comp.os.minix. January 29, 1992 [2015-06-02]. Usenet: [email protected]. (原始内容存档于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).