Skip to main content Link Menu Expand (external link) Left Arrow Right Arrow Document Search Copy Copied

Preservation & Sustainability

Preservation and sustainability in research software management refer to practices and strategies aimed at ensuring the long-term availability, usability, and maintenance of research software beyond the duration of a specific project. It involves measures to address technological, organizational, and environmental factors that may impact the software’s accessibility and usability over time. Research software preservation has 4 major aspects.

  1. Storage

    Software packages or code need to be stored with reliable version control management services. Storing the software along with any associated data, in a secure and reliable manner. This ensures that the software and data are protected from loss, degradation, or obsolescence. Aside from storing the software code with a version control management service, indexing the software with a Digital Object Identifier (DOI) will improve findability of the software in the research community.

  2. Retrieval

    A preserved software package as well as its dependencies need to be clearly labeled and identified with a suitable catalog. In some cases, the dependencies need to be bundled with the software package. It is to prevent the preserved software from being unusable if the dependencies cannot be retrieved in the future and ensure the overall software accessibility. See the left-pad debacle.

  3. Construction

    Adequate descriptive documentation needs to be provided to make sure the software package can be rebuilt using the preserved software source code and reinstalled within a sufficiently close environment to the original so it will execute properly.

  4. Replay

    Include test cases that demonstrate the preserved software is producing the correct results. This relates to the construction & documentation aspect above. Since a documentation (a user manual e.g.) should include detailed instructions on how to install, configure, and use the software. It helps future users and maintainers understand the software’s functionality, dependencies, and assumptions, ensuring its continued usability.

While a sustainable research software requires ongoing maintenance and updates to address bugs, security vulnerabilities, and changing requirements. Establishing plans for issue reporting & tracking, and user feedback helps ensure that the software remains functional and up-to-date. In addition, encouraging a community around the software contributes to its sustainability. Researchers can engage with users, contributors, and stakeholders by fostering communication channels, providing support, and encouraging collaboration. A vibrant community can help maintain and enhance the software over time. This would require a proper transfer of knowledge about the research software from researchers to the community through adequate documentation.