Q. How do you make money with open source?
A. "If open source is free software, how do you make money with it?" is a question I hear often, sometime expressed simply as "you can't make money with open source".
Since 2002, I have made my living working with open source software, specifically the OpenNMS project. While I wouldn't describe myself as wealthy in terms of money, I am both happy and comfortable. It is possible to make money with open source, although being free does mean a departure from traditional software business models.
By definition, an open source business generates revenue in ways other than selling software. While there is nothing in the open source definition that prohibits the sale of code, it does require that the party receiving the code be free to modify and distribute it. Thus, theoretically, you could only sell a piece of software once, which makes for a poor business plan. An open source business is best described as a services business providing value around an open source project or projects.
The last few years have seen a rise in self-labeled "commercial open source" companies, where part of the code is available under an open license, but there is a large amount of code that is still closed and licensed differently. I like to call these companies fauxpen source companies, since they are using the term "open" to market their proprietary software. Lately, the more politically correct term is "open core." Like shareware, the open or community software provides some features to get people interested, but the full featured enterprise version costs money to license. Often, a lot of money.
As a business plan, this makes sense. My complaint is that these companies trumpet themselves as being open source companies when, in fact, they are commercial software companies. This is an opinion shared by others, such as Brian Prentice of the Gartner Group.
If you want to start an open source business, there are a number of questions that you need to answer.
The first is the project focus: do you want to create an application that stands alone, or do you want to create a tool or library that is used to create other software? Many people think of software in terms of finished applications: Microsoft Word, Quicken, or World of Warcraft. However, some of the most financially successful open source projects have been tools or libraries, such as Spring, JBoss and MySQL. Since an open source business is a services business, tools lend themselves toward driving business than does creating a free replacement to a commercial software application.
This doesn't mean that you can't focus on application development. We market OpenNMS as a "network management application platform" where users can build a custom management solution, but it does work for many out of the box.
There are some difficulties in building an open source project where the end users are not developers, but it is not impossible. The important part is to define your end users and make business decisions based on that information.
One such decision is the choice of license. In the case of a tool or library, a permissive open source license is often beneficial. The end goal is to get as many people as possible using your project, by allowing them to use it in both a free and commercial manner will make the project more attractive.
In the case of an application, a more restrictive open source license is a better idea. This will prevent another, and perhaps better funded, organization from taking the work of the community and commercializing it. Licenses such as the GNU General Public License require that any changes to the code be distributed.
The main benefit of open source software lies in an active community around the project. Since profit is not driven through software sales, it is possible to attract people to work on the software for their own personal benefit without detracting from the business. It is important to create an atmosphere to encourage and build this community. There are a number of great resources on building communities, such as Jono Bacon's book. One way we do this at OpenNMS is to have a separation between the project and the business.
Back in 2004, I realized that there were a number of people, mostly associated with the mailing lists, that were contributing rather heavily to OpenNMS in both time and code. I wanted some way to recognize them. In the UK, one of the highest recognitions one can receive is a knighthood, such as the Order of the Garter. In the US, the winner of the annual Master's golf tournament receives the coveted hunter green jacket. At the time, it was possible to buy OpenNMS polo shirts in white or black, but what if I created a special hunter green polo shirt for these major contributors to the OpenNMS community?
Thus was born The Order of the Green Polo (OGP). OGP members receive polo shirts, OpenNMS e-mail addresses, and full access to the code repository. OGP members also became the governing body of the project. Each year we hold an annual developer's conference called Dev-Jam, and while anyone is welcome to attend, The OpenNMS Group pays the expenses of attending OGP members. This recognition, more than anything, has contributed to the success of the OpenNMS project.
Once you have chosen a project strategy and have started to build your community, what is next?
Decide how to structure your company. There are a number of options, but the two most popular in the US are to form a corporation or a limited liability company (LLC).
While I initially formed our corporation without the help of a lawyer, in retrospect it would have been better to consult one. There are many subtle differences that can have large tax consequences, and, depending on your goals, one may make better sense than the other.
The OpenNMS Group is a standard C corporation. Since the original plan was to seek outside investors, this made the most sense. Other options would have been to elect to become an S corporation, where the gains and losses of the company are passed to the owners, which is similar to an LLC. Avoid running a sole proprietorship since corporations and LLCs provide some separation between the company and the shareholders. There is a good chance that your company will become a major part of your life, and you will be risking enough not to risk your personal assets as well.
We never did attract any investors as we were able to, early on, adopt the business plan of "spend less than you earn". Most new companies fail. This is the default. But by focusing on profitability, we were able to insure that we could survive. While it doesn't align with many popular software business plans, achieving profitability early on really helped us shape our business to where we can focus on our customers, and not just our investors.
Now that we had our business plan we needed a mission statement. We settled on "Help Customers, Have Fun, Make Money".
It may seem painfully obvious, but it is amazing how many services based companies forget that the focus should be on helping customers. Customers respond best to people who enjoy what they are doing, so your employees should have fun at their jobs. This doesn't mean that every task should be met with unlimited enthusiasm - in any business there are going to be things that need to get done that aren't pleasant - but overall people should enjoy their jobs. In order to maintain profitability it is important to make money, but if your customers are happy and your employees are happy, the money will come.
When just starting out, the temptation will be to chase any possible customer, whether they are a good fit or not. This is not a good idea. As a services company, if you are trying to shoehorn your solution where it doesn't work, you will be spending a lot of time trying to make it happen. In the end, your client probably won't be happy and you have spent a lot of energy that could have been better used elsewhere. Resist the urge. Sometimes, what seemed like a good fit in the beginning will turn bad before it is over. Know when to fire a client.
In the support contracts that OpenNMS provides there is a clause that states that this service is not a replacement for having knowledgeable network management staff on hand. We had one client who decided that any notification he received from OpenNMS should be opened as a support ticket. So we would get a ticket like "OpenNMS is reporting high errors on this interface - what should I do?". After dealing with several of these we decided to not renew that particular client's support contract.
Assuming you are producing a product people want and that you are doing this in a profitable manner, your company will start to mature. You'll have to face a number of difficult decisions, such as when to hire more people and whether or not to get bigger offices (or offices in the first place). Take things slow and keep your eye always on profitability and cash flow. Try to map any expense to potential revenue, and if the revenue generated is greater, consider moving forward.
Most importantly, there is little difference between an open source business and any other business. While some have achieved instant riches, for the most part it comes down to hard work, helping customers, and making money (either by earning more or spending less). It's important that you have fun doing it. You might end up spending a decade at the same job, and that's a lot of time if you don't enjoy it.
Henry David Thoreau wrote "Most men lead lives of quiet desperation and go to the grave with the song still in them". Don't be that person.