Overview of Operating Systems
When you turn on your computer two things happen. Your motherboard first begins to work, powering up components and testing them. The instructions on what to do are built into the motherboard, and they are stored in what is called the BIOS (Basic Input/Output System). After identifying hardware, and other routines, your computer then reads instructions stored in the MBR (Master Boot Record) of your primary hard drive and will either begin interpreting/running a hard disk or bring up menu options -- usually for booting between hard drives or operating systems.
The operating system is the program that runs between your hardware (motherboard -- CPU, disk drives, cd-roms, graphics card, network card, etc.) and your software (Microsoft Office, Mozilla Firefox, Half-life 2, VIM :(, Gimp 2, etc.). The responsibility of the operating system determines what data/instrutions to send to your CPU (Central Processing Unit) located on your motherboard and when to run/access other hardware components. Breaking down the operating system tasks, here are some of the following mundane responsibilities:
- Managing multiple users either using the computer one at a time, or simultaneously (multiusers)
- Running two or more programs simultaneously such as Mozilla Firefox, Notepad, and Winamp (multitasking)
- Running multiple tasks for a single program simultaneously (multithreading)
- Figuring out how to distribute commands between two or more CPU's while
not corrupting data or having it run out of order (multiprocessing)
Many operating systems exist today attempting to run these tasks in different (or similar ways) while improving on the others. If you have a mainframe (a very professional computer server built to never be turned off and never to fail) operating systems exist such as ones for the IBM zSeries, Unisys Clearpath IX. If you are running a server built for high reliability and advanced security/management options, leading contenders include Linux variants (for example Redhat, Debian, SUSE), Unix variants Solaris (my personal favorite), HPUX, and also BSD flavors including Mac OS X, and the strong late comer Microsoft Server 2003 (soon Longhorn - Vista). If you are a typical user running a PC at home, while most of these server companies offer a desktop version - only one company dominates, and that is Microsoft Windows XP.
The Problem with Operating Systems
If you are still with me at this point, you may start reflecting on what I said, and trying to figure out what is wrong with operating systems. You may start thinking about Mac OS X and consider it a problem that you cannot access all menu's from the keyboard alone, but then you realize some versions of Windows CE (for mobile phones) do not even use a keyboard. Or you may start thinking about the advantages of how Microsoft Windows looks as opposed to GNOME or KDE (on Linux variants), but then you realize that Linux often is installed with no graphics capability. Perhaps you consider Solaris with the Java Desktop System or CDE and how difficult it is to maintain their servers from Graphical User Interfaces (GUIs) when the tools are meant to only be used from command line -- but, then you realize openDOS has no GUIs at all. Maybe you are a security buff and you are considering security issues, or a resource buff and any operating system that uses more than 32 MB of Ram is unacceptable. In response to all these considerations, no, I am not referring to any of these issues but something much broader and restrictive of the progress and evolution of operating system growth.
Have you ever wondered why Microsoft Windows comes preinstalled on every new computer you buy? The one caveat being Mac's (using Mac OS X) occupy a niche of the computer market. Contrary to what you may previously have thought, there are many very able operating systems available -- so why is there no demand for them? There is need for them - as previously suggested some are much better at some tasks than others. Perhaps the most common reason given is that people get accustomed to how one operating system does things and they don't want to try something new. However, how many normal computer users have you seen try another operating system? Personally I have never seen that, although I have heard many success stories of grandma's being taught how to use Ubuntu (Linux derivative). I will not deny that it is difficult to learn new habits that go with a new operating system, but there is a greater problem than this.
The single greatest reason why there is little demand for operating systems other than Windows XP is that the software packages we use often are available only for Windows XP. We could install Ubuntu and run it for basic tasks such as internet usage and minesweeper. What happens if we require an important program such as BibleWorks or Logos or the Microsoft Office Suite (Excel, Word, Powerpoint)? It is true that there are alternatives to the Microsoft Suite, but software programs take just as long if not longer to learn than an operating system, and how does anyone have the time to learn how to use other programs not knowing the limitations of these programs or if they will even work with other people's programs! BibleWorks and Logos for instance have no counterpart on MacOS or Linux or Solaris; if you want to use these programs you must use Windows XP. Even if another operating system has better security, better user interface, better data management utilities (to prevent corrupt data) or just plain looks cooler.
If I could propose an analogy, suppose that iPod's had 99% of the music player market, and that the interface used to plug in accessories for the iPod (such as alarm clock, speaker system, auto-connectors in cars, FM transmitters) was hidden from anyone to see and patented. No new music players will ever break ground because they will not work with all these accessories that are already created. This scenario will stagnate the digital music player environment to the advancements of the iPod. Compare this to operating systems where all the software written for one is not available for others. Yes there are attempts to make comparable software on other operating systems - but why should you have to purchase two sets of software programs (or accessories) just in case you need to switch from one operating system to another (or music players). There is a lock-in to one operating system, and this stagnates growth greatly in all areas. Adding an addentum on the aforementioned Mac computers, I do not recommend them because not only do they enforce a lock-in to software, but also to hardware resulting in a larger problem than Microsoft WindowsXP if they ever held the majority of computer ownership.
Boiling down the problem into one sentence it goes like this: The problem with operating systems is that companies who make software choose one operating system to support and in doing so create a vendor lock-in. No longer is there an option on what we can use; now there is only one operating system that can meet our needs. It does not matter if one operating system creates a huge security risk (if a bug exists in one operating system, it now exists in the majority of user computer's); you must live with the risks. It does not matter if an operating system will only run on steep hardware requirements; you must buy a new computer or you will not be able to use the software packages you wish to run. It does not matter if you could install an operating system for free; yes an upgrade costs hundreds of dollars, but you must pay to run these unique software programs.
The Solution to the Operating System Lock-In
Complaining without offering solutions is not often very helpful so I will throw my two cents in on what the best solution would look like. If you are still following what I am writing at this point, and if you agree even a little bit, then maybe I could produce some new ideas, or sway your opinion. With popular opinion perhaps the right people will hear, and perhaps someday change will occur breaking us out of this operating system monopoly into a society of choice and security. As an addendum, this change would also result in decreased costs on all computers in America (we lose the Microsoft tax), and forced upgrades would take a great burden off the less fortunate in our country.
Solution #1: A non-profit organization, or a government organization creates requirements for American operating systems. These requirements would result in complete interoperability of software packages between operating systems. The benefit of this is that operating system lock-in would not be a factor anymore. The negative to this is that it would require such a vast rewriting of current operating systems that companies that produce these systems would mutiny together or end up going bankrupt trying to meet concessions. This also benefits choice in desktop environments (GUIs), but perhaps does not offer enough choice.
Solution #2: Riding on the heels of the open source movement, a state sponsored open source group would create a framework that all operating system companies could build on. This framework would create a standard for all software, completely removing any interoperability concerns, and the open source model with government funding, would encourage openness of code and a level of security that is unparalleled today. While at this point I am uncertain in how complete this framework should be, a lesson from Linux might be appropriate. Linux, while referred to as an operating system, is actually nothing more than the brain of an operating system (also known as a kernel). GNU tools, especially from the FSF (Free Software Foundation) fill in the holes to make a complete operating system for users. If a framework was created that consisted of only a micro-kernel (small brain to organize how things work) and a set of guidelines on how the holes should be filled, a complete, secure, and productive computing environment could be introduced. Not only would this operating system be the most reliable and secure system ever seen before, it would also introduce a freedom of software and desktop environments that would result in a vibrant and interactive develop of computer software and user interfaces.