- by Paul Murphy, -
I don't know who was using 18.104.22.168 last week, but my web logs show that this person, a Windows NT 5.0/MSIE 6.0 user, asked google an interesting question first at sometime just before 08:03:41 EDT on January 24th and then again sometime before 04:54:29 EDT on January 26th.
As entered the first time the search was for "linux to unix relationship" although that became "relationship of linux to unix" a few minutes later and "what is the relation of Linux to Unix" two days after that. Since winface.com isn't the first site that comes up when you do these searches, I decided that the person must have been very interested in pursuing the question and set out to answer it in this column.
Aside from legal considerations associated with trademarks and copyrights, I know, of course, that the answer is obvious: Linux is Unix, duh, even Scott McNealy has said so.
On the other hand, experience suggests that about half of everything I know is wrong and IDC, in its work for Red Hat, certainly claims that Linux isn't Unix. Here's what came out of that horse's mouth, in this case Red Hat's Mark de Visser, during an interview with newsfactor's Joe Brockmeier:
"Our CEO has said that the path to Redmond is through Mountain View. We focus on Unix now, and once we gain the upper hand ... we believe we can ultimately displace Microsoft, even on the desktop.
So is this just a marketeer's attempt to differentiate his x86 Unix from Sun's x86 and SPARC based Solaris or is there a significant difference that isn't accounted for by relative scale and maturity?
History may give us a place to start. Everybody knows Unix started at what was then AT&T Bell Labs and went through two enormous growth phases, the first at Berkeley in the early 1980s and the second at Sun ten years later, but surprisingly few know where Linux came from.
Before looking at that, however, it's important to be clear that Linux is actually a composite including the Linux kernel, the same GNU utilities found in virtually all versions of Unix, the same GUIs and applications available for most Unix variants, and hundreds of device drivers either custom developed for Linux and mostly since ported to Unix variants like Solaris for x86 or ported from Unix variants such as OpenBSD and SCO Open Server.
The current kernel is fundamentally the work of Linus Torvalds and people he recruited into the kernel development and maintenance process, but the kernel he started with, Andrew S. Tanenbaum's Minix, was unambigiously described by its author as "an open source Unix clone."
That's actually important for another reason too: Tanenbaum's 1987 book, Operating Systems: Design and Implementation, was one of the first to include both the source and an absolutely clear open source license agreement along the lines laid out by Stallman's Open Software Foundation.
Both history and composition therefore stack the case toward believing that Linux is indeed Unix. Unfortunately history isn't enough; after all the same argument would support the belief that Yorkshire Terriers are Alaskan Malamutes on the grounds of genetic heritage and a shared interest in chasing mice.
What's really needed to settle this is a definition of Unix against which to measure Linux.
Unfortunately there's no obvious definition against which to compare Linux. Not only do systems we all accept as unambiguously Unix, i.e. BSD, HP-UX, Solaris, and Tru64, have more functional differences than say, Linux and Unixware, but old standbys like the System 5.3 or POSIX compatibility tests risk having to certify zOS and Windows 2003/XP with SFU (Services for Unix) as Unix and we know that's wrong.
A better idea, therefore, may be to look at what the product is intended to do, rather than how it does it, to see whether Linux meets Unix expectations. For this, consider what Dennis Ritchie, one of the original Unix developers, had to say in a paper on The Evolution of the Unix Time-sharing System:
From the point of view of the group that was to be most involved in the beginnings of Unix (K. Thompson, Ritchie, M. D. McIlroy, J. F. Ossanna), the decline and fall of Multics had a directly felt effect. We were among the last Bell Laboratories holdouts actually working on Multics, so we still felt some sort of stake in its success.
More important, the convenient interactive computing service that Multics had promised to the entire community was in fact available to our limited group, at first under the CTSS system used to develop Multics, and later under Multics itself. Even though Multics could not then support many users, it could support us, albeit at exorbitant cost. We didn't want to lose the pleasant niche we occupied, because no similar ones were available; even the time-sharing service that would later be offered under GE's operating system did not exist. What we wanted to preserve was not just a good environment in which to do programming, but a system around which a fellowship could form. We knew from experience that the essence of communal computing, as supplied by remote-access, time-shared machines, is not just to type programs into a terminal instead of a keypunch, but to encourage close communication.
What he means here isn't just time sharing on a single machine, but a collaborative environment in which the system is used to provide communications among people and thus enable them to share goals and ideas while contributing to each other's work.
So, does that sound like a description not so much of Linux but of the fellowship that's sprung into being around it? Of course it does, and combining that usage with the origin in Minix, the shared GNU and open source heritage, and obvious functional compatibility with Unix settles the question: Linux is Unix, and no ifs, buts, or maybes about it.
Note added May, 2005: Please see Minix, Linux, Unix for more on this issue.