Monday, April 22, 2013

General Theory of Open Source Software -- So Much is High Quality ... How is this Possible?

There is a lot of open source software available for various tasks -- a shocking, surprising amount.  For example, yesterday I used GIMP -- a graphics image manipulation program.  GIMP runs on Linux and Windows.  I find it easier to use than the equivalent commercial products. How can GIMP exist for free? How can there be so much good quality open source software?

Following is a theory about how open source software comes into existence ...

#1  An experienced software engineer needs a tool to use to help him write code for his day job, where he is working on Project X.
#2  He cannot find a tool that does what he wants.  Or, there is a commercial tool that meets his needs, but his management will not buy it for him.  Therefore, he creates his own tool, during the day, while his EMPLOYER IS PAYING HIM TO WORK ON PROJECT X  (but he could not work on Project X without a tool).  So inadvertently, his employer funds the creation of this tool.
#3 The engineer will implement exactly what he needs and no more to create the tool, and then he is done.  He spends about two months on it, because that's the maximum amount of time he can allocate before his boss asks "where is the code for Project X? Show me your work for Project X!"
#4  That same engineer then uses the tool he just created to accelerate the work on Project X in his day job.  By using the tool, he is finding bugs in the tool, and fixing them, so he is doing his own quality assurance and testing  on the tool.
#5  Other engineers see the tool or ask about the tool, and pretty soon they are using it.  They are helping fix bugs with the tool. Some of them go to other companies and ask if they can use the tool.
#6  The original engineer knows that he cannot give code to others outside the company, so he asks his manager.  He describes this thing he threw together to get Project X done on time and asks his manager if he can contribute it to the open source community.  The distracted manager says "yes".
#7  The original engineer creates an open source project and contributes the tool.  Then he tells other engineers that asked about it where they can get it.
#8  The original engineer still has his day job, but now he has fan base and pride because he is the AUTHOR of the cool open source tool.  So, as a matter of pride, he devotes much of his personal time (and he sneaks time from his day job) to continue updating the tool.

This open source software development model works because:

A)  The funding comes from BigCo
B)  The experienced software engineer developing the tool was motivated by a real need
C)  The project was sufficiently simple so that it could be done in ~300 hours

Contrary to popular belief, a group of altruistic software engineers do not band together for a few years to create an open source software product that they magnanimously provide at no charge to the general public and cheerfully support and update (although I suppose that does happen on occasion).