In this blog post, we address the idea of training in software sustainability in the form of questions and answers.
What do we mean by “software sustainability”?
A short definition for sustainable software, taken from Daniel S. Katz’ blog, is that it is software that “will continue to be available in the future, on new platforms, meeting new needs”.
Who is the target audience?
Anyone who is thinking of taking their software development to the next level. One way of thinking about these levels, for the somewhat typical path of open source software initially developed to help a developer solve their own research problem, is the five stages discussed at the February URSSI software incubator workshop.
Anyone who is thinking of undertaking a new software development project.
Anyone who wants to contribute to an existing software project.
What does Software Sustainability mean?
We could break up the definition of software sustainability into different sets of answers, depending on the level of experience of the audience members:
Someone who is starting to learn software development.
Someone who knows how to do basic development and is starting to write new code.
Someone who has written code and now is worried about the sustainability of their code.
Someone who is now hitting the limitations of their previous decisions.
Someone who wants to share their code.
Someone who is starting a new grant proposal (that includes software as an output).
Which topics would the training include?
There are a number of different topics that could be covered in sustainability training. These topics could be created as modules at varying levels of detail, ranging from very high level for an introduction to sustainability, to a few hours on each one for a more detailed course. In addition, each topic could be included in a checklist (see the checklib project here) so that participants can monitor their own progression. This checklist could also be added to the Software Sustainability Institute's checklist for a Software Management Plan.
The topics include:
Infrastructure (tools and standards)
Working with industry and/or academia
Codes of Conduct
Financial planning for both project and individual sustainability, including grant writing and other forms of fundraising (see Nadia’s Lemonade Stand)
Intellectual property & licensing
Project communication processes
Testing & continuous integration
Computing infrastructure (hosting platforms)
Packaging and distribution
While these topics are much more general than software sustainability, we expect that the non-sustainability aspects of many of them will be covered in other training, and here, we will focus on just the sustainability aspects.
How should the training be given?
This material could be presented in a variety of ways, ranging to self-directed (asynchronous) tutorials to in-person or virtual (synchronous) courses. It's important at this point to initially collect the material and organise it, after which it can be placed into different delivery mechanisms.