http://www.osopinion.com/Opinions/mdxi/mdxi1.html
The Unix War: Epilogue
After 30 years Unix's war is over. It was a long and hard-fought and many times the internal
battles did more damage than the external ones ever could have, but now it is all over except for
the shouting. Now the day is won; we can survey the battlefield and write the history of the war
which was fought here. For veterans of this war, the beginning of this text will probably be a
boring review but I feel that there are today a large number of people being introduced to Unix
without any knowledge of its history or purpose. So bear with me as I recite some of the lore of
times past before moving on to addressing the concerns that I have today.
Calm Before the Storm
In 1968 and 1969 the Multics project was dying an unpleasant death at AT&T's Bell Telephone
Labs. Its few user/developers realized that it was beyond saving but didn't want to go back to the
old way of doing things (batch processing, mostly) because they had come to enjoy the
comfortable, interactive computing environment that they had under the developmental Multics
system. They found that interactive environments on shared systems fostered close
communication and a sense of community not found elsewhere. This would come to be a key tenet
in the Unix world as time passed.
They began work on a replacement based around a file system design from Ken Thompson,
Dennis Ritchie and R.H. Canaday. After trying to requisition a DEC PDP-10 and Xerox Sigma 7
and being rejected they began using a PDP-7 to develop their system. The first application
written for the new system was a game - Space Travel - which Thompson had originally written
for Multics. Then the already-designed file system was implemented, followed by a small suite of
user tools (copy, print, delete and edit files) and a command shell. Up to this point all the
programs had been written in assembler on the GE 635 computer under GECOS (the General
Electric Comprehensive Operating System, whose name lives on as a field in the modern-day
Unix password file) but with the addition of an assembler for the PDP-7, the nascent system
became self-sustaining. Sometime in 1970 it was dubbed ``Unix'' by Brian Kernighan as a biting
play on ``Multics'' and the OS we know today was born.
All of Unix was originally written in assembly language. Early on it was decided that a
FORTRAN compiler was needed so Ken Thompson set out to write one. He never finished it (at
the time) but instead came up with a language called B, which was influenced by another language
named BCPL. Some applications were written or rewritten in B but little thought was given to
rewriting the OS itself, which was still in assembler. Then the team got a PDP-11 which was a
byte-addressed machine while B was a word-oriented language, so in 1971 work began on the
language that would become C. In 1973 the Unix kernel was rewritten in C and the system
assumed its modern form.
The Clouds of War Gather
In 1972 there were 10 Unix installs in the world. Then in October of 1973, Thompson and Ritchie
gave out a paper at the Symposium for Operating System Principles and interest in the system
exploded.
At the time, AT&T was being investigated for monopolistic practices and was under a consent
decree to stay out of the computer business but AT&T's lawyers decided that it would be okay to
allow universities to have the OS under the conditions that there would be no support, no
advertising and no guaranteed bug fixes. This forced the users of the system to band together to
support each other, reinforcing the values which had led to the creation of the system in the first
place. But a tradition of sharing would not stop huge rifts within the user community from
forming...and two of the first- and longest lasting - were about to do just that.
In 1975 Ken Thompson returned to his alma mater, UC Berkeley and he brought Unix with him.
There two graduate students, Chuck Haley and Bill Joy brought the Pascal system Thompson had
been working on to a usable state and created the text editor 'vi'. From this the ``Berkeley
System Distribution'' of Unix was born.
The Battle is Joined - Border Wars
By the mid 1970s Unix was growing quickly but often derided as a toy system used only by punk
college kids. Real work was done with ITS, TOPS-20 or IBM's mainframe systems. But Unix
was slowly accepted and became a favored operating system. In 1978 DEC released the VAX,
which was the successor to the PDP-11, Unix's home turf. VAXen (the preferred plural form of
VAX) became extremely popular and soon their proprietary OS, VMS, was largely replaced with
Unix - especially after the release of 4.2BSD in 1982.
But coinciding with this development was the emergence of a new class of machines, the
microcomputer, or workstation. Produced by companies like Sun, Convex, Multiflow, Masscomp,
Silicon Graphics, Pyramid, Stardent and NeXT, these ``killer micros'' as they came to be known
were faster and cheaper than their minicomputer ancestors...and they all ran Unix. The
minicomputer companies got behind the price-performance curve and stayed there. The
workstation companies destroyed the minicomputer market and then began to cannibalize each
other - but minis were no more, and gone with them were their operating systems. Unix was set
to be The Next Big Thing.
By now Unix had become a splintered mess...each workstation vendor offered their own version of
the OS and to make matters worse, other companies like IBM, Apple, Hewlett-Packard and
Microsoft had variants as well. Some of these were based around the system style that evolved
from BSD while others claimed AT&T's USG System V Release 4 (SVR4) as their lineage. They
all had their own window managers and other major and minor incompatibilities. To a Unix
administrator, none of this really matters. The systems were all similar enough that someone
familiar with one of them could use any of them with minimal trouble. But to a corporation trying to
cut costs or an end user who doesn't understand how Unix really works, it was a very bad thing.
Then, in the late 1980s and early 1990s PC-class machines began to encroach on the performance
levels of the current generation of workstations just as the workstations had done to the
minicomputers before them. They were derided by the Unix professionals as mere toys but their
abilities increased far more rapidly than the workstations' were and the PCs cost far less as well.
And they were all running an OS called DOS and a graphical environment called Windows.
Windows-based PCs became the standard for business faster than Unix makers could react.
Before they seemed to notice what was really going on Unix had been relegated to the server
room and its position there seemed to be threatened as well. The Unix vendors formed alliance
after alliance to confront the Windows threat (the only one whose name I can remember is COSE
(Consortium for Open Systems Environment?)) but nothing seemed able to stop the Windows
juggernaut. Finally, around 1993, limitations in DOS and Windows halted its advance and the
battle lines froze. All sides dug in and began a bitter war of attrition.
Brother Against Brother - Treachery and Internal Strife
Going back to the mid nineteen-seventies again, we turn our attention to the internal struggles
that raged within the Unix community for 20 years. For a while there was a development loop
between Bell Labs and Berkeley: Bell Labs would release a new version of Unix, which would
have improvements made at Berkeley and overseas, then the BSD group would add their
home-grown tools (like the Pascal system and vi) and then release that as a new version of BSD
for the cost of distribution media, then the cycle would begin again.
Then with the release of version 7 in 1979, AT&T realized that it had a valuable product on its
hands and changed the licensing terms to forbid the source code from being used in college
courses to protect its status as a trade secret. This change happened at about the same time that
the workstation companies began to come into existence. It marked the beginning of the
commercialization of Unix and the beginning of a drastic shift in the climate of the Unix user
community. Unix was now the establishment, now a business. It was something to be bought and
sold, not traded and shared. Of course, the Unix world was not alone in these changes, this time
was the beginning of the end for the majority of the hobbyist computing and freely traded software
communities...computer science was becoming a commodity. One very minor (at the time) result
of these changes was the creation of Unix clones.
Some people felt that the new way of doing things was wrong, that people worked better when
sharing rather than when jealously guarding their secrets, that Unix should stuck to its roots. The
first Unix clone was called ``Idris'' and was written by P.J. Plaugher. The second was Andrew
Tanenbaum's ``Minix'' which would become remembered most for giving birth to another Unix
project more than a decade on down the road. Both of these projects were aimed at producing
replacement kernels for Unix. There was another project that took a different approach.
In 1983 Richard M. Stallman founded the GNU project, the goal of which was to produce a
completely free of cost and freely distributable Unix work-alike system. Their method, however,
was to start with the system utilities - editors, compilers, and everything else - working
towards a final goal of a completely new and unencumbered kernel. This took a long time (in fact,
the kernel for the GNU system is still incomplete but is once again under active development) but
the software that GNU produced was of such high quality that administrators often replaced the
versions that came with their Unix distributions with the GNU ones.
This kind of spirit was hard to find in the software world of the eighties, however. Those who
would become the robber barons of the software industry were hard at work discovering that
people will pay ungodly sums of money for things which they do not understand but feel that they
need.
Jihad! Holy Wars
And then there are the Unix Holy Wars. Unix users are very passionate about their tools. To
many of them, an operating system is not something that translates a user's commands into
actions of a machine, it is a way of life or even a religion. Wars that started back in the seventies
still rage today. BSD-derivative or USG-derivative? vi? or emacs? X or console? If X, which
window manager? Which widget set? More recently you can add questions like: Which desktop
environment? a.out or ELF? libc5 or glibc? Monolithic kernel or microkernel? Unix is very very
customizable and almost all Unix users tweak theirs for a most comfortable fit. This has the effect
of making everyone believe that their setup is the correct setup.
These disagreements are over relatively minor things but they can get very very heated,
especially when two people who use different tools (with each tool suiting one person's
workstyle perfectly) argue over tool superiority. People can stay angry for months or years or
forever over arguments arising out of these kinds of disagreements and that can be devastating to
a project team or user community. Compare this to the Windows or Macintosh communities
where the OSes, while superficially customizable in appearance, are virtually identical
underneath. Everyone is using basically the same OS. Further contrast the Unix user's mind set
with Microsoft's One-Tool-Fits-All approach (Word, Outlook, Excel, etc.) and you can see why
Unix users fight so vehemently for their way of working.
Charge of the Light Brigade
Back on the front lines the stalemate continued but while the commercial Unix vendors were
bickering amongst themselves Microsoft had been at work. In mid-1995 they released a new
version of Windows (Windows 95), which added rudimentary 32-bit capabilities and a rehashed
NeXTStep-like interface to windows. With over a year of hype and a previously unimaginable
marketing barrage working in its advantage, Win95 swallowed the desktop market whole. Also,
Microsoft had announced NT, the rewritten-from-the-ground-up version of Windows that would
bring the now-universal Windows interface to a server-class OS that was targeted right at
Unix's last remaining stronghold.
Microsoft managed to overlook one minor area of computing however: the Internet. The Internet,
and networks in general, were Unix's home turf. Unix grew up in a shared environment and is
networkable to the core where Windows is the descendant of a bad user shell for a very limited
single-user operating system. The Internet also was born and grew up in an academic
environment. Most of it was designed, implemented and running on Unix. And when the Internet
exploded in popularity Microsoft was looking the other way, towards dumbing down their user
interface even further (MS Bob).
Suddenly, Unix was needed again. Everybody wanted to be on the Internet and you couldn't do
that without Unix. Of course, Microsoft fought back, leveraging their dominance in the workplace
with even more marketing and layer upon layer of hype about what their systems would be able to
do, but enough breathing space had been created for a very timely confluence of events to occur.
Like many computer science majors before him, Linus Torvalds met Unix at university and liked it.
A lot. But like many other computer-inclined people his age, he had a Intel-architecture PC which
was more-or-less incapable of running Unix. He got interested in Andrew Tanenbaum's Minix,
which ran on PCs. Then he began work on a Unix clone kernel of his own (which grew out of
another project and his interest in Minix) and decided to release the source code on the Internet,
calling it ``Linux''. There, other people found it useful and began giving him feedback, code
additions and corrections and just plain using it. The kernel grew and became useful and then was
paired with the GNU tools collection, which had grown to be a complete Unix system except for a
kernel, and a new OS was born.
The timing of this was phenomenal, if unintentional. Built upon the tested strength of the GNU
tools, the Linux kernel was worked on over the Internet and quickly became robust and usable.
This allowed a whole new generation of programmers and power users who were quickly tiring of
their unreliable, expensive Windows systems to simply format their hard drives and install a
complete Unix system on the PCs they already owned.
The more important effect of this was a massive resurgence of interest in Unix and its original
community-based development model, in the GNU project and in the other free Unix variants
(especially the BSDs). A whole new generation of programmers was introduced to the values and
attitudes of their forbears and instilled with a instinctive distrust of corporations whose actions
betrayed intent to harm or abuse the community (I proudly count myself among this group). This
is not to say that they are communist or socialist or hate corporations simply because they are
corporations. Most users of free versions of Unix that I know would be all to happy to pay for
some well-written software (especially games and office-type software). The reason behind this
it that while they have many excellent free tools available, there are some kinds of software that
get ignored because they aren't fun or interesting to write - and since everyone works on
whatever the feel like, some gaps are left in the lineup.
Where is the Next Battle?
So where are we now?
Unix is popular again, especially with the people who will be running things not too long from now.
There are still some commercial versions of Unix and many free ones, all providing healthy
competition for each other. The new version of Mac OS will be a Unix at heart (NeXTStep/BSD,
as a matter of fact). BeOS is very Unix-like and has a suite of GNU tools ported to it. The new
Amiga OS will be based on QNX, a real-time commercial Unix. And of course, NT wishes that it
was Unix.
Unix is everywhere. Unix has won. What can happen now? As I see it, there are three
possibilities.
The first is the least likely: rifts in the user community tear asunder Unix's newly regained esprit
d'corps and Microsoft immediately lunges for the kill, this time succeeding where last time they
failed. I just don't think this is going to happen. Once Microsoft was a nimble, hungry young
startup and it outmaneuvered everyone else and with some skill (along with a lot of luck) came
out very nearly on top. Now Microsoft is a huge bloated beast and its reaction time is slow...it
just barely managed to avert total disaster with its Internet miss, and only overcame that with
massive outlays of cash in the form of buying and giving away (or forcing, depending on how you
want to look at it) Internet Explorer.
The second: the status quo begins to reverse. Unix, now secure in the server niche thanks to fast,
high quality open development, turns its eye to Microsoft's stronghold: the desktop. This is
beginning to happen in baby steps and this will be the toughest fight if we as a community decide
to fight it. This is not a fight for marketshare, it is a fight for mindshare - and the minds of people
who don't really understand the Unix way of doing things at that. I think the biggest danger here
is if this battle is fought by playing catch up to Microsoft and copying their every move.
Remember: most end users don't fully understand the software they use now. Windows is not
easy to use, it is merely ubiquitous and they've just learned how to produce specific results with
the tools at hand. Make better tools that are better to use, not ``easier''. Easy is a fallacy.
The third option is this: something completely new comes out of nowhere and slowly builds up
steam until it begins to take on the Big Boys (whoever they happen to be). This will happen one
day. Unix is a great system and it is great because it is mature, but there are people out there
right now working on the Next Next Big Thing. How will we react when it gets here? I don't
know...I just hope that people learn from the past two decades and keep these events from
playing themselves out again. Try to keep an open mind, evaluate all possibilities fairly and make
love, not war. We've had enough of that.
References
Peter H. Salus, Byte Magazine, October 1994
http://www.byte.com/art/9410/sec8/art3.htm
Mike Loukides, A Brief History Of Unix
http://www.mmt.bme.hu/~kiss/docs/unix/unix-history.html
Dennis M. Ritchie, The Evolution of the Unix Time-sharing System
http://cm.bell-labs.com/cm/cs/who/dmr/hist.html
I probably went beyond the bounds of fair usage and straight on into plaigarism in the first part of
this paper but I have my reasons. I wanted to provide a good background on Unix and where it
came from. And I wasted to get all my facts right, but since I was born the same year that BSD
was I have no way of recounting these events from memory. The above documents are some very
good starting points if you'd like to know more about the history of Unix. As much as I
borrowed/copied/stole, there is much more in these excellent articles and I encourage you to read
them. The second part of the article, however, is history from my point of view :)
Thank you.
Authors background:
"mdxi" Can be reached for response to this editorial by e-mailing him at: mdxi@collapsar.cx