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