Having an Open Source license is not enough to bring users and developers to your project. You need an active and supportive community too. This document looks at what makes a successful open source community.
Types of Community
Your user community is the one you need to nurture the most. Users are the lifeblood of any project, without them there is no project. However, they provide more than a reason for being, they also provide valuable feedback about whether the project is doing the right thing. You should give your users the opportunity to tell you what the requirements of the project are, which are the most important features to implement, which bugs are the most important and what strategy the project should adopt.
Users are also the best people to support other users. People who work on the code are often too involved to be able to give clear and concise answers about how to do something. However, those who are actually using the code on a day to day basis understand the frustrations of being a new user and have found the simplest way of doing things.
Finally, your users are important because they are your future developers. Their contributions may be in the form of documentation, or they may be in the form of bug features or even new features. If they do not have the skills themselves to implement what they need they may have the financial resources and sufficient desire to seek out a contractor to do the work as a paid employee.
Rule number one of community development is "look after your users".
A committer is someone who has shown commitment to the project. They have contributed to the project in some way other than asking for things to be done. That is, they have done more than report bugs that need fixing or make feature requests, important as these things are, someone has to actually do stuff. Committers show commitment through one or more of the following actions:
- write documentation
- fix the bugs
- implement features
- support other community members,
- manage infrastructure and IPR
- evangalise about the project
Supporting Common Interests
Communities have common interests, one way of ensuring that new members become aware of your community, and to ensure existing members keep coming back, is to provide services supporting those common interests. This section describes how you can leverage other sites services to increase the offering to your own community.
Targeted Search Engines
[http://involve.jisc.ac.uk/wpmu/oss-watch/2007/05/11/create-a-customised-google-search-engine/ Create a customised Google search engine] Great if there are several sites containing the bulk of the community and these sites a google-accessible. Less good for communities which google doesn't index.
Examples of Targeted Search Engines
[http://www.google.com/coop/cse?cx=007950368875930262986%3Avwrqfjvw_u4&hl=en Open Source in UK Higher Education]
[http://oss.ricshreves.net/ Open Source Project Management & Governance Search Engine]
[http://www.google.com/coop/cse?cx=004162906199039189909%3Aaqiih2cm-fa Learning Technologies]
Your community will undoubtedly be interested in events relating to their interests. Why not maintain a calendar containing these events?
Keeping the Community Informed
There are two types of community member, the user community and the contributor community. Each requires different information, so each requires a different communication channel.
Version Control Commit Mails
Most version control systems will send an email to a mail list whenever a change is committed. This can create a considerable amount of mail, however, it is a very useful mechanism for keeping your contributors informed. Once you get used to reading them they don't take a great deal of time to process. Also a good way to encourage committers use good commit comments, because people actually see the comments immediately.
My approach is outlined below:
- I use Thunderbird so the [https://addons.mozilla.org/en-US/thunderbird/addon/4268 Colored Diffs] add-on is really useful. It makes reading the emails much easier.
- have filters that separate the commit mails into sensible groups (the subject is always the same form, so I filter on the module name, in this case "trunk/communityWorkshop"
- review subject line first - it may be a file you don't care about
- Review the log message - this should be enough to understand the intent
- if appropriate review the actual change (check for spelling errors, get full details of the change etc.)
- if comment is necessary just hit reply, it will go to the team discussion list
- if no comment is necessary archive the mail