Back on September 12, fellow blogger Marc Wagner wrote a long rebutal to my comment that the Linux community should stop trying to make Linux look like Windows and just let Linux be Linux. As part of that he first described Linux as "based upon UNIX" but then went on to distinquish Linux from Unix in the rest of his discussion.
Last week he sent me a personal comment about my "The better part of better, faster, cheaper," which I thought was so well written that I offered to send it to the editor for separate publication -because I'd failed to recognize that he already does blog with us. On the other hand, it again contained this canard about Linux not being Unix.
(Note that I'm not concerned with the legal issues surrounding the word "Unix" here, just with what the OS itself is and does.)
Now if you've ever used any other Unix, whether a current one like a BSD or Solaris or one of the dead and dying like HP-UX, you'll have noticed a great deal of surface similarity with Linux. In fact, it's pretty obvious that these all waddle and quack pretty much alike and that normal people would be well within their rights to conclude that things that look like ducks, waddle like ducks, and sound like ducks are pretty much likely to be ducks.
On the other hand the notion that Linux isn't Unix and will replace it is the pervasive basis of Red Hat's destructive anti-Sun marketing strategy, the foundation of all kinds of uninformed Wall street behavior, and part of an Orwellian doublespeak response to the SCO lawsuit.
The problem is that it's also wrong, and a community that lives a lie, becomes a lie.
Part of my first response to Marc therefore included this bit:
1 -Linux is Unix, True it's an entry level Unix, but Unix is Unix is Unix - Linux today being just about "just like" Sys VR4 a decade or so back.
2 -the Unix = RISC idea doesn't fly well either. Remember: the same x86 box that runs Linux will also run the BSDs and Solaris.
Part of his reply said:
It is a matter of point of view. SCO would claim that Linux is 'so UNIX' that it infringes on SVR4. Linus Torvalds would claim it is not UNIX at all.
But this isn't a matter of point of view, it's a matter of fact. To see that lets start at the beginning - with Torvalds hacking on the Minix kernel:
Here's how Eric Raymond, in The Cathedral & the Bazaar, describes the birth of Linux:
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....
Of course Marc says Torvalds would now say it isn't Unix, so what did Torvalds say before the SCO lawsuit? Here's what he told Glyn Moody in a 1997 interview for wired magazine:
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. "
Since that was consistent with other things he said at the time, we can conclude that Linux was intended to be both "a better minix than minix" and "a free Unix for the 386."
(The "better minix" comment, by the way, reflects the fact that the Linux kernel really started as a demonstration that using interupts in the kernel would provide sufficient efficiency gains on the x86 architecture to outweigh Tannenbaum's theoretical objections to their use in Minix as limiting both clarity and portability.)
So if Linux clearly started out to be Unix, what changed? bear in mind that Linux uses the same GNU utilities and open source applications Solaris and the BSDs do, so the only possibilities lie in the kernel's internals.
Max Brunning has just published A Comparison of Solaris, Linux, and FreeBSD Kernels on the Opensolaris.org website based on three key subsystems: scheduling, memory management, and files. So are the internals radically different? Here's part of his summary:
One of the more interesting aspects of the three OSes is the amount of similarities between them. Once you get past the different naming conventions, each OS takes fairly similar paths toward implementing the different concepts. Each OS supports time-shared scheduling of threads, demand paging with a not-recently-used page replacement algorithm, and a virtual file system layer to allow the implementation of different file system architectures. Ideas that originate in one OS often find their way into others. For instance, Linux also uses the concepts behind Solaris's slab memory allocator. Much of the terminology seen in the FreeBSD source is also present in Solaris.
The bottom line? Linux not only looks like a duck, waddles like a duck, quacks like a duck, wears duck feathers, and hatched from a duck egg, but it also has duck guts. In other words, it's a duck: every bit as much a part of the Unix development tradition as Solaris or the BSDs.