How does Open Source Software come to be?
This may seem like a simple question to answer, i.e. is written, just like any other software! It also might seem a strange sort of question to ask, but you will hopefully get my point if you read on!
NOTE: No thorough analysis supports the observations I report here.
It seems to me that the vast majority of the important Open Source Software comes to be through the following mechanisms:
- Cloning or reproducing in some way an existing design specification or similar. Examples of this route being Mono(.NET), Linux(Unix) and Wine(Win32). This technique is usually to force a product or interface into the open, by creating an alternative.
- Donating, i.e. some third party gifts pre-existing Closed Source to the community, examples of this being OpenOffice, Zope and Niku. This route is often taken by closed source product companies with an old product that is not generating much revenue. The closed source community uses this old product line to, improve their image, generate services revenue, stimulate demand for optional closed source products, kill off a competitor etc. In some cases the original developer continues to have some involvement in the development, in other cases not.
- Sponsorship, i.e. some third party, usually a commercial company, for reasons of their own, sometimes benevolent sometimes not, sponsors the community to develop a product or improve it in some way. Perl and Python are examples of this. Most often those sponsored are development leads. This is often taken by companies wishing to safeguard investments that depend on the continued evolution of the Open Source product, or to stimulate demand for a relate product like training or books.
- Academia, i.e. some academic project deliverable evolves or develops some Open Source software.
- Community demand, the final and by far the rarest mechanism is that the community sees a need, appoints a leader and builds a community to solve the need. The best examples of this are extensions to the four categories above, for example a driver for Linux or a filter for OpenOffice. I believe the most important example however is Apache.
- Individual demand, i.e. a person pursues an interest, or a personal need, programming languages are a good example of this for example boo and pylon. The passionate individual becomes the leader by default and may gather around then a small band of co-developers who share the interest.
I hesitate to put them in order of importance, because of the importance of the exceptions, however if we set aside Linux, then Donating seems to be the most important way for “market shaping” software to become Open Source. The order of importance is then probably:
- Donating
- Cloning
- Sponsorship, (because it funds the community leaders)
- Academia
- Community demand
- Individual demand
Of course these mechanisms are not the sole domain of Open Software, Free Software, (i.e. free to use), has also been developed extensively and uses all of the same mechanisms to come into being. An additional very important mechanism for Free Software being bundling, i.e. its free with this book, magazine, operating system, training course, paid for product etc.
Future posts will reveal why this analysis is important, in my view at least.