Many programs are written by companies and individuals in a traditional, closed source environment. When these companies and individuals learn about open source, they often want to participate by contributing code they have written. However, even when there is agreement with the philosophy of openness and a strong desire to operate this way, the means of doing so is not always clear. Matthew Helmke, author of Ubuntu Unleashed 2011 Edition , gives an overview of the issues that should be considered and, as a result, helps interested companies and individuals know where and how to start the process of opening their code.



In addition to working as a part of the Ubuntu software community and my work as an author of Ubuntu Unleashed and The Official Ubuntu Book, I work in a software project. This project is in the process of releasing programming code that has been written entirely in-house. This is code that no one has seen or been able to access outside of those working here, but we want to open it up to a wider community. To make the process as smooth and clear as possible for all involved, we realized that several questions need to be addressed before we release our software using an open source license. This article highlights several of these questions and will provide a good foundation for others who want to move their code from closed to open source.

I did not invent this process and am not the first to ask these questions. The questions are the result of struggling through a process that involved some trial and error and a lot of good advice. I must acknowledge upfront articles, books, and personal email conversations from which I benefited, especially from Andy Oram, Karl Fogel, and Bruce Perens.

Why Is the Code Being Released?

This is a philosophical question, but also fundamental to every other question. Are you releasing code in order to invite others to participate in a collaborative process, or is it being released solely for the sake of transparency, so that others who may run the program know what it contains? The answers here will inform every decision that follows, so think this through carefully.

You want to determine at the very beginning whether it is your desire to lead a community around the code, or whether you just want to let others use what you have written as you move on. Will you maintain this code in the long term or are you simply setting it free for others to use, maintain, and build upon?