After testing about seven different Linux-distributions and a few different BSD-based systems, at one boring night I ended up thinking the reasons for this large number of “almost similar” operating systems. In this article, I open some of my thoughts and finally sum up the results.
When writing this, some version of the Microsoft Windows is running on almost 90% of all desktop and laptop computers. MacOS X has less than 10% share whereas Linux is running on about 2% of all personal computers. All the rest systems - including BSD-systems - combine less than 1% share of all personal computers (yes, Mac OS X is BSD-based systems but it is special case). This information is based on user agent information of web clients, a wide set of results gathered from different studies is available in Wikipedia.
The curious thing is that there is three actively maintained versions of Microsoft Windows available, whereas there is dozens or even hundreds of active Linux distributions as well as several different BSD variants. Of course most of different Linux variants are derivatives from major distributions (Ubuntu, Fedora Core, Arch, etc) with relatively small amount of changes. However, the number of major distributions (more than 10) is still insanely large compared to Microsoft Windows.
It is good to notice that whereas open source OS projects combine less than 3% share of all personal computers, the number of different open source OS projects is counted in dozens. Four largest proprietary operating systems (Windows Vista, Windows 7, Windows XP, OS X), have over 90% combined market share among personal computers.
However, it is also good to notice that in servers and other computers the numbers are opposite. According the statistics gathered from public servers in Internet, usage share of Linux in web servers is 60-80% whereas Microsoft Windows is running in around 20-40% of all web servers.
Human behavior on choosing operating system
In this world there are two kinds of people: those who care which software they run, and those who do not. Most people do not, as long as the software fills their needs. All they need is computer which works as they expect. The computer is not their interest, it is only their tool or source for entertainment.
There is some people who care which software they run, despite if their needs are completely filled or not. The reason for this is mostly at least one of following:
- social status
- interest in software itself
- concern about personal privacy, security or legal rights
The people who respect usability are willing to pay extra (buy Mac) or spend some time (install Ubuntu) to get better usability. They are relatively advanced users who work much on computer. However, if they are not interested in technology itself or concerned about license issues, they are keeping on mainstream systems or distributions.
Some people like appear to be rich (using Mac) or advanced user (using Ubuntu) or completely freak (using some customized BSD variant). This is how they want to improve their social status by the software they are running. However, it is good to notice, that some people are actually rich, advanced users or completely freaks but they may not want to show it up.
Many people are not interested only what they can do with their system, but also how it actually works. They want to tweak and hack it, learn how it works, find bugs and make it work better. This is how less-popular and non-mainstream systems will gather the users and developers. The common operating systems are quite static and non-tweakable.
The reason why GNU, FSF and free software movement in overall have been founded is that there is many users who do not like strict licenses and EULAs. Moreover, many people also do not trust software which source code they can not read or modify. This is one of the reasons that Linux and many other systems have strong development communities around them.
Common for all these kinds of people are that they are relatively advanced users and they have at least some interest in technology. Many of them (especially those who belong last two groups) have some interest in developing own software and improving existing systems.
Communities among technical users
The main difference between closed and open source projects is that in open source projects, the development is a transparent process. Anyone can follow the mailing lists, drop the ideas and fix the bugs. Also, in open source world, the users are much more interested in development process compared to closed projects. If there is a clear bug found from Linux system, average user will file a bug report. How many Windows users really send those reports for Microsoft?
This open development process is gathering the interested users together. Many developers are willing to make some effort to improve the system. I have found several reasons for this, listed below:
- There is a problem to fix
- Developing is interesting and rewarding
- Having contributed to an open source project looks nice in CV
- Social status in open source community
Typical case is that user with development experience is not satisfied with some software or he/she finds an annoying bug. As the user do not want to wait weeks or months that the software will get fixed by developers, he will do the necessary changes in source code himself. The motivation for spending the effort is fixing the problem.
Now as the problem is fixed, it is reasonable to publish the update. This way the developer will both improve his social status in open source community as well as get some “work experience” in his CV. Also, the effort for publishing a piece of source code is almost nonexistent so why not to share improved version with the other users?
This is basically how open source projects keep alive and up-to-date. When the project has grown large enough, the development hierarchy is formed around the project. Typically project owner is the one who accepts more official developers. Project owner is either private person, group of persons or in large projects like Linux kernel or Debian - a foundation. The developers have mostly their own responsibilities or specialities. The more “serious” the project is, the more strictly new developers are allowed in to the project. The higher position a single developer has in project hierarchy, the more significant decisions he can do.
Why the new projects are founded
As the project has grown large enough, this eventually leads to disagreements inside the project. The developers might have different intentions and goals. When the disagreements are significant enough, it usually leads to situation that the project is divided in two or several different branches. It is good to note, that this “disagreement” does not necessarily mean an aggressive conflict. The developers may as well agree that “okay, we have different intentions and goals so let’s separate the project in two branches”.
The reason for this is that in open source projects the developers are usually not getting paid. Their motivation to work is to do interesting work and develop the project forward in the way they think it should go. As the project is going another way, the developers can just take a copy of current source tree and start their own sub-project independent of the original project. Someone might say that is the problem of free software. Someone else might say that is the beauty of free software.
The technical details are not the only reason for disagreements. It is also usual to argue about philosophy, design principles or development hierarchy of the project. For example OpenBSD was founded by Theo de Raadt in 1995 as he was asked to resign from NetBSD core team year before. The reasons for this are not clear but it is rumoured that de Raadt’s strong personality caused some problems in the NetBSD community.
Also another reasons to start new sub-projects exist. There may be a need for a customized version of the software or the system. However, it is reasonable to keep the “main project” as generic as possible. Instead it might be good idea to release specific version for specific purpose. For example Ubuntu has (update: previously had) netbook-specific version Ubuntu Netbook Remix.
The developers also like to do work they are interested in. New project opens “new positions”. For example, becoming an official Debian Developer and getting full access to Debian development branches might take years and requires much of development or maintenance effort. This is how Debian project makes sure that the developers are really committed to the project and also have some knowledge - and that is not wrong. New projecs, however, give new developers chance to jump in to the interesting tasks and work in the area they really like. This is why some sub-projects keep alive.
To sum it up, several reasons have caused the high number of different Unix-based systems. People prefer different properties in their systems. People have different opinions about design philosophy, licensing and strategies. New projects are founded to address different problems. In the open source world, communities around the projects tend to be relatively small (compared to huge companies such as Microsoft or Apple). Also, the software engineers and developers are relatively innovative people so new ideas are made up frequently.
These reasons have led to the situation that we have several main Unix-like operating systems / distributions which have large and strong community around them, foundation to coordinate things and even some funding. Then we have bunch of “medium-sized” projects which are mostly derivatives of some larger one. And then again we have a number of small projects which are basically small group’s work and which mostly do not live very long.
As the final conclusion: Linux distribution timeline in graphical format (link to Wikipedia).