Running An Open Source Project
I just finished reading the book “Producing Open Source Software - How to Run a Successful Free Software Project” by Karl Fogel (pdf available). CollabNet has employed Karl Fogel for the past five years to work on Subversion. Prior to that he has been involved with GNU Emacs and CVS development.
If you fall in one of the following categories, I highly recommend taking the time to read this book. Especially if you fall in one of the first two.
- Planning to start an open source project
- Currently running an open source project
- Involved with an open source project
- Managing a team of distributed developers
Much of this book is really a primer on how to work with and manage people. After all, open source development is really built on relationships more than even technical know-how. Manage the relationships well, and people will happily contribute. Do a poor job, and you may find interest lacking (though interest may lack for many other reasons as well).
But Fogel also delves into how to structure a project and administer the day-to-day activities that are required to run a project smoothly. Some of the topics he covers include:
- How to choose a license
- Who to give commit access to
- Writing Developer Guidelines
- Hosting and choosing version control
- Managing communications
- Assigning roles
And the list goes on.
It is my hope to start applying some of the principles he writes to open source projects I am involved with such as Subtext. Though Fogel’s experience and advice seems targetted to very large open source projects, I think much of it is useful for small projects as well. Besides, if you don’t prepare for growth, you will never see growth. And if you do grow big suddenly, it is better to be prepared than caught off-guard. But having said that, it is also important to adjust the level of formality in processes and structure to agree with the size of the project. So I won’t let myself get carried away.
Instead, I hope to start a short blog series to summarize and perhaps expand on certain principles gleaned from the book.