It must have been about ten years ago now, perhaps a little more. At the time, I was conducting a self study of TCP/IP. The motivation behind the study had little to do with economic gain. I simply had a curiosity for how networks functioned – especially the Internet. I had set up a few small websites and written some freeware programs. The excitement of someone viewing my web pages or downloading my programs still makes me curious. Why was it so satisfying?
During this same time frame I developed a small Win32 application that performed an ICMP Ping. It worked very similar to the command line version on Unix. It differed from the command line version on Windows in that it provided much more data about the results of Ping operation. Most notably, it was an elegant (for the time) GUI application. The reason for writing the program was simply to allow me to advance my knowledge of TCP/IP.
Upon completion of the program, it was made available to the public via a few freeware websites. It was downloaded frequently. Every day upon returning from work, I would rush to the computer to go to the website and see how many people had downloaded it. On the days with a high number of downloads, I would feel energized and motivated. This frequently motivated me to enhance the program. Never once was profiting from this utility seriously considered.
A few months passed, there was an email in my inbox from one day a company in Australia. The letter told indicated this company was deploying a standard desktop software environment to the entire company. All 30,000 desktop computers would have the exact same configuration. The letter was requesting a price to allow them to include the ping program as part of their standard desktop environment. They were interested in a feature in the program that allowed the user to export the ping results to a text file where it could easily be attached to an email an email. The letter went on to say the company was wrestling with network issues. They needed an easy way to help resolve network problems. The users were not advanced and asking them to capture output from a command line Ping utility was proving to be difficult.
At this point, I was overwhelmed with excitement over the thought of up to 30,000 people having my software installed on their desktop computer. It simply did not occur to me to try to sell them the program. It was free software. It just was not about making money. I responded back to the company allowing them to use the utility free of charge. It was quite gratifying just knowing they were using my code. In the end, I am certain the company would have happily paid me for the software.
Almost every time I tell this story, someone talks about the money that was missed. The response is always the same. It was not about the money. It was about the satisfaction of knowing my code was in use, knowing someone found it useful, and knowing I helped this unknown company with their network problem.
This very simple example has millions of occurrences amongst open source and freeware developers. A few months ago, I purchased a MacBook Pro laptop. Not long after the purchase, it seemed to run very hot. Attempting, to solve the problem, I googled “MacBook” and “Heat”. One of the top results contained a link to a free program called “Fan Control”. This utility allows the user to control the fan speeds such that the system runs much cooler.
About two weeks ago, Apple released their new operating system known as “Leopard”. Upon install, I noticed the laptop was hot again. Back to google, I went. This time I added “Leopard” to the search. Sure enough, there was a link indicating there was a fix to the fan utility which made it compatible with Leopard. Not only did the author of “Fan Control” provide the utility free of charge. He also provided support and patches faster than most large software companies.
The over arching question is “Why?”. What is it that drives people to work for free? What motivates them to create high quality deliverables? Is it the satisfaction of participating in a broader universe? To belong? Is it a desire to leave a legacy? Or perhaps, a desire conquer or create something? Is it the ability to control ones own destiny?
Regardless. of the answer, software organizations have a unique opportunity to understand what drives software engineers and introduce those key characteristics into the work environment. For example, if it is true that leaving a legacy is important to developers, companies should create an environment which publicly (internal or external) acknowledges the work that has been accomplished by individuals.
Is it possible bring the passion of free software development into an environment where people are paid to produce?