About this “Yet Another Linux Origin Blog”
Here is another post about Linux and its origins. I know you are rolling your eyes right about now. I felt compelled to write my own version of the Linux origin history to try to dispel any misunderstanding about Linux. There seems to be a lot of confusion out there about what Linux is and isn’t. You could be getting this info elsewhere, but here you are. Try reading it. In the worst case, you’ll just lose about 5 minutes of your life — that’s it.
Many of the blogs written about Linux are blogs written by industry experts. The knowledge they offer is great, but the explanation is sometimes very terse and hard to understand.
I hope to present this topic in a way that is more easily understood to a beginner and the regular joe home user like me — someone trying to make sense of all the complicated Linux stuff out there.
The background history presented here is simply to give readers some context; maybe even unveil some insight as to why Linux ended up being the very Unix-like O.S that it is today — even explain why Linux is such an important part of the computing world.
No decent blog with tech section should go without such a fundamental Linux blog — it is a must-have. It should set the tone for future articles and the understanding of Linux’s overall purpose and its relevance to regular users and home users. This is sort of like understanding the characters in the story before unfolding the plot.
I can see the yawning going around already — stop it! There will be lots of action, suspense, mystery, betrayal, and most of all… some good facts about Linux and its connection to Unix — lost you on that last one, didn’t I?
In the Beginning…
Let’s get our time travel visors and look back in time to the very inception of Unix itself — sorry, no budget for a time machine. Having said that, Linux is NOT Unix. The name Linux is part of the joke: Linux is basically an acronym that stands for Linux is NOT Unix. There are lots of jokes and humorous bits of this kind in the world of computing — trust me.
Linux And Its History
During late 1960’s
- Ken Thompson and Dennis Ritchie worked on another O.S called Multics. Whatever design ideas and lessons learned from this project will help shape their design for Unix. There is a joke here about the name Multics and Unix…google it
- At this point, Unix was NOT multitasking yet (could only run one program at a time) but had implemented the ideas of process, device files, and command-line interpreter or shell (more on these items in another blog). The multitasking feature would come later on (around 1978) — coming soon.
- Unix could be easily made to run on other computers — thanks to the nature of the C language — source portable. In the past, a computers came shipped with its OWN O.S, which meant you had to learn a new O.S for almost every computer out there — yikes!. This would no longer be the case with Unix. It would take a while before Unix would run on other systems — but the potential is there.
Around 1978 and on
- AT&T had some problems selling Unix (because of some legal problems) and decided to let some people out there use it basically for free at first. The University of California Berkeley got a copy of the code; this was the start of a version of Unix known as BSD (Berkeley System Distribution). They were allowed to make changes and extend it — a hint of O.S.S (Open Source Software) idea early on…sort of. No Linux here yet. The group of people at U.C Berkeley responsible for making BSD was known as the Computer Systems Research Group (C.S.R.G).
- AT&T noticed that the Unix O.S got some interest from people outside of U.C Berkeley and tried to make money with it
- AT&T also found a legal loophole at this time that allowed the company to commercialize Unix by licensing it — which it could not do before this time.
- U.C Berkeley had already made some significant additions to Unix such as the inclusion of the Vi editor, a new shell (C shell), and integrated T.C.P/I.P (a networking protocol created elsewhere for the U.S Department of Defense) — alas, Unix as an O.S was becoming complete as the way we know it now. No Linux yet — sorry!
- U.C Berkeley also started to replace bits and parts of the AT&T Unix code with code of its own design but faithfully emulating the AT&T Unix. By the time AT&T realized, there wasn’t enough of the original code left for AT&T to make any licensing claims — BSD is safe at last. Because of this, BSD is not a UNIX(R) trademark of AT&T (commercial), version of Unix — but it is considered a derivative because of its history.
War of the Unices
Around 1980’s and on
- By this time AT&T successfully sold licenses to other companies in a commercial fashion. Derivatives of the AT&T Unix O.S began to appear such as AIX, HP-UX, SCO, and Xenix. There were also derivatives of BSD that also branched off at first such as SunOS and Solaris
- One of the purposes of creating Unix was to provide a uniform computing experience across different computer systems with a common OS. The “Unix Wars” at this time kick starts the proliferation of different kinds of Unix — it’s out of control. This leads to a long and laborious effort to unify all the Unix variants and set some standards for Unix OS compliance. Linux is not here either — patience, please. The “Unix Wars” lasted until 1990. Unix provides the performance and features that make possible its popularity and proliferation for high-performance computing in the enterprise — setting the bar for how other O.Ses will measure up, inevitably.
Around late 1980’s to early 1990
- By 1988 the BSD source code was distributed in a release known as 386BSD (targeted for personal computers) with about 20% of the code missing (more or less the remaining AT&T Unix code found in BSD). The missing code made it possible to distribute BSD source without any legal issues — or so they thought. The missing code was then filled in and a working BSD Unix was created to run on a PC with i386 CPU. The resulting 386BSD OS was not stable enough to be used as a potential mainstream OS in any reliable way. This code base eventually lead to the creation of other more BSD Unix derivatives like NetBSD and FreeBSD in 1993 that could run reliably on the personal computer — after battling a series of lawsuits from AT&T. More splits from BSD created even more versions of new free BSD-based operating systems. Linux is not here either yet — it is coming soon, but not soon enough.
Unix O.S like “O.S X” and any other Unix O.S that have names starting with Open*, or Net* or Dragonfly* and FreeBSD itself (all directly based from the original BSD source distributed by U.C Berkeley, some more directly related than others). I think we have had enough Unix history at this point that I would like to skip ahead and bring us closer to Linux. Also worthy of mentioning is that Linux was not the first attempt at creating a Unix type O.S capable of running on PCs.
The legal mess and the stability with the early 386BSD were obstacles for BSD’s adoption as the Unix O.S for PCs. The computing world would probably be a very different place had BSD been adopted early on. Creating something like Linux would have been pointless and redundant. Linux would have possibly remained a hobbyist’s curiosity. I guess we will never know…
From the overly brief historical overview, we get a glimpse of how Unix shaped the landscape of the computing industry and set the standard for professional high-performance computing. Anyone and everyone with any experience in computing could appreciate the power and performance of Unix as a multitasking operating system in the enterprise. Unix made its mark and set the bar for every other OS to be compared, measured, and modeled after it.
The PC desktop scene was just starting to become relevant with the advent of more powerful CPUs, but the operating systems available were very weak and not powerful enough — DOS, Windows, and the old Mac OS namely. People wanted to have access to an OS like Unix for the personal computer. The dream would take a bit longer to become reality. For those of you familiar with the DOS operating system, you can see how DOS was influenced by Unix. Some attempts were made to make Unix available to personal computer systems but these attempts were superbly expensive — c’mon Linux be born NOW.
Let’s go back a bit to the 1980’s to mention a few more events that will eventually relate to the creation of GNU/Linux.
Linux “Other” Components
- Richard Stallman launched the GNU Project hoping to create a Unix-like OS. He created a set of tools, a compiler (GNU C compiler), a debugger (a tool to help fix computer programs), and a kernel known as Hurd. Hurd was supposed to do what Linux kernel does for us today. For some reason, Hurd never caught enough attention from developers and Mr. Stallman was left with a cool set of tools, a nice C compiler, a debugger, and a nice editor (EMACS), but no Unix-like OS in sight. A good reliable kernel was still missing — c’mon Linux just show up already!
I always wondered why Hurd didn’t become popular enough considering how desperately people wanted a free Unix-like OS. I think Richard Stallman was bit by the open source bug early on just like the people at UC Berkeley wanted to make a copy of Unix with source unencumbered by commercial licensing of any kind.
- Mr. Stallman created the GNU Free Software Foundation and the concept of copyleft. This copyleft principle basically allows someone the right to use, modify and distribute free software — now we are entering the beginning of the FOSS era. FOSS would take quite a bit of time to become popular. Software in general, at this point, was all very proprietary, closed source, and expensive. FOSS was a concept ahead of its time. GNU stands for Gnu is NOT Unix — another one of those bits of computer industry humor.
- It won’t be for another 5 to 6 years before GNU would meet Linux sometime in 1991 — a match made in heaven. We are getting to the good part now — hang on a bit.
When Linux meets GNU (or is it when Sally meets Harry?)
- Linus Torvalds created the Linux kernel as part of his CS graduate project. Linus said that he created the Linux kernel because there was no viable kernel out there to make a potential OS and felt he needed to create one. Not long after it’s release, more people worked on it to enhance it.
- Early versions of Linux were distributed for download from some ftp mirrors and mostly put on diskettes for installation– I remember this one
I also remember how the top university faculty Unix experts saw GNU/Linux as a joke O.S and unworth of their attention. One particular professor at the my CS department said she would not touch GNU/Linux with a ten-foot pole — I’m paraphrasing, of course. Such was the elite attitude towards GNU/Linux. I never liked that elite attitude from some of these people.
Since 1991 to the present …
- The Linux Kernel, combined with a shell (Bash), a compiler (GNU C), and some software utility, became an OS– a clone emulating the Unix OS.
- The Linux kernel was somewhat based on Minix (an experimental textbook OS) and is completely coded from scratch — no BSD or AT&T Unix code in it whatsoever. This is why Linux is not Unix — not even a derivative. Linux is a kernel and the GNU/Linux combination is a Unix OS wannabe. I know it sounds bad, but it is the truth. GNU/Linux is pieced together with other software components NOT originally meant for it to form the O.S that we know and love today — most of us, that is.
Note that the GNU/Linux O.S could have been put together with other tools and not emulate Unix at all. It so happens that people admired and wanted Unix for their computing needs so badly that they tried very desperately to create an O.S that would emulate and resemble as closely as possible to the Unix experience. People could have easily put the Linux kernel with a different interface and set of tools to produce a completely new O.S. Many of the GNU tools created by Richard Stallman were made to be replacements (some with interesting enhancements) of the original tools and utilities that usually comes with Unix.
In fact, GNU/Linux emulates Unix so closely that sometimes it is hard to tell the REAL Unices and GNU/Linux apart (some GNU/Linux more than others). Every step of the way, GNU/Linux is becoming more and more like Unix. For now, Linux will remain a Unix wannabe for a while more.
The magic formula for the GNU/Linux OS is as follows:
Linux kernel + GNU Utilities (most of the Unix-like commands or enhanced commands) + GNU System Libraries + GNU C Compiler + Bash Shell (also a GNU tool) + X Windows GUI system (this one is from M.I.T) = GNU/Linux OS
In the above “O.S formula”, the GNU/Linux OS is being put together with components NOT originally intended to be used with the Linux kernel. All of the other components were slowly integrated. Even to this day, the other components that are used with Linux are still just separate software components that could be used in other projects elsewhere and still not completely dedicated to the Linux kernel. Contrast this with the original AT&T Unix and U.C Berkely’s BSD, where almost all of the components were written by the same developers and made to work with each other (kernel, shell, compiler, utilities) for the purpose of creating a complete O.S from the ground up.
For instance, the Android OS made by Google that runs on mobile devices such as tablets and cell phones today is simply a trip down version of the Linux kernel combined with the Android GUI — the same can be said about the Chrome OS.
The GNU/Linux O.S that we know today is analogous to Frankenstein — yes the very same monster from the novel. Cobbling together the Linux Kernel, the GNU tools, the GNU C compiler, a shell(Bash), and some other software, an OS was put together to create the GNU/Linux operating system that we all know fondly as Linux for short. It’s alive! It’s alive!
For correctness, Linux should be called the GNU/Linux O.S.
Linux is NOT a Unix Variant
To be clear about this one, Linux is also NOT a variant of Unix because every one bit of code used to write Linux was developed from scratch and uses no code from either the original AT&T Unix nor the BDS code base. As such Linux is not a descendant of the original Unix.
Sometimes it is a bit unfair to compare Unix with GNU/Linux in such a manner. The FOSS community may have started by emulating and copycatting the original Unix in almost every way they could think of when they put GNU/Linux together, but GNU/Linux has grown to become an OS in its own right — the little penguin has made its own mark in the computing world.
Rumor has it that many of the well-known companies like Oracle, IBM, Intel and a few others may have poured countless resources and man hours by freely contributing code and enhancing the Linux kernel to its present state today — along with all the code enhancements continually made by the F.O.S.S community itself. GNU/Linux can now rival in performance against the many great Unix O.S of the past and is currently running in the enterprise at the fraction of the cost.
Some people suspect that GNU/Linux’s current ability to handle this level of performance in the enterprise may be that these companies have likely “dumped” some or a lot of enterprise level Unix code into GNU/Linux…
Whether this body of code is either created from scratch to emulate or is taken from actual commercial Unix code nobody knows. I don’t think there is actual proof of this — don’t quote me on this one. This is just mere speculation, but a rather interesting one. As the trend of Linux’s adoption in the enterprise continues, GNU/Linux will very much dominate the Unix world someday. Something that started out as a wannabe is now climbing the ladder to the top — talk about a story from rags to riches. Go Tux go!
UPDATE: It seems that there is proof out there for some of the stuff I wrote in the previous paragraph. If you can find evidence, let me know — would prove it is not just a rumor.
GNU/Linux is Not Exactly Free
F.O.S.S software is more like “free speech” than free as in “free beer”. For us regular folks, GNU/Linux and other F.O.S.S seem free but it really isn’t exactly like that. Many people donate to these free open-source software initiatives to keep things going. Most F.O.S.S products can be distributed, modified, and even commercially sold for a profit and the source must always be made available…
Keep in mind that if you include the source code of this type in your own products, then you will be obligated to make your own product/ source code available for others to have/distribute/modify as they see fit. In other words, your software product will also inherit this open source nature of F.O.S.S for the benefit of the community — or the people or mankind. Companies that want to be close-sourced don’t like this idea.
Whatever you chose to believe, I hope that this article has clarified and informed you a bit more about this mess that is GNU/Linux.
If you must ask for an analogy, the best analogy is to compare GNU/Linux to a motorized vehicle. Linux the kernel would be like an engine for a vehicle. You can take an engine and put it in a different vehicle to make a new kind of vehicle. However, you can’t say that the engine IS the vehicle because the engine is simply a component in making a vehicle — albeit an important one. For every new vehicle design, you just adapt the engine to work in the new vehicle design to make another car or truck.
Linux is a kernel only but … GNU tools + Linux kernel together = make an OS.
The next time you tell someone who asks you about Linux, make sure you tell them exactly what GNU/Linux is: a nice “Frankenstein” OS made for the people by the people. I would like to think of GNU/Linux as the “people’s champion” of operating systems — kind of like “The Rock” Dwayne Johnson being “the people’s champion”.
By the way, this blog was proudly written with a computer system running GNU/Linux — long live Tux.
On Linux as a Kernel and Unix vs Linux difference
More on Unix rather than Linux