Ultimately, the health of an open source project is measured by the production of useful code, and the broad adoption of that code. This is easy to spot in many examples, projects like the Linux Kernel, Apache Tomcat, Samba, GNU gcc, etc are so useful, and have become so broadly adopted that they are literally the milieu in which the modern world is embedded.
It’s easy to spot the successes. And it’s also easy to notice that there are thriving communities collaborating around such successes. It’s much more interesting to ask what contributes to successful open source communities.
I would maintain, that successful open source communities lower the barriers to useful participation. They lower the activation energy for innovative activity. Some of the ways they do this are rather obvious, and some are less so.
Technical Barriers to participation:
- Is it easy to figure out where to get the source code?
- Is the code easily understandable to someone likely to be capable of contributing?
- Is it clear how to build the code?
- Can someone qualified to contribute easily figure out how to usefully modify the code?
- Is it clear and straightforward to contribute changes back upstream?
- And are all of these true even if you aren’t already part of the ‘in crowd’ for the project?
Social Barriers to participation:
- Is the community open to communication and participation from outsiders?
- Is it clear and obvious how to become part of the conversation around the development of the software? Is it easy?
- Can consumers get reasonable access to and attention from developers?
Legal Barriers to participation:
- Are you using a standard license ((L)GPL, Apache, BSD, etc)?
- Is your entire code base licensed under that license?
- Is it clear to contributors what license they must contribute under?
- Is it clear to consumers what license they are consuming under, and what they have to do to comply?
Evaluating Community Health:
The higher the barriers to collaboration a community raises, the harder it is for it to become successful. When starting an open source project, or evaluating whether to consume or contribute to one, it can be helpful to consider the barriers to participation, as early indicators of whether or not the project is likely to become or remain successful.
What other barriers to participation do you feel are important to be kept low for open source success?