Tanenbaum–Torvalds debate
The Tanenbaum–Torvalds debate was a debate between Andrew S. Tanenbaum and Linus Torvalds, regarding the Linux kernel and kernel architecture in general. Tanenbaum began the debate in 1992 on the Usenet discussion group comp.os.minix, arguing that microkernels are superior to monolithic kernels and therefore Linux was, even in 1992, obsolete.[1] Linux kernel developers Peter MacDonald, David S. Miller and Theodore Ts'o also joined the debate.
The debate has sometimes been considered a flame war.[2]
Contents
The debate
While the debate initially started out as relatively moderate, with both parties involved making only banal statements about kernel design, it would get progressively more detailed and sophisticated with every round of posts. Besides just kernel design, the debate branched into several other topics, such as which microprocessor architecture would win out over others in the future. Besides Tanenbaum and Torvalds, several other people joined the debate, including Peter MacDonald, an early Linux kernel developer and creator of one of the first distributions, Softlanding Linux System; David S. Miller, one of the core developers of the Linux kernel; and Theodore Ts'o, the first North American Linux kernel developer.
The first occurrence of this debate was recorded on January 29, 1992, when Tanenbaum first posted his criticism on the Linux kernel to comp.os.minix, noting how the monolithic design was detrimental to its abilities, in a post titled LINUX is obsolete.[1] While he initially did not go into great technical detail to explain why he felt that the microkernel design was better, he did suggest that it was mostly related to portability, arguing that the Linux kernel was too closely tied to the x86 line of processors to be of any use in the future, as this architecture would be superseded by then. To put things into perspective, he mentioned how writing a monolithic kernel in 1991 is "a giant step back into the 1970s".
Since the criticism was posted in a public newsgroup, Torvalds was able to respond to it directly. He did so a day later, arguing that MINIX has inherent design flaws (naming the lack of multithreading as a specific example), while acknowledging that he finds the microkernel kernel design to be superior "from a theoretical and aesthetical" point of view.[3] He also claimed that since he was developing the Linux kernel in his spare time and giving it away for free (Tanenbaum's MINIX was not free at that time), Tanenbaum should not object to his efforts. Furthermore, he mentioned how he developed Linux specifically for the Intel 80386 because it was partly intended as a learning exercise for Torvalds himself; while he conceded that this made the kernel itself less portable than MINIX, he asserted that this was an acceptable design principle, as it made the application programming interface simpler and more portable. For this reason, he stated, "linux is more portable than minix."
Following Linus' reply, Tanenbaum argued that the limitations of MINIX relate to him being a professor, stating the requirement for the system to be able to run on the rather limited hardware of the average student, which he noted was an Intel 8088-based computer, sometimes even without a hard drive.[4] Linux was, at that time, specifically built for the Intel 80386, a significantly more powerful (and expensive) processor. Tanenbaum also specifically states "[...] as of about 1 year ago, there were two versions [of MINIX], one for the PC (360K diskettes) and one for the 286/386 (1.2M). The PC version was outselling the 286/386 version by 2 to 1." He noted that even though Linux was free, it wouldn't be a viable choice for his students, as they would not be able to afford the expensive hardware required to run it, and that MINIX could be used on "a regular 4.77 MHz PC with no hard disk." To this, Kevin Brown, another user of the Usenet group, replied that Tanenbaum should not complain about Linux's ties to the 386 architecture, as it was the result of a conscious choice rather than lack of knowledge about operating system design, stating "[...] an explicit design goal of Linux was to take advantage of the special features of the 386 architecture. So what exactly is your point? Different design goals get you different designs."[5] He also stated that designing a system specifically for cheap hardware would cause it to have portability problems in the future. Despite the fact that MINIX did not fully support the newer hardware, Tanenbaum argued that since the x86 architecture would be outdone by other architecture designs in the future, he did not need to address the issue, noting "Of course 5 years from now that will be different, but 5 years from now everyone will be running free GNU on their 200 MIPS, 64M SPARCstation-5." He stated that the Linux kernel would eventually fall out of style as hardware progressed, due to it being so closely tied to the 386 architecture.[4]
Torvalds attempted to end the discussion at that point, stating that he felt he should not have overreacted to Tanenbaum's initial statements, and that he was composing a personal e-mail to him to apologize.[6] However, he would continue the debate at a later time.
Aftermath
Despite this debate, Torvalds and Tanenbaum appear to be on good speaking terms; Torvalds wants it understood that he holds no animosity towards Tanenbaum, and Tanenbaum underlines that disagreements about ideas or technical issues should not be interpreted as personal feuds.[2]
Early-1990s perspectives
Lua error in package.lua at line 80: module 'strict' not found.
When the issue and full initial debate were published in the O'Reilly Media book Open Sources: Voices from the Open Source Revolution in 1999, it stated that the debate exemplified "the way the world was thinking about OS design at the time".[2]
The 386 processor was then the most widespread chip "by several times", according to participant Kevin Brown, with the 486 used in high-end computers, the 286 almost obsolete, and the World Wide Web not yet widely used. One of Tanenbaum's arguments against Linux was that it was too closely tied to the x86 architecture and instruction set, which he regarded as a mistake.[1] Modern Linux now has a more portable codebase and has been ported to many other processor architectures.
Another recurring topic in the debate discusses alternatives to Linux and MINIX, such as GNU and 4.4BSD. Tanenbaum suggested the former in his first post, stating that unlike Linux, it was a "modern" system.[1] In his second post, he mentioned that "[...] 5 years from now everyone will be running free GNU on their 200 MIPS, 64M SPARCstation-5".[4] Several debaters disagreed that GNU was a suitable alternative. Kevin Brown called it vaporware, and stated that Linux would likely benefit from the x86 architecture which would continue to be common and become more accessible to a general audience. Theodore Ts'o, an early Linux contributor, said that while a microkernel approach would have benefits, "[...] Linux is here, and GNU isn't — and people have been working on Hurd for a lot longer than Linus has been working on Linux".[7] Torvalds, aware of GNU's efforts to create a kernel, stated "If the GNU kernel had been ready last spring, I'd not have bothered to even start my project: the fact is that it wasn't and still isn't."[8]
4.4BSD-Lite would not be available until two years later due to the USL v. BSDi lawsuit, filed by AT&T's subsidiary Unix System Laboratories against Berkeley Software Design, which pertained to the intellectual property related to UNIX. The lawsuit slowed development of the free-software descendants of BSD for nearly two years while their legal status was in question. As Linux did not have such legal ambiguity, systems based on it gained greater support. A settlement between USL v. BSDi was reached in January 1994, and 4.4BSD was released in June. (While the final release was in 1995, several free versions based on this version have been maintained since, including FreeBSD, OpenBSD and NetBSD.)
The Samizdat incident
On 23 March 2004, Kenneth Brown, president of the Alexis de Tocqueville Institution, interviewed Tanenbaum. This was a prelude to the pending publication of a book by Brown titled Samizdat: And Other Issues Regarding the 'Source' of Open Source Code. The book claims that Linux was initially illegally copied from MINIX. Tanenbaum published a strong rebuttal, defending Torvalds,[9] and stated at that time:
I would like to close by clearing up a few misconceptions and also correcting a couple of errors. First, I REALLY am not angry with Linus. HONEST. He's not angry with me either. I am not some kind of "sore loser" who feels he has been eclipsed by Linus. MINIX was only a kind of fun hobby for me. I am a professor. I teach and do research and write books and go to conferences and do things professors do. I like my job and my students and my university. [...] I wrote MINIX because I wanted my students to have hands-on experience playing with an operating system. After AT&T forbade teaching from John Lions' book, I decided to write a UNIX-like system for my students to play with. [...] I was not trying to replace GNU/HURD or Berkeley UNIX. Heaven knows, I have said this enough times. I just wanted to show my students and other students how you could write a UNIX-like system using modern technology. A lot of other people wanted a free production UNIX with lots of bells and whistles and wanted to convert MINIX into that. I was dragged along in the maelstrom for a while, but when Linux came along, I was actually relieved that I could go back to professoring. [...] Linus seems to be doing excellent work and I wish him much success in the future.
While writing MINIX was fun, I don't really regard it as the most important thing I have ever done. It was more of a distraction than anything else. The most important thing I have done is produce a number of incredibly good students, especially Ph.D. students. See my home page for the list. They have done great things. I am as proud as a mother hen. To the extent that Linus can be counted as my student, I'm proud of him, too. Professors like it when their students go on to greater glory.[10]
Continued dialog
This subject was revisited in 2006 after Tanenbaum wrote a cover story for Computer magazine titled "Can We Make Operating Systems Reliable and Secure?".[11] While Tanenbaum himself has mentioned that he did not write the article to renew the debate on kernel design,[12] the juxtaposition of the article and an archived copy of the 1992 debate on the technology site Slashdot caused the subject to be rekindled.[13] Torvalds posted a rebuttal of Tanenbaum's arguments via an online discussion forum,[14] and several technology news sites began reporting the issue.[15] This prompted Jonathan Shapiro to respond that most of the field-proven reliable and secure computer systems use a more microkernel-like approach.[16]
References
- ↑ 1.0 1.1 1.2 1.3 Lua error in package.lua at line 80: module 'strict' not found.
- ↑ 2.0 2.1 2.2 Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ 4.0 4.1 4.2 Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
External links
- Lua error in package.lua at line 80: module 'strict' not found.
- Lua error in package.lua at line 80: module 'strict' not found.
- Lua error in package.lua at line 80: module 'strict' not found.