By Mike Jackson.
You've been developing research software and have found, to your delight, that your software has contributed to your own research and it has been adopted by others in your community. In this post, I follow my last post on the infrastructure you need to start developing research software with my top tips on the infrastructure you need to both strengthen your engagement with your community and continue to deliver software that they can rely on.
Whether you're part of an international collaboration or just a solo researcher, infrastructure will make a valuable contribution to your development. Our tips will help you be unselfish: open, responsive, communicative and considerate to your fellow researchers to encourage them to engage with you and contribute to the onward development of your software and your research.
1. Use automated build and test to save time, reduce bugs and instil confidence in your software
An automated build system (created using tools such as make or ANT) makes it easier to compile your source code, create your release bundles and automate myriad other software development tasks. Using a build system saves you time, prevents the mistakes that occur with a manual build, and helps document how your software is built. Tests give you confidence that your software not only works, but works correctly. An automated build and test system makes it even easier for you to check whether any extensions, modifications or bug fixes have introduced (more) bugs. Oh... and if you're unconvinced by the need for testing, check out the cautionary tale of Geoffrey Chang!
2. Organise your communications with email lists
A single contact address and an internal project email list often suffice if your project is small. As you gain more users, you will find it useful to set up separate email lists for specific classes of user or for specific purposes. A popular distinction is between users and developers. The latter will include you and members of your team, and possibly members of your community who customise, extend or fix your software themselves. Taverna has a users' list "intended for everyone using Taverna", which is used to ask for help or give feedback, and a hackers' list which "is more technical and intended for those actively developing Taverna, to record problems, design decisions and general code and architecture prodding."
Archiving your lists and making the archives publicly browsable can be a very useful way of supporting your community. The archives become an FAQ. Internet forums can complement, or serve as an alternative to, email lists - unlike email lists, forums require users to actively visit them to read or participate.
3. Share your thoughts and experiences with a blog
Unlike a paper or a report, blogs are expected to be informal. In the context of research they provide a great way to propose ideas, discuss your musings on current issues, share your experiences (in using and developing software or attending workshops, for example), spark debate on controversial issues or even let off steam. You can invite your community to submit articles on their research, how they've used your software in their research, problems they've had and how they resolved them.
A blog provides a way in which you can demonstrate the impact of your research and your software, as well as serving as a means to allow your wider community to promote their research also. Check out the rest of the Institute's blog or the PELAGIOS blog.
4. Strengthen your links with your community using social networking
Social networking tools are a great way to establish a network of colleagues and researchers both within your community and further afield. Nurturing these networks gives you a pool of possible users, developers, students, advocates, champions and future collaborators. Social networking also provide a great way of reaching a large number of people for little cost.
A short message on Twitter about a new release can be quickly posted and rapidly bounced throughout your community at no extra cost! Likewise, your fellow researchers can keep you in the loop, which may allow you to identify new possibilities for your software, or potential for collaborations.
5. Hang out using instant messaging
If your project has members across multiple institutions then instant messaging or real-time chat is a highly effective way of bringing everyone together. This will help create a collective ownership of your software and allow you and your fellow developers to get instant answers to questions. Instant messaging can be particularly valuable if you are giving a live demonstration at a conference, because it allows your fellow developers to help you quickly resolve issues. Instant messaging can also be an effective way to get to know researchers who are developing your software.
The OGSA-DAI project has used instant messaging for many years: moving from a project funded by a single funding stream developed by researchers in Edinburgh, Winchester and Frankfurt, to an open-source project with developers on multiple projects located in Edinburgh, Madrid and Sri Lanka. They use instant messaging to help bring PhD or Google Summer of Code students into the team. In contrast, the BonFIRE project use instant messaging to provide real-time support for their cloud research infrastructure.
6. Track your impact with reference management software
This may come as a surprise, because reference management software is not a tool typically recommended for software development. However, as you're developing software for research, it can be very useful. Members of the OGSA-DAI project have authored dozens of publications, and there are dozens more publications which cite these publications, or otherwise reference OGSA-DAI. These are all maintained as a set of wiki pages. Reference management software would allow the publications to be more systematically recorded, searched, and exported in a way consistent with many different types of publication.
Using reference management software, in conjunction with regular web searches for papers which cite your software, allows you to record the impact your software has made on research. This will be of great interest to funders. A recommended citation for your software, and a statement in your software licence requiring its use, can make the tracking of your impact far easier.
That completes our latest top tips, but, as always, please let us know what you think.