Department of Computer Science
Rebuttal to Ken Brown
For those of you just tuning into this soap opera, here is a brief summary of the plot so far. Ken Brown, president of a Washington think tank called the Alexis de Tocqueville Institution has written a book claiming open source using GPL is a bad idea and that Linus Torvalds stole Linux from MINIX, which I wrote. Linus, the alleged stealer, responded. As the alleged stealee I also felt the need to respond. Now Ken Brown has reacted to my responses. I very much doubt that when he came to visit me, he was expecting me to (1) defend Linus in our interview and then (2) do it fairly publicly later.
I was planning to spend my Sunday afternoon doing something useful, but since Brown has directly challenged me in his posting cited above, I feel I should respond. I will do this in the form of commenting on his posting. His comments are set off typographically like this:
I have to give credit where credit is due. Brown got that one completely right.
***EVERY*** country has a patent office. The United States is not unique in this respect. Furthermore, many people think that patenting software is a terrible idea. The subject of software patents is a very controversial issue in Europe right now.
I can live with this. Professors are always on the lookout for new sources of research funding.
Excuse me? A Finnish student writes some software (in Finland) that a lot of people like and he is accused on sponging off U.S. corporations? And last time I checked, quite a few U.S. Corporations, such as IBM, seemed quite happy with Linux. And a very large number of U.S. corporations seem to be using the (open source) Apache web server. And even if open source weren't in the best interest of U.S. corporations, where is it written that all activities everywhere in the world must be done with the interests of U.S. corporations as their primary goal?
This statement is not grammatically, politically, or factually correct. Does he mean "Linus has Hansen's disease"? I hope not. But if he does, fortunately, it is highly treatable these days. If he means Linux is wasting away, the facts speak otherwise. If he means "Linux is very contagious" this is true, but a better wording could have been chosen.
If, say, HP puts free software in its printers, how does this reduce the ***value*** of their printers? It would reduce the cost a little, which in a competitive marketplace might encourage them to drop the price somewhat, but I don't see why having cheaper printers is such a bad thing.
This comment is actually true, but it holds for all software and all products. How does a commercial company with thousands of programmers know where all their code comes from? You might say: "The lawyers check each line of code to see if it is copyrighted." Sure. Maybe that is why there are so many lawyers. There is a lot of code to check.
A Brief History of Windows NT/2000/XP
Does Microsoft own Windows? Maybe HP does. Some history may be in order here. Windows 3.1, 95, 98, and ME were basically glorified shells running on top of 16-bit MS-DOS (which Microsoft didn't write, but bought from a company called Seattle Computer Products). In the 1980s, Microsoft realized that it would some day need a true 32-bit operating system. At about this time, David Cutler, one of the principal architects of the operating system for the DEC VAX, VMS, had just moved to Seattle to set up a development center to produce the successor to VMS. When top executives at DEC killed his project in 1988, Cutler decided to leave DEC and was quickly hired by nearby Microsoft to lead the team that produced Windows NT. Cutler took some of his key people with him. This was definitely a coup for Microsoft. Operating system designers of Cutler's quality are few and far between.
To make a long story short, Cutler and his team succeeded and the result was Windows NT. When the Windows 98 user interface was added and some small improvements made, it was renamed Windows 2000. A slightly modified version is now sold as Windows XP.
Not surprisingly, WNT looked a lot like VMS (just add one to each of the letters). After all, the same person was the chief architect of both of them. When a talented designer writes a 32-bit operating system and a few years later writes another 32-bit operating system, it is possible they might have some serious resemblances. I don't know if any code is the same. For details, see an article by Mark Russinovich. When DEC learned about WNT, they had some discussions with Microsoft and something in excess of $60 million was transferred from Redmond to Maynard to solve the problem. The case never went to court (probably because Microsoft wanted to get WNT out the door quickly and not get bogged down in years of litigation, even if they thought they would win). A few years later, DEC sued Intel for allegedly violating DEC's patents on the Alpha chip, although the case was settled out of court. By 1990, however, it was clear to everyone that the minicomputer era was over, despite the remark by DEC's president, Ken Olsen, "Nobody needs a computer in their [sic] house." By the mid 1990s, DEC may have been grasping at straws, threatening everyone in sight, just to survive. It didn't work and in 1998 DEC was bought by Compaq, which in turn was bought by Hewlett-Packard, which now owns the rights to VMS.
If Microsoft could not make sure its star programmer, who was known to have done similar work for a competing company, did not misuse some IP, how can they or any company make sure its thousands of programmers don't do something they shouldn't do? It is impossible. The problem of programmers misusing code is real but the problem is not unique to free software. And how can any company make sure its researchers, engineers, and other employees do not use techniques or processes patented by its competitors. It can't be done. But to say the problem of theft of IP is somehow greater for free software than for commercial software is completely unproven.
This quote is taken out of context. In it "that much code" refers to the current Linux operating system. Nobody has ever claimed Linus wrote every line of code in the current distribution." My point was that a decent programmer could easily have written the 10,000 lines of code in Linux 0.01 in a year.
Actually, we don't agree on this. I wasn't all that impressed with the monolithic design of Linux 0.01. I think I have made that point a couple of times already.
Linus used MINIX as his development platform. There is no dispute about that. He also used some ideas from MINIX. But MINIX wasn't original either. Here is a little bit of the history
Linux used ideas from MINIX
In science, all work is based on what came before it. Nothing unusual here. What Linus didn't do was steal the MINIX code. That has been well documented.
I'm pretty animated all the time. But I only get tense when people try to put words in my mouth. After half an hour of repeatedly answering the question "Could Linus have written the Linux kernel by himself?" in the affirmative, I was getting a bit irritated. Beginning psychoanalysts often take this for being conflicted. People who know me would probably confirm that I do not suffer fools gladly.
As I have said before, I wasn't working on it full time at all. I had a regular job and I read bedtime stories to my kids every evening. Ironically, the main character in these wonderful books by Sheila McCullagh was Roger Red-hat. Conspiracy theorists should go wild with this new information.
While I definitely encourage my students to think that professors are infallible, especially in the matter of grading exams, not all CS professors are top programmers. Of the professors in my department, there are many who can barely program at all. The fact that one or two professors are good programmers does not imply that students are necessarily bad programmers. Furthermore, the first version of Linux wasn't so great. I have made that point before as I recall.
Yes, I corrected myself. It was 6 man-years, not six real-time years. But in that time they wrote the complete operating system, a C compiler, and all the utilities. In his posting, Brown says the GNU C compiler is now 110,000 lines of code. Maybe the Coherent compiler was half that, or 60,000 lines of code. The MINIX utilities were about 30,000 lines of code and covered about the same ground as Coherent did. Add a 10,000 line kernel to this and it looks like the three Coherent programmers wrote 100,000 lines of code in 6 man-years. That is a productivity of 16,000 lines per man-year. In that light I don't see why it is plausible for Canadian students to produce 16,000 lines a year but not plausible for Finnish students to produce 10,000 lines a year. It is just as cold in Finland as in Canada so programmers are never tempted to go outside.
Can One Person Write a Kernel?
Ken Thompson was a young programmer who worked on MULTICS. He wasn't one of the designers. Dennis Ritchie did not write any of the MULTICS code, although he had a part-time job at MIT writing some documentation on the MULTICS file system while he was a graduate student at Harvard. To say they were exceptionally familiar with MULTICS suggests that both of them knew the kernel inside and out, which is not true. Ken wrote the first version of UNICS by himself in assembly code on a PDP-7. I think it took less than a year. He did not have Lions' book available since it was not going to be written for another decade or so. He just sat down at his terminal, probably an ASR-33, and started typing. Dennis was not involved in the first version at all. Linux 0.01 was not 32,000 lines of code. It was just under 10,000 lines.
In my earlier posting, I pointed out almost half a dozen OS kernels written in around a man-year. Most of them were not UNIX licensees. I even forgot one--IDRIS--written by Bill Plauger. I think Linus' writing Linux in C on a PC with at least 64 KB was easier than Ken's writing UNICS in assembler on a 4K PDP-7. Ken's experience with MULTICS (which initially failed to boot because it didn't fit in the 256K memory of the large mainframe it was written for) didn't help much in writing assembly code for a tiny minicomputer. In short, Linus' writing Linux for the PC is not so different from Ken's writing UNICs for the PDP-7. Ken had a bit more experience, but the use of assembler and the tiny memory made the job harder. I find the argument that something can't be done because the half-dozen people who already did it were more experienced than the next one pretty strange. Doing anything is easier once someone else has shown that it can be done.
Maybe because everyone familiar with the facts, except Ken Brown, came to the same conclusion? How come nobody is challenging the fact that Dennis designed the C language and wrote the first C compiler all by himself? That was probably as hard as writing a kernel.
First, Linux 0.01 does not contain any MINIX code, as Alexey Toptygin's code comparison shows. Second, even if it had, there was no prohibition in using MINIX code for noncommercial purposes, even in the beginning. I find it dishonest in the extreme for Brown to have hired Toptygin to compare the Linux and MINIX code, get a report saying they were completely different, and then merrily continue claiming Linux was based on MINIX. I don't know if Brown used MS-Word to write his book, but saying Linux is based on MINIX is like saying Brown's book is based on MS-Word.
Follow Up With Torvalds
BEFORE stating that Brown did not talk to Linus, I asked Linus if Brown had interviewed him. Here is an excerpt from his e-mail to me:
AST: Did Brown come visit you?Linus: Nope. I can't even find any emails in my archives, so unless he used some other name or it got marked as spam and deleted, he never even tried to approach me.
At the very least, Brown didn't try very hard. During the past couple of weeks, reporters from all over the place have managed to locate me for interviews. Surely it would not have been that hard for Brown to contact Linus about something this incendiary.
The Truth Finally Emerges
Score another point for Ken Brown. We have this great masters program in parallel and distributed systems...
I was on the debating team in high school. I guess I am getting rusty.
All in all, Brown's only argument is that he, personally, doesn't believe a 21-year-old kid could have written an operating system kernel in a year, despite the fact that half a dozen other people had done the same thing earlier and the code Linus wrote wasn't all that great initially. And faced with a whole bunch of people telling him otherwise and the consultant he hired to examine the code saying the code is completely different from MINIX, Brown just ignores all the facts and persists in his belief. I'll bet he dismisses the widely reported claim that Mozart wrote three symphonies and performed for the King of England when he was nine on the grounds that 9-year-olds don't normally do this sort of thing.
Andy Tanenbaum, 6 June 2004