HomeResource hub

Infrastructure for unselfish software development - a collection of top tips

Bookmark this page Bookmarked

Infrastructure for unselfish software development - a collection of top tips

Author(s)

Mike Jackson

Estimated read time: 3 min
Sections in this article
Share on blog/article:
Twitter LinkedIn

Infrastructure for unselfish software development - a collection of top tips

Posted by m.jackson on 17 July 2012 - 9:05am 

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:

  1. 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.
  2. Strengthen community engagement and deliver reliable software with the right infrastructure covers research software that is beginning to be used by thewider research community.
  3. 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.

  Starting outSupporting a community of usersSupporting a community of users and developers
Technical aspects of software developmentRevision 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 usersEncourage 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 developersUse an email list to communicateHang out using instant messaging
 
Use a shared calendar to help track your commitments
 
Managing your projectManage to-dos with an issue trackerTrack your impact with reference management software
 
Track usage of your software to understand your impact
 

 

 

Share on blog/article:
Twitter LinkedIn