By Mike Jackson.
In recent blog posts, I've outlined our top tips for the infrastructure required for developing research software. In this blog post, I'll summarise these posts to show how you can evolve your infrastructure as your software grows and develops.
The blog posts on infrastructure can be mapped to three phases of research software evolution:
- What infrastructure do you need to start developing research software? covers research software in its early stages (maybe just a prototype) that will primarily be used by the researchers who wrote it.
- Strengthen community engagement and deliver reliable software with the right infrastructure covers research software that is beginning to be used by thewider research community.
- Infrastructure for closer collaboration - covers research software that is now developed by a number of projects or institutions within a research community, which may, or may not, include the original researchers who developed it.
The infrastructures recommended in the posts above can also be divided into different types according to the activity they support. I've put all of this information into the handy table below, which summarises the infrastructures needed to support the evolution of research software and the activities these infrastructures support.
Supporting a community of users
Supporting a community of users and developers
|Technical aspects of software development||Revision control is the single most important tool you'll use!||Use automated build and test to save time, reduce bugs and give you confidence your software is correct||
Keep your software releasable with a continuous integration server
Keep your code consistent with a style checker
|Promoting yourself, your project and your software||
Use your website to tell the world about you
Register a domain name
|Talking with and supporting your users||Encourage people to get in touch by providing an email address||
Organise your communications with e-mail lists
Share your thoughts and experiences with a blog
Strengthen your links with your community using social networking
|Talking with your developers||Use an email list to communicate||Hang out using instant messaging
||Use a shared calendar to help track your commitments
|Managing your project||Manage to-dos with an issue tracker||Track your impact with reference management software
||Track usage of your software to understand your impact