塔能鲍姆-托瓦兹辩论

塔能鲍姆-托瓦兹辩论（），于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&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等研究的促发之下，出现了微内核架构。
微内核将核心功能模组化，划分成几个独立的行程，各自运行，这些行程被称为服务（service）。所有的服务行程，都运行在不同的位址空间。只有需要绝对特权的行程，才能在具特权的执行模式下运行，其余的行程则在使用者空间运行。这种架构提高了程式码的可移植性与系统的安全性，在学术界，一直得到很高的声誉。Minix采用微核心架构，反应了当时学术界的风潮。除了Minix之外，GNU计划发展的作业系统核心GNU Hurd，也朝向微核心架构来研发。但微内核架构，设计过于精巧，使得程式码研发的速度非常缓慢，系统效能长期无法提升。当时数个采用微内核架构的研究计划，都受此拖累，没有突破性的成果。
相较而言，Linux直接继承了Unix的传统，选择宏内核架构。在1992年发生的这场辩论，展示了两种架构的支持者，他们各别的想法。这场辩论也展示了软体工程师，在为软体专案选择架构，所可能出现的各种思考角度。
辩论过程.
虽然初步的辩论显得相对温和，当事人双方仅仅平淡了讨论了有关内核设计的话题。但随着每一轮的发帖和参与者的增加，辩论开始逐步变得详细和复杂，甚至跨足于内核设计之外的其它领域，如"哪种微处理器架构将在未来战胜其它架构"，但其中也包括了一些意气之争的言词辩论。除了塔能鲍姆和托瓦兹，Linux开发社群中一些著名骇客也加入辩论，包括彼得·麦唐纳，第一个Linux发行版的创建者；大卫·米勒，Linux内核的核心开发者之一；和曹子德，北美洲第一个Linux内核开发者。
“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硬件特性中受益。你明确的论点到底是什么？不同的目标自然会产生和你不同的设计。”
辩论结束.
托瓦兹在稍后放低姿态，希望能够停止这场口水战。他在论坛上承认他对于塔能鲍姆一开始文章中的内容反应过度，而且已经向塔能鲍姆教授寄出私人电子邮件以表示歉意.。虽然他仍继续回应了几篇文章，但都是针对技术方面的讨论。
在这场辩论结束之后，塔能鲍姆和托瓦兹皆表示他们之间没有因此而产生个人恩怨，塔能鲍姆表示，不应该因为他们两个人之间对于技术观点不同，就认为他们两人之间存在恶意对抗的情绪。
后续发展.
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&amp;T的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的贡献与成就，反驳抄袭的说法。在这份声明中，塔能鲍姆指出：
我希望通过澄清一些误解和错误来结束这件事。首先，我真的没有对托瓦兹发火。这是实话。他也并没有对我发火。我并不认为托瓦兹遮掩了我的才智，我不是那种怨天尤人的失败者。Minix仅仅是我的一个兴趣爱好。我是一位教授。我讲课、搞研究、写书、参加讨论会，我做着任何一位教授都会做的事情。我热爱我的职业，学生和大学。[……] 我编写 Minix，为的是希望我的学生拥有一次亲自动手研究操作系统的经历。在AT&amp;T禁止利用John Lions的书本讲课后，我才决定亲自动手编写一个类Unix系统让学生们摆弄。我并没有企图替代GNU/Hurd或者Berkeley Unix。天知道，我说这话的次数已经足够多了。我只是希望向我学生，以及其它学生们展示，如何通过现代的技术重新编写出一个类UNIX系统。不少其他人都希望拥有一个拥有琳琅满目特性的自由UNIX产品，并且希望让Minix变得如此。我曾一段时间陷入这种想法之中，但当Linux出世，我实际上对于能够做回教授的工作而感到欣慰。[……] 托瓦兹看起来做了一份十分出色的工作，我希望他能在未来取得更加显著的成就。
编写Minix固然有趣，但我并没有真正将其视作我所作的最重要的事情，反而更加使人有些分散精力。我所作最重要的事情是培养了一群非常出色的学生，特别是博士生。列表详见我的个人主页。他们完成了不少漂亮的事。我像一只会下蛋的母鸡一样自豪。广泛的说，托瓦兹也可以算作我的一个学生。我为他而骄傲。教授都对他们学生能成就更大辉煌感到欣喜。
再次论战.
2006年，塔能鲍姆在 《计算机》（Computer）杂志发表题为《我们能让操作系统可靠和安全吗？》（Can We Make Operating Systems Reliable and Secure?）的文章后，这个话题被再次提起。尽管塔能鲍姆本人提到，他并不是想借这篇文章重启内核设计的论战，但是这篇文章本身和Slashdot技术网站上附加的 1992 年论战的归档共同使战火重燃。
通过一个在线论坛，托瓦兹重新反驳了塔能鲍姆的论点，几个技术新闻网站随即开始对其进行报道。这使研究者乔纳森·夏皮罗（Jonathan Shapiro）回应称，大多数经过实际检验的安全可靠的计算机系统，都使用更近似于微内核的模式设计。