Linux-UNIX

Q: What is the relationship of Linux and UNIX/Unix?
A: Historically, Unix was developed at Bell Labs in the late 60s, though it didn't really come into its own until development through the 70s. Originally, it was just an experiment on the part of the authors - Dennis Ritchie, Ken Thompson, Brian Kernighan, et al - that attained a sort of acceptance at Bell and excited the academic community.

As Bell was originally forbidden to sell operating systems due to monopoly issues, it was originally distributed in the form of source code on tapes and, the story goes, often with a note saying "Love, Ken [Thompson]". So it was proprietary in the sense that Bell owned it, but open source in the sense that people could see and modify the code. Over the course of time, it became more and more popular (and thus potentially more and more profitable). When Bell (AT&T) was broken up, the legal obstruction to selling Unix was removed. Several different companies developed their own versions of Unix which became increasingly less interoperable and further redistribution of the source code (or any distribution of new code) was forbidden.

Meanwhile, Microsoft and IBM came up from underneath, with the DOS-driven PC, which had a closed-source and proprietary operating system from the start. Through the course of the 80s, Unix faltered due to the beginnings of the shift from mainframes and minicomputers to PCs and due to commercial rivalries between the Unices. And, through the course of the 80s, the FSF movement rose. In reaction to the failures of closed source Unix (though actually sparked by the issues of a different operating system) Richard Stallman (usually known as RMS) started the GNU project in 1984: GNU being a recursive acronym meaning "GNU's Not Unix" which also takes the frequent Unix-ism of paradox. The only reason it's worth saying that GNU's not Unix is because it is. And it isn't.

The essence of this is the source code issue. GNU tools were coded from scratch and the code was Free Software. So it was not Unix because it had a different codebase. But it was Unix in that the tools usually had the same name, operated the same way, and could interoperate with proprietary Unix to an extent. They also had GNU extensions which gave them more capabilities than the Unix originals.

Just like a generic PC is a "clone" of the IBM PC - different stuff made by different people that does much the same thing and often better and cheaper - so GNU was intended to be a "clone" of Unix. The one thing they didn't have was a kernel. So, in a sense, they had nothing. One could not boot or run a GNU machine - only run GNU tools on some other (usually proprietary) system much as DJGPP can run on DOS or Cygwin can run on Windows now.

Enter the early nineties. As early Unix was fascinating to academics, it remained that way to people like Andrew S. Tanenbaum who developed an academic teaching version of Unix for students, known as Minix. Linus Torvalds was a student interested in, but unsatisfied with, Minix and wished to develop a Unix-like operating system for his 386 PC with its nifty new 32-bit address space. (This is why Linux will run on a 386 and up, but not a 286 and down - assuming that's an issue for you.) In 1991 he announced the existence of his preliminary kernel in a Usenet post and offered the source code to the hacker world. Quickly, legions of developers improved and expanded the kernel under his guidance. With his open source Unix-like kernel, the GNU operating system could finally run free, thus came the term Linux.

Legally, it's a whole other kettle of fish and introduces legalisms like UNIX vs. Unix vs. Unix-like and so on. Unix the name, vs. Unix the system, etc. And there are also naming issues over Linux and GNU. But for the user's purposes, it suffices to know that they are running a Free Software, distributable, non-proprietary Unix-like system that isn't a closed source, restrictively distributed, proprietary Unix. Over the course of development, Linux has progressed to the point where there is little if anything that can be done with a Unix system that can't be done with it.