I recently finished reading the "Unix Hater's Handbook" all the way through for the first time today. For those not in the know, it is an over-the-top, semi-serious, screed against the evils of UNIX in the 70's through early 90's. For the curious, a full copy can be (legally) found online at http://research.microsoft.com/~daniel/unix-haters.html
It is actually quite interesting to go back a ways for those of us who are of the newer generation of computer users. To put things in perspective, my first computer wasn't a Tandy, it wasn't an Apple II. I didn't travel down to the local RadioShack and plop down a thousand dollars for a pile of components, a soldering kit, and a manual that I then used to build a primitive system. My family was actually late getting into the computer scene which wasn't really surprising given that we were behind in every way technologically. In the late nineties, we boasted a large black and white television with VCR, broadcast television (no cable or, later, satelite). The first computer in the family was an outdated 386/486 given by a friend of dad's. My start in computers was after the advent of the still-running AoW (Age of Windows; sounds like a good game title). I am what you may call a second generation Unixer (and LISPer, Vimmer, and ...). My first Unix was Linux, Fedora Core to be specific. I took it up, originally so that I could claim familiarity with it on my resume, but swiftly fell in love with it. As my main software was already Linux-compatible (Firefox and OpenOffice for desktop apps, I did Java programming during the classes I was taking, and used the MingW ports of the GCC for my tinkerings in C++), the transition was painless. This, however, is drifting away from the original point. The point is that, as someone who is a Unix-guy in a post-Unix era and never lived during the Age of Unix, the time trip is always fascinating. It is a strange fascination, I know, but I love to read about defunct hardware and software thinking about that mythical day in the future when I say I wrote in Python and the answer is "Python? That's ancient. No one's seriously used Python for 10 years. Try Titanium. It is the coolest language ever". It is like hearing the battle stories of an aged warrior. So, when listening to these "battle stories", I found it most interesting first and foremost that my battles stories will, someday, sound just the same--except with the terms Unix and Windows interchanged.

Here are, in my opinion, the highlights of their complaints, the executive summary, if you will.

  1. Unix isn't user-friendly
  2. Unix is poorly documented
  3. Mail is a mess (delivery fails, goes to the wrong place, etc)
  4. Usenet
  5. Unix is insecure
  6. Unix is bloated and slow
  7. Unix requires a lot of hand holding, feed and care to keep up and running. This is a nightmare for sysadmins
  8. The file system
  9. C++
  10. The shell, pipes, and "Power tools"
  11. Programming environment

Even after reading the book, in its entirety, and enjoying it every step of the way (so I am not flaming someone who said something I simply didn't like), I still don't understand why a couple of those items count. Usenet, while being run primarily by Unix boxes, is not Unix--you don't need Unix at all to run it, as the authors themselves acknowledge, if I recall correctly.

Moreover, #3 is questionable as it refers to userland apps. Sure sendmail is awful (as a matter of fact, it is the only program that I have used where make had to be run after changes to the configuration files--a rather frightening notion in its own right), but that makes Unix awful? Word stinks, in my opinion. Does that make Windows trash?

Or take C++. That is a programming language that is anything but unique to the Unix world. Until the Java craze, it was the thing in the Windows world as much as the Unix one. Complaining about C++ and saying that this is a Unix problem is as ridiculous as complaining about Java and calling it a Windows one.

Back on topic, though, some of the remaining complaints are valid and others are purely a matter of taste. But what stands out about this list? Is it not what Mac and Linux advocates are complaining about in Windows? That the system is slow, buggy and insecure? That Windows servers require a lot of attention to keep running and relatively secure? Why, I do believe it is! Why would that be? Do we really learn so little from the systems that were built before ours? I think that part of the problem, though, lies in being the dominant system. Unix "back in the day" and Windows now were almost ubiquitous as the OSes used to run the computers of the day. As such, the OS sees a wide range of usage scenarios that, if left unaddressed, leave unhappy customers who leave the reservation. So, the company adds something here and something else there and people are happy--for now. Until the weight of such additions starts to weigh down the system and strains it to the breaking point.

Another common thread is that, in both cases, the technology became dominant before it was mature. Windows 3.11 wasn't what you would call a mature product when it was pushed out, but if filled a void in the market and then used that position to make sure that others couldn't do the same. Somewhat similarly, UNIX was let loose on the big wide world shortly after its creation (to play a game on a PDP machine, no less!). Both grew, but neither grew up. Unix (non-caps) has grown up a lot since Windows took over the world, but Windows, in a lot of ways, still hasn't grown up. The base system still shows its single-user roots and "ending a task" means pleading with runaway software to die and go away. So, why did Unix mature after it was pushed out of the spotlight? Capitalism and market forces. It had to improve enough not to die. Likewise, Windows is "borrowing" many ideas from its competitors as they grow in market share. Vista is a sad OS X impersonator in terms of desktop gadgets and eye candy. The PowerShell is an attempt to create a bash/.NET hybrid. All in all, things are getting interesting, but I think the core element here is competition. A monopoly hurts, not only whoever else attempts to start a competitor, but also the consumer, depriving them of the state-of-the-art in exchange for the inertia of the monopoly in question.

Contrary to what many a fan boy would claim, the best thing for the industry is not an Apple takeover. Nor is it a Linux takeover. It is to have at least two, preferrably three, big competitors in a dead heat. Whether that is Mac/Windows/Linux or MINIX/Haiku/Sun doesn't really matter. When this happens, you will see the following viscious circle:

  1. Company A creates some dandy feature X
  2. Company B copies it and extends it trying to EEE (embrace, extend, & extinguish) Company

Who is A and who is B will change and cycle in its own right, but neither will remain stationary. The customers wants will be heard because if A doesn't listen, B will. If B won't listen, C will. If none of them will, someone will start D up and supplant them all.
In conclusion, we need to remember two things:

  1. Competition is good
  2. "Those who don't understand UNIX are condemned to reinvent it, poorly." – Henry Spencer