I often hear argue about "windows!" versus "macs!" with arguments that have little or nothing to do with the features of an operating system. I suppose it is our right to argue about anything, (even things we dont understand or perhaps especially those things), but the lack of substance in these debates got me to thinking about the "computer experience" and why I switched to a Mac last year.
What is a computer?
A computer is two things: hardware and software. (Actually I would argue that a "personal computer" is a complex system of hardware and software parts that work together, but that is another discussion.)
For most people, "hardware" means the beige box that sits on their desk. MFLOPS, MIPS, little-endian, big-endian, 70Watts, 90nm process, S-ATA, MHz... People dont understand what those things are and they dont care. The hardware is just a box.
The first question people ask about that box: "Does it run Windows?" My conclusion is that when people talk about computers they are really talking about the software.
In particular, people are talking about one very special piece of software, the operating system. Few consumers could tell you what an operating system is or does, but by providing the user interface to the computer, the OS has become synonymous with the computer.
What is an operating system?
In simple terms, the operating system is a program that allows one to run other programs, which I will call application programs, on that hardware. The OS is a special program because it knows how to talk with the hardware and it runs first. When the OS program is running, it provides a framework that allows the application programs, like a web browser or solitaire, to run. Applications talk to the OS and the OS talks to the hardware, which is what allows you to write a program for WindowsXP and have it run on any hardware (at least 74% of the time :).
In addition to hardware like the disk drives and processors, the OS handles user input from things like a keyboard or mouse and creating output on a display. An OS is fundamental to our experience with computers yet I think it is poorly understood and taken for granted by most consumers.
What are my choices?
A common computer user today is aware of three flavors of operating systems: Windows, MacOS and UNIX/LINUX. It is unlikely that they have tried them all or understand how they are different but they have heard the names and know that there is some difference.
Windows and the MacOS are similar in that they bundle an operating system with a graphical user interface based on windows, a keyboard and a mouse. Microsoft stole this design from the first Apple Macintosh and Apple stole the idea from Xerox but where the design came from is irrelevant at this point. A graphical, windowing user interface (GUI) is ubiquitous and the GUI is the standard way consumers interact with personal computers today.
For many people, the "operating system" IS the user interface. Since most people dont really know what an OS is/does, their understanding of an OS revolves around how they interact with the computer, which is defined (and constrained) by the GUI.
UNIX and the LINUX variants are different from Windows and MacOS. For a purist like myself, UNIX is a "true" operating system because it does one thing: provides a platform for other programs to run on the hardware. (The bonus with UNIX is that only 6 people understand how to use it.) Providing a graphical user interface is not a part of this core OS mission so it is not included in the "kernel".
If you try one of the many LINUX versions, not only do you pick the flavor of LINUX but you also pick the user interface that you want to use with it. Microsoft argued in court that they were unable to ship a version of Windows without Internet Explorer but it is common for UNIX to come un-"bundled" with a GUI. A purist will run BSD UNIX through a text-only interface while a more normal user will use one of the many products that provides the familiar graphical window interface we are familiar with from Windows and Macs.
Thanks for sharing
Is any of this important? Probably not (but thanks for reading anyway :). I hope to cover some more aspects of OS and software design in future posts.






