Quem escreveu o Linux
Colaboração: Rubens Queiroz de Almeida
Data de Publicação: 09 de Junho de 2004
O texto que se segue, em inglês, foi escrito por Andy Tanenbaum,
e diz respeito ao infame artigo, escrito por encomenda, onde
se tenta defender que Linus Torvalds não escreveu o Linux.
Parece que tem gente ficando desesperada, para recorrer a estratégias
tão primárias como este artigo. Este texto bem demonstra este fato.
O artigo original encontra-se em http://www.cs.vu.nl/~ast/brown/
The history of UNIX and its various children and grandchildren has
been in the news recently as a result of a book from the Alexis de
Tocqueville Institution. Since I was involved in part of this history,
I feel I have an obligation to set the record straight and correct
some extremely serious errors. But first some background information.
Ken Brown, President of the Alexis de Tocqueville Institution,
contacted me in early March. He said he was writing a book on the
history of UNIX and would like to interview me. Since I have written
15 books and have been involved in the history of UNIX in several
ways, I said I was willing to help out. I have been interviewed by
many people for many reasons over the years, and have been on Dutch
and US TV and radio and in various newspapers and magazines, so I
didn't think too much about it.
Brown flew over to Amsterdam to interview me on 23 March 2004.
Apparently I was the only reason for his coming to Europe. The
interview got off to a shaky start, roughly paraphrased as follows:
— AST: "What's the Alexis de Tocqueville Institution?"
— KB: We do public policy work
— AST: A think tank, like the Rand Corporation?
— KB: Sort of
— AST: What does it do?
— KB: Issue reports and books
— AST: Who funds it?
— KB: We have multiple funding sources
— AST: Is SCO one of them? Is this about the SCO lawsuit?
— KB: We have multiple funding sources
— AST: Is Microsoft one of them?
— KB: We have multiple funding sources
He was extremely evasive about why he was there and who was funding
him. He just kept saying he was just writing a book about the history
of UNIX. I asked him what he thought of Peter Salus' book, A
Quarter Century of UNIX. He'd never heard of it! I mean, if you are
writing a book on the history of UNIX and flying 3000 miles to
interview some guy about the subject, wouldn't it make sense to at
least go to amazon.com and type "history unix" in the search box, in
which case Salus' book is the first hit? For $28 (and free shipping if
you play your cards right) you could learn an awful lot about the
material and not get any jet lag. As I soon learned, Brown is not the
sharpest knife in the drawer, but I was already suspicious. As a
long-time author, I know it makes sense to at least be aware of what
the competition is. He didn't bother.
UNIX and Me
I didn't think it odd that Brown would want to interview me about the
history of UNIX. There are worse people to ask. In the late 1970s and
early 1980s, I spent several summers in the UNIX group (Dept. 1127) at
Bell Labs. I knew Ken Thompson, Dennis Ritchie, and the rest of the
people involved in the development of UNIX. I have stayed at Rob
Pike's house and Al Aho's house for extended periods of time. Dennis
Ritchie, Steve Johnson, and Peter Weinberger, among others have stayed
at my house in Amsterdam. Three of my Ph.D. students have worked in
the UNIX group at Bell Labs and one of them is a permanent staff
Oddly enough, when I was at Bell Labs, my interest was not operating
systems, although I had written one and published a paper about it
(see "Software - Practice & Experience," vol. 2, pp. 109-119, 1973).
My interest then was compilers, since I was the chief designer of the
Amsterdam Compiler Kit (see Commun. of the ACM, vol. 26, pp. 654-660,
Sept. 1983.). I spent some time there discussing compilers with Steve
Johnson, networking with Greg Chesson, writing tools with Lorinda
Cherry, and book authoring with Brian Kernighan, among many others. I
also became friends with the other "foreigner," there, Bjarne
Stroustrup, who would later go on to design and implement C++.
In short, although I had nothing to do with the development of the
original UNIX, I knew all the people involved and much of the history
quite well. Furthermore, my contact with the UNIX group at Bell Labs
was not a secret; I even thanked them all for having me as a summer
visitor in the preface to the first edition of my book Computer
Networks. Amazingly, Brown knew nothing about any of this. He didn't
do his homework before embarking on his little project
MINIX and Me
Years later, I was teaching a course on operating systems and using
John Lions' book on UNIX Version 6. When AT&T decided to forbid the
teaching of the UNIX internals, I decided to write my own version of
UNIX, free of all AT&T code and restrictions, so I could teach from
it. My inspiration was not my time at Bell Labs, although the
knowledge that one person could write a UNIX-like operating system
(Ken Thompson wrote UNICS on a PDP-7) told me it could be done. My
real inspiration was an off-hand remark by Butler Lampson in an
operating systems course I took from him when I was a Ph.D. student at
Berkeley. Lampson had just finished describing the pioneering CTSS
operating system and said, in his inimitable way: "Is there anybody
here who couldn't write CTSS in a month?" Nobody raised his hand. I
concluded that you'd have to be real dumb not to be able to write an
operating system in a month. The paper cited above is an operating
system I wrote at Berkeley with the help of Bill Benson. It took a lot
more than a month, but I am not as smart as Butler. Nobody is.
I set out to write a minimal UNIX clone, MINIX, and did it alone.
The code was 100% free of AT&T's intellectual property. The full
source code was published in 1987 as the appendix to a book,
Operating Systems: Design and Implementation, which later went
into a second edition co-authored with Al Woodhull. MINIX 2.0 was even
POSIX-conformant. Both editions contained hundreds of pages of text
describing the code in great detail. A box of 10 floppy disks
containing all the binaries and source code was available separately
from Prentice Hall for $69.
While this was not free software in the sense of "free beer" it was
free software in the sense of "free speech" since all the source code
was available for only slightly more than the manufacturing cost. But
even "free speech" is not completely "free"--think about slander,
yelling "fire" in a crowded theater, etc. Also Remember (if you are
old enough) that by 1987, a university educational license for UNIX
cost $300, a commercial license for a university cost $28,000, and a
commercial license for a company cost a lot more. For the first time,
MINIX brought the cost of "UNIX-like" source code down to something a
student could afford. Prentice Hall wasn't really interested in
selling software. They were interested in selling books, so there was
a fairly liberal policy on copying MINIX, but if a company wanted to
sell it to make big bucks, PH wanted a royalty. Hence the PH lawyers
equipped MINIX with a lot of boilerplate, but there was never any
intention of really enforcing this against universities or students.
Using the Internet for distributing that much code was not feasible in
1987, even for people with a high-speed (i.e., 1200 bps) modem. When
distribution via the Internet became feasible, I convinced Prentice
Hall to drop its (extremely modest) commercial ambitions and they gave
me permission to put the source on my website for free downloading,
where it still is.
Within a couple of months of its release, MINIX became something of a
cult item, with its own USENET newsgroup, comp.os.minix, with 40,000
subscribers. Many people added new utility programs and improved the
kernel in numerous ways, but the original kernel was just the work of
one person--me. Many people started pestering me about improving it.
In addition to the many messages in the USENET newsgroup, I was
getting 200 e-mails a day (at a time when only the chosen few had
e-mail at all) saying things like: "I need pseudoterminals and I need
them by Friday." My answer was generally quick and to the point: "No."
The reason for my frequent "no" was that everyone was trying to turn
MINIX into a production-quality UNIX system and I didn't want it to
get so complicated that it would become useless for my purpose,
namely, teaching it to students. I also expected that the niche for a
free production-quality UNIX system would be filled by either GNU or
Berkeley UNIX shortly, so I wasn't really aiming at that. As it turned
out, the GNU OS sort of went nowhere (although many UNIX utilities
were written) and Berkeley UNIX got tied up in a lawsuit when its
designers formed a company, BSDI, to sell it and they chose 1-800-ITS
UNIX as their phone number. AT&T felt this constituted copyright
infringement and sued them. It took a couple of years for this to get
resolved. This delay in getting free BSD out there gave Linux the
breathing space it needed to catch on. If it hadn't been for the
lawsuit, undoubtedly BSD would have filled the niche for a powerful,
free UNIX clone as it was already a stable, mature system with a large
Ken Brown and Me
Now Ken Brown shows up and begins asking questions. I quickly
determined that he didn't know a thing about the history of UNIX, had
never heard of the Salus book, and knew nothing about BSD and the AT&T
lawsuit. I started to tell him the history, but he stopped me and said
he was more interested in the legal aspects. I said: "Oh you mean
about Dennis Ritchie's patent number 4135240 on the setuid bit?" Then
I added:"That's not a problem. Bell Labs dedicated the patent." That's
when I discovered that (1) he had never heard of the patent, (2) did
not know what it meant to dedicate a patent (i.e., put it in the
public domain), and (3) really did not know a thing about intellectual
property law. He was confused about patents, copyrights, and
trademarks. Gratuitously, I asked if he was a lawyer, but it was
obvious he was not and he admitted it. At this point I was still
thinking he might be a spy from SCO, but if he was, SCO was not
getting its money's worth.
He wanted to go on about the ownership issue, but he was also trying
to avoid telling me what his real purpose was, so he didn't phrase his
questions very well. Finally he asked me if I thought Linus wrote
Linux. I said that to the best of my knowledge, Linus wrote the whole
kernel himself, but after it was released, other people began
improving the kernel, which was very primitive initially, and adding
new software to the system--essentially the same development model as
MINIX. Then he began to focus on this, with questions like: "Didn't he
steal pieces of MINIX without permission." I told him that MINIX had
clearly had a huge influence on Linux in many ways, from the layout of
the file system to the names in the source tree, but I didn't think
Linus had used any of my code. Linus also used MINIX as his
development platform initially, but there was nothing wrong with that.
He asked if I objected to that and I said no, I didn't, people were
free to use it as they wished for noncommercial purposes. Later MINIX
was released under the Berkeley license, which freed it up for all
purposes. It is still in surprisingly wide use, both for education and
in the Third World, where millions of people are happy as a clam to
have an old castoff 1-MB 386, on which MINIX runs just fine. The MINIX
home page cited above still gets more than 1000 hits a week.
Finally, Brown began to focus sharply. He kept asking, in different
forms, how one person could write an operating system all by himself.
He simply didn't believe that was possible. So I had to give him more
history, sigh. To start with, Ken Thompson wrote UNICS for the PDP-7
all by himself. When it was later moved to the PDP-11 and rewritten in
C, Dennis Ritchie joined the team, but primarily focused on designing
the C language, writing the C compiler, and writing the I/O system and
device drivers. Ken wrote nearly all of the kernel himself.
In 1983, a now-defunct company named the Mark Williams company
produced and sold a very good UNIX clone called Coherent. Most of the
work was done by three ex-students from the University of Waterloo:
Dave Conroy, Randall Howard, and Johann George. It took them two
years. But they produced not only the kernel, but the C compiler,
shell, and ALL the UNIX utilities. This is far more work than just
making a kernel. It is likely that the kernel took less than a
In 1983, Ric Holt published a book, now out of print, on the TUNIS
system, a UNIX-like system. This was certainly a rewrite since TUNIS
was written in a completely new language, concurrent Euclid.
Then Doug Comer wrote XINU. While also not a UNIX clone, it was a
In addition, Gary Kildall wrote CP/M by himself and Tim Paterson wrote
MS-DOS. While these systems from the early 1980s were not even close
to being UNIX-clones, they were substantial and popular operating
systems written by individuals.
By the time Linus started, five people or small teams had
independently implemented the UNIX kernel or something approximating
it, namely, Thompson, Coherent, Holt, Comer, and me. All of this was
perfectly legal and nobody stole anything. Given this history, it is
pretty hard to make a case that one person can't implement a system of
the complexity of Linux, whose original size was about the same as
V1.0 of MINIX.
Of course it is always true in science that people build upon the work
of their predecessors. Even Ken Thompson wasn't the first. Before
writing UNIX, Ken had worked on the MIT MULTICS (MULTiplexed
Information and Computing Service) system. In fact, the original name
of UNIX was UNICS, a joke made by Brian Kernighan standing for the
UNIplexed Information and Computing Service, since the PDP-7 version
could support only one user--Ken. After too many bad puns about
EUNUCHS being a castrated MULTICS, the name was changed to UNIX. But
even MULTICS wasn't first. Before it was the above-mentioned CTSS,
designed by the same team at MIT.
Thus, of course, Linus didn't sit down in a vacuum and suddenly type
in the Linux source code. He had my book, was running MINIX, and
undoubtedly knew the history (since it is in my book). But the code
was his. The proof of this is that he messed the design up. MINIX is a
nice, modular microkernel system, with the memory manager and file
system running as user-space processes. This makes the system cleaner
and more reliable than a big monolithic kernel and easier to debug and
maintain, at a small price in performance, although even on a 4.77 MHz
8088 it booted in maybe 5 seconds (vs. a minute for Windows on
hardware 500 times faster). An example of commercially successful
microkernel is QNX. Instead of writing a new file system and a new
memory manager, which would have been easy, Linus rewrote the whole
thing as a big monolithic kernel, complete with inline assembly code
:-( . The first version of Linux was like a time machine. It went back
to a system worse than what he already had on his desk. Of course, he
was just a kid and didn't know better (although if he had paid better
attention in class he should have), but producing a system that was
fundamentally different from the base he started with seems pretty
good proof that it was a redesign. I don't think he could have copied
UNIX because he didn't have access to the UNIX source code, except
maybe John Lions' book, which is about an earlier version of UNIX that
does not resemble Linux so much.
My conclusion is that Ken Brown doesn't have a clue what he is talking
about. I also have grave questions about his methodology. After he
talked to me, he prowled the university halls buttonholing random
students and asking them questions. Not exactly primary sources.
The six people I know of who (re)wrote UNIX all did it independently
and nobody stole anything from anyone. Brown's remark that people have
tried and failed for 30 years to build UNIX-like systems is patent
nonsense. Six different people did it independently of one another. In
science it is considered important to credit people for their ideas,
and I think Linus has done this far less than he should have. Ken and
Dennis are the real heros here. But Linus' sloppiness about
attribution is no reason to assert that Linus didn't write Linux. He
didn't write CTSS and he didn't write MULTICS and didn't write UNIX
and he didn't write MINIX, but he did write Linux. I think Brown owes
a number of us an apology.
Linus and Me
Some of you may find it odd that I am defending Linus here. After all,
he and I had a fairly public "debate" some years back. My primary
concern here is trying to get the truth out and not blame everything
on some teenage girl from the back hills of West Virginia. Also, Linus
and I are not "enemies" or anything like that. I met him once and he
seemed like a nice friendly, smart guy. My only regret is that he
didn't develop Linux based on the microkernel technology of MINIX.
With all the security problems Windows has now, it is increasingly
obvious to everyone that tiny microkernels, like that of MINIX, are a
better base for operating systems than huge monolithic systems. Linux
has been the victim of fewer attacks than Windows because (1) it
actually is more secure, but also (2) most attackers think hitting
Windows offers a bigger bang for the buck so Windows simply gets
attacked more. As I did 20 years ago, I still fervently believe that
the only way to make software secure, reliable, and fast is to make it
small. Fight Features.
If you have made it this far, thank you for your time. Permission is
hereby granted to mirror this web page provided that the original,
unmodified version is used.
Andy Tanenbaum, 20 May 2004