Material contributed by Steve Crouch, Neil Chue Hong, Mike Jackson, Simon Hettrick and Shoaib Sufi
Whether for research, administration, learning or teaching, software is an increasingly valuable tool and output, and needs to be managed as such.
This is a briefing paper for project leaders or managers, researchers who program, and research software engineers working on new software projects, and anyone involved in the early stages of a software development project. This paper will help you to consider how you can create a community around your software - taking it from being used only in your own group, then by your collaborators, your wider domain, other domains and then even by the wider public.
Starting a community is, of course, an important step in software sustainability.
Why is community building important?
Software has a distinct lifecycle. As software matures,the way it is developed and people’s expectations will change. One of the significant steps occurs when when your software becomes a viable product rather than just a project. Indicators of this change include having funding from more than one source, spending a larger proportion of time on support than on new development, having many active users outside your direct collaborators, and having users who are willing to contribute back to your project.
Your software can have a far greater impact if it is made available to the others. But as your software is used further and further from home, you need to consider how to interact with the users of your software.
Why not just start a community later?
The start of a project is often a period of rapid development of functionality, but it is also an opportunity to get more input into the direction of the software. Much like other aspects of software development, community development is more successful if started early. By considering how to put in place the foundations of a community early, you can ensure that the time and money you put into the software-development process will be well spent, and you will be able to balance control over the direction of the software with expanding its user base.
Setting up communications mechanisms, like a website, mailing lists and twitter etc., early will help develop your community presence. It is also useful to take time to understand the software that is available in your market, and how competitors’ approaches are similar or different. It’s important to remember that community building skills are very different from technical skills, and these skills need to be developed.
At the end of a project, there is a lot to think about: the next project or how to gain funding to take the software to the next stage. Having an active and engaged community of users - no matter how small - increases your understanding of the future direction for your project, and can help in securing funding to sustain your software.
Spreading the word
Ideas need to be shared, so consider the best ways of reaching out to your target audience.
Identify your initial audience
You probably already have a good idea of who the first members of your wider community will be – they are the people one step removed from your current group. Understand which of them will be able to provide good feedback and see if you can develop better ways of involving them in requirements gathering or user testing processes.
It is important for potential users to have visibility of your project and the software. A website is a good way to broadcast information, and should be combined with some means of letting people communicate with you, either through an advertised email address or, better still, a mailing list and Twitter. An important point to remember is that you should always respond to input you receive, and publicly if possible, being on Twitter means people will see if you have responded to a reasonable mention.
Tell others your kid is destined for great things
At this point in the maturity lifecycle of your software, you are still very much in control of the direction its development will take. This does not mean that it should be carried out in secret. It is a good idea to advertise the next steps you intend to take, perhaps through a roadmap on your website or through a series of blog posts. This not only encourages feedback, but also helps to manage expectations.
How do the professionals do it?
Professional software companies invest a lot of work into understanding their market and the users who form their community. Different mechanisms for engagement are used, from websites, mailing lists and discussion forums, to more formal methods such as setting up User Groups, early access/beta tester programmes and software ambassador schemes.
These methods can be very successful at nurturing an active community of users, but care should be taken with some of the more involved methods which can take relatively high levels of effort to run well.
You’ll have more time...
The ultimate goal of community building is to nurture an active supporting community that can answer queries and contribute back to the project. By starting early, you will find it easier to fit this naturally into your software development process and create software which is less effort to sustain and has more champions!
Further information and useful resources