Minix, Linux, Unix?

- by Paul Murphy -

In my March 4/05 CIOtoday.com column I referred to Mr. Torvald's having started Linux by hacking on Minix. To my surprise this unleashed a storm of protest from people who mis-understood me to say that Linux is based on Minix; it is not, but the process through which it came about started with Minix and the very earliest Linux systems relied on Minix components.

The issue wouldn't have been important to anyone except historians if the person who most persistently sought to correct me hadn't been Pamela Jones of Groklaw.com. As most people would agree, hers has consistently been the most trusted and influential source of community opinion on the SCOsource claim against IBM - itself an issue I initially described as a slam dunk for SCOsource but which became important as the operation of the legal and publicity processes of which she's been both recorder and participant polarized the open source community.

Her first note to me said:

Hi Paul,

I am just reading about your article on Linux and the tipping point. It's
currently on Slashdot. I have a question. May I ask you on what you base your
statement that Linux is based on Minix? I've seen otherwise, but I may have
missed something. Perhaps you can point me in the direction of facts supporting
your statement?

Thanks,

In response I sent her a copy of something I'd sent another person with much the same concern:

Linux did start as a Minix hack - but the release 2 and later kernels are not based on Minix. i.e. Linux is not now based on Minix; but that is how it started.

Further the disagreement about which is actually better is pretty fundamental to design, not execution. At the design level Minix is a microkernel and that's generally agreed to be better than the all-in-one furball approach shared by Linux (up to 2.4+) and System V - but few would argue that Minix is, today, "better" in any real sense than Linux (except for 2.4 -:)!)

--the original source for the "started with Minix", incidently is a mid nineties interview with Mr. Torvalds of which I believe I have a locatable copy -somewhere.

That "2" was intended to be .2 (actually 0.12 would have been correct, but I didn't know/remember that at the time).

In part of her first response she said:

I would be interested in seeing that interview. I think you'll find that the current Linux was never based on Minix at all.

About two and a half hours later this arrived:

From: Pamela Jones
Subject: Re: minix vs linux
Date: Sun, 6 Mar 2005 19:39:21 -0500

I have just reviewed all the material that Groklaw covered when Ken
Brown and ADTI said the same thing you did about Minix. I have found
an interview with Linus outside of Groklaw that also clearly denies
that any Minix code was used, even in the first version:

http://news.zdnet.co.uk/software/linuxunix/0,39020390,39155268,00.htm

And Tannenbaum also says none of his code was used and that since the
results are so different -- completely different types of kernels --
it's clear Linux isn't derivative.

And then another thing you might wish to consider, and may wish to
edit your article as a result is this: SCO has made exactly the charge
that you level at Linux in its MEMORANDUM IN OPPOSITION TO DEFENDANT
IBM'S MOTION FOR SUMMARY JUDGMENT ON ITS TENTH COUNTERCLAIM FOR
DECLARATORY JUDGMENT OF NON-INFRINGEMENT.(
http://www.groklaw.net/pdf/IBM-206-1.pdf ) . It says on page 14,
paragraph 9:

"9. Linux was first created in 1991, when a Finnish college student
named Linus Torvalds began developing Linux as a hobby after studying
an operating system that one of his professors had based on and derived
from UNIX. IBM Statement Paragraph 2; SCO Linux Introduction Version
1.2 Section 1-5 (2002) Exh.S-7"

It's true he studied and was familiar with Minix, but any chain of
using Minix then introduces some ugly possibilities, and since it isn't
true, I doubt you wish to cooperate.

Best,
Pamela

Look back at the quotations used above and you may notice an odd thing about her form of argument in that she rejects my comment that "Linux is not now based on Minix" by rephrasing it as "current Linux was never based on Minix." That's true, but I don't think it makes a logical argument. On the other hand, as a form of argument it fits a pattern established when she repeated the same strategy in another exchange. In that one she refuted my statement that Torvalds "didn't get the last Minix code out of the kernel until sometime in early to mid 1991" by quoting an August 25/91 email in which Torvalds says "it's free of any minix code."

The sentence she quotes above from the filing nominally made on SCOsource's behalf fits the pattern too because it asserts something few can disagree with while neither making, nor denying, the assertion I think she's trying to refute (that Linux is Unix):

Linux was first created in 1991, when a Finnish college student
named Linus Torvalds began developing Linux as a hobby after studying
an operating system that one of his professors had based on and derived
from UNIX.

In fact, it seems to me that the semantic burden in each case is carried by the originator, not the text, and is really an appeal to authority saying nothing at all about the issue at hand.

In support of her position, however, she makes an interesting argument based on using Minix as the Linux development environment without incorporating any Minix elements into Linux. Here's one of her statements of that thesis:

From: Pamela Jones
Subject: Re: minix vs linux
Date: Sat, 12 Mar 2005 14:04:25 -0500

OK. I have researched it thoroughly, and I got the entire team on it
too. There never was minix code in linux in the sense you mean it. We
find proof of that all over the place. Instead, as I understand it, it
was like this:

As Linux was being written, it was written on a Minix-using computer,
like you might use scaffolds to help you construct a building. As the
building is built, you get rid of the scaffolding, bit by bit, and at
the end, you don't need any scaffolding at all, because the building
stands on its own.

Similarly, to write an operating system, you have to use another one to
do the building, but that doesn't mean it's an integrated part of your
construction, just what you are using to get the thing up.

But minix was never intended to be in linux, because Linus' purpose, or
one purpose, was to do something better, because he wasn't happy with
minix, so he wrote it entirely with his own code. Tannenbaum has said
so. The only things that are the same or similar are things that are
dictated by POSIX standards and that sort of thing, to make it
compatible, an early goal, later not.

Again, I think that's exactly right; but like the earlier refutations entirely beside the point.

In contrast, look at how Eric Raymond's interpretation (in The Cathedral & the Bazaar) of Torvald's original comment about using Minix as scaffolding directly addresses the issue that's really under discussion here, viz: did Linux start out as a branching from Minix?

Linus Torvalds, for example, didn't actually try to write Linux from scratch. Instead, he started by reusing code and ideas from Minix, a tiny Unix-like operating system for PC clones. Eventually all the Minix code went away or was completely rewritten -- but while it was there, it provided scaffolding for the infant that would eventually become Linux....

That's pretty clear, and not only did Torvalds himself sign off on this but he made an equally clear, and independent, comment during that "mid ninties" (actually 1997) wired magazine interview with Glyn Moody:

In the summer of 1991 - just six months after he got his first PC - Linus found he needed to download some files. But before he could read and write to a disk, he recalls, "I had to write a disk driver. Then I had to write a file system so I could read the Minix file system in order to be able to write files and read files to upload them," he explains, as if it was the only reasonable thing to do. "When you have task-switching, a file-system, and device drivers, that's Unix" - or at least its kernel. Linux was born. "

There's a lot of this stuff around - for example:

  1. Torvald's own 1992 review of the history: refers to "my plan" as "free Unix for the 386" and as "a better minix than minix"; and,

  2. there's an on-line biography in which he's quoted as saying:
    It's partly due to minix: linux was just my working name for the thing, and as I wrote it to replace minix on my system, the result is what it is... linus' minix became linux.

    I originally intended it to be called freax (although buggix was one contender after I got fed up with some of the more persistent bugs :) and I think the kernel makefiles up to version 0.11 had something to that effect ("Makefile for the freax kernel" in a comment). But arl called the linux directory at nic.funet.fi pub/OS/Linux, and the name stuck. Maybe just as well: freax doesn't sound too good either (freax is obviously free + freak + the obligatory -x).

Between them, I think these quotations pretty much answer both forms of the question: Linux did branch from Minix at the kernel level, and it did start out to be, like Minix, a Unix implementation.

So why fight something that's both obvious and well documented? I'm guessing because it's a proxy in another battle entirely. Remember what she said earlier:

I have just reviewed all the material that Groklaw covered when Ken
Brown and ADTI said the same thing you did about Minix.

I haven't read Mr. Brown's work but I don't think he said the same thing at all. Instead he's widely seen as having claimed that Linus Torvalds didn't write Linux because he started from Minix. It appears, furthermore, that Mr. Brown saw the process as copying from Minix because he's widely reported as saying that re-invention couldn't have happened in the time available.

If so, he's wrong on both counts. First, the time argument is inappropriate both because other people have demonstrated that it can be done and more importantly because what came out of the initial process, the Linux 0.12 kernel, was actually quite limited and primitive. It wasn't born great, it became great over a ten year period because dozens of very bright people spent years on it while thousands of others contributed hours and weeks.

More importantly, however, the invocation of the copying idea suggests that Brown misunderstood the core values and processes of academic research in general and open source in particular. In academia you stand on the shoulders of giants to peer a little further ahead, in open source you hack the other guy's code to do more and more of what you want, and in that process learn enough about what you want to do to ultimately replace all of the orginal code with your own. That's not copying, that's learning and invention.

As such I'm sure that the process Torvalds followed was exactly the process intended by Tannenbaum and therefore covered by the applicable Prentice Hall Minix source licenses. Thus when Mr. Torvalds "started by reusing code and ideas from Minix" and eventually made the system his own by replacing the last Minix code, the process he followed, from hacking the Kernel to use interupts in (I'm guessing) mid November to replacing the file system interface in mid June, was legitimate, appropriate, and laudable.

So is Linux Minix? No. But, did it start from Minix? Yes. And is it Unix? Obviously.

To my surprise, however, I got an unexpectedly strong reaction when I sent summaries of this to Ms. Jones:

From: Pamela Jones
Date: Sun, 13 Mar 2005 16:41:38 -0500

No. you are again wrong. Think scaffolding and you will understand.
You so want it to be true, but it isn't. When you are writing an
operating system, you have to use another one to build it. that is all
this is.

...
From: Pamela Jones
Date: Sun, 13 Mar 2005 16:44:09 -0500

Again, you are off base. No use my explaining it over and over. Are
you a programmer at all? I am puzzled as to why you don't understand
what is black and white simple to me. Everything you are finding is
exactly proving my point.

Dig away all you like and that is all you will ever find: scaffolding.
I already asked GL researchers and I know.

Since that speaks for itself, I'll just note that if anyone wants to see the full text of all the exchanges, I can make that available.

Postscript:

When I gave her access to this column in draft form and asked, purely as a matter of courtesy, for permission to quote some parts of her 14 emails to me on the subject - none of which make any mention of copyrights or expectations of privacy, she sent me this note:

No. My email is copyrighted and it was a private conversation. I explicitly do not grant you permission to publish it.

And contacted the editor at ciotoday.com directly to order him not to publish the material.


Paul Murphy, a CIO Today columnist, wrote and published The Unix Guide to Defenestration. Murphy is a 25-year veteran of the I.T. consulting industry, specializing in Unix and Unix-related management issues. He maintains a discussion forum for his columns on the book's Winface.com site.