Open source software — software that is free to the user and whose source code can be modified and distributed freely — is ubiquitous and offers solutions to a wide range of needs. Open source as a business strategy is a complex mix of product, marketing, politics, and sales strategies. And, as a personal endeavor, open source can achieve some goals that are unavailable in a corporate environment.
There are good, not-so-good and bad reasons to offer your code as open source. The good reasons arise out of deeply considering the desired outcomes. Here are some of the good ones:
- Scratch your itch: You’ve looked far and wide for a solution to your problem and you’ve waited forever for someone to step forward to solve it. Whether it is home automation or a photo library manager or some neat hack that makes you more efficient at work, you have to figure that there’s other people with the same problem. Make your solution open source and like minded people may flock to your code and make it better. A note of warning: expect only a tiny percentage of users to contribute back. Your return on investment is usually non-monetary: goodwill and a feeling of having made the world a better place.
- Get distribution: Chances are that the problem your code is solving is widespread and there are a good number of strong solutions out there already. Open source software can circumvent the incumbent’s stranglehold on the market — the convenience of obtaining open source and the afforded legal freedoms are powerful incentives to users to use your (even if inferior) solution. If you have identified underserved consumers, you can target a good-enough open source solution that can get you a beachhead.
- Attack the competition’s value chain: Your software is likely part of a software stack used by your users to get a job done. For example, your software may rely on the underlying operating system APIs. By offering lower layers of the stack as free and open source you seek to do a few things: (a) offer a more convenient software stack, (b) make money on (proprietary, or as-a-service) higher layers, [c] commoditize the lower layers of the stack and [d] take away some of the pricing power / barriers-to-entry/lock-in wielded by the competitor. This strategy requires deep pockets and a lot of patience. Alternately, you might seek to establish a new abstraction layer or software standard on the competition’s API with your open source software.
- Attract talent to your company / show off your talent: Developers are scarce and top developers are rarer than hen’s teeth. Developers care about open source software for many reasons. Developers want to work with other top developers — whose work is only visible when open sourced. A developer’s contribution to open source code lives beyond her career at any one company. Open source code has associated communities that are valuable for finding new jobs and opportunities. By significantly contributing to existing open source communities or by open sourcing significant pieces of software, a company can burnish their reputation amongst developers of the open source bent.
- Make your culture more open: Programming is a social activity. Developers need to communicate with other developers about their code. When the code is owned by a small team, coding styles become idiosyncratic, documentation becomes opaque and testing is lower priority since team members develop their own unspoken understanding of each other’s code style. When code has to be made public to thousands of eyes, developers suddenly have to care that their code is complete, is easily readable, easy to change, and is well documented. This is usually a good thing and this culture should carry over to the proprietary parts of the code as well.
- Your competition is open source: Competitors will adopt an open source strategy when they are jockeying for leadership in an emerging space. You may have no choice but to follow suit.
- The market expects open source software: The market may be conditioned to expect easy-to-consume software. This is true for example, in the infrastructure space. That usually means open source code.
This article explored some of the ‘why’ of open source strategy. Once you decide that open source is the right strategy, it takes a great deal of knowledge (and patience) to do it right. There are innumerable ways to get it wrong. Few successful strategies are repeatable. And if you are hoping to make money off of your open source code, it can be a long and winding road with lots of forks to dead-ends. That is a topic for a different (and longer) article.