Open sourcing a closed codebase can be difficult. The typical approach is to decide that you’ll go open source, make big news about it and then try to figure out how to proceed. It’s no wonder many open source transitions end up being more painful than expected and fail to generate as much community interest and involvement as hoped. How can you do better?
0. Start small
Even though your marketing people will be eager to use a good story, you should to avoid the temptation to make a big deal about your shiny new open source project. Instead, start with small, reversible steps that allow you to get comfortable with the new way of developing software before making public commitments. In other words, learn to walk before you try to run. The next sections outline how to do this.
1. Clean up the codebase
Do you really know what’s inside your existing codebase? Do you have rights to use and redistribute all the included intellectual property? Are there trade secrets or other bits in the codebase that you’d rather not show everyone? Do you wish to keep parts of the codebase closed so you can keep selling them as an add-on components on top of the open source offering?
Answering these questions should be your first task. You’ll need to spend some time auditing and possibly refactoring your code to prepare it for the public eye. Depending on the codebase this could be anything from a trivial exercise to a significant project. The nice thing is that the increased understanding and potential modularity you gain from this work will be quite valuable even if you never take the next step.
2. Open up your tools
Now that your codebase is clean and ready for the public view, you can (and should!) start using public tools to develop the code. You can either make your existing version control, issue tracking and other tools public, or migrate to a new set of public tools. There are plenty of excellent free hosting services for open source projects, so you have a good opportunity to both lower your maintenance costs and improve your productivity through better tooling!
There’s no need yet to worry about external users or contributors. In fact the fewer people you attract at this stage, the better! The main purpose of this step is to make your developers comfortable with the idea that anyone could come and see all their code and all the mistakes they are making. This is a big cultural change for many developers, and you’ll want to start small to give them time to adapt in peace.
3. Engage the community
If you’ve followed the steps so far, you’ve actually already open sourced your codebase. Are you and your developers comfortable with the situation? It’s still possible to switch back to closed source with minimal disruption and no lost reputation if you’re having second thoughts. But if you are willing to move forward, now is the time to start enjoying the benefits of open development!
Call in your marketing people to do their magic. Tell the world about the code you’re sharing, and invite everyone to participate! If you’re product is in any way useful to someone, you’ll start seeing people come in, ask questions, submit bug reports and perhaps even contribute fixes. At this point it is useful to have a few people ready to help such new users and contributors, but it’s surprising how quickly the community can become self-sufficient. More on that in a later post…