Best Practices for Sustainable Software

in Natural Science and Engineering (SS-NES)

Sustainable software practices (software management, software quality, FAIR software, and software preservation) are crucial for the reusability and long-term viability of research software (scripts, code, tools, and digital methodologies) particularly in the Natural Sciences & Engineering (NES) domain.

Software sustainability

What is it and why does it matter?

Code shown on a computer screen in an office

What is software sustainability?

In this project, we consider software sustainability as the collection of practices used to ensure reusability and long-term viability of research software, as well as its impact on research. These practices encompass software management, software quality, FAIR software, and software preservation.

Code on a computer screen

Why is software sustainability important?

Research software, encompassing scripts, code, tools, and digital methodologies, is crucial to academic research, particularly in the Natural Sciences & Engineering (NES) domain. Despite the importance of Research software, attention for software sustainability often remains limited.

Code on a computer screen

The SS-NES project

This project addressed several aspects of software sustainability to actively support the research community within the NES domain. By providing domain-relevant guidelines, tools, infrastructure, and training, the project supported awareness and uptake of best practices during the entire software life cycle.

How can I use best practices from SS-NES?

Guidance on sustainable software for the NES domain

A software management plan (SMP) aids in implementing best practices during software development and ensures the software remains accessible and reusable in both the short and longer term. It also contributes to the reproducibility of results and promotes collaborative work on open-source software for research. Moreover, an SMP encourages researchers to plan for the software’s long-term sustainability and community uptake of the software.

We created a the SMP decision tree to guide you through the process of creating an SMP.

Tools to support sustainable software development

Guidance for sustainable research development is crucial, but it is also important to provide means to make it practical and applicable during the whole development cycle. If such support is not readily available when the guidance is published, uptake by the community might be significantly delayed.

In this project, we developed research software templates that implement the best practices recommended by the guidance and provide boilerplate code and assets to initiate the research software development, including unit tests, documentation, etc. This will allow the researchers to apply the guidance in a much quicker and practical way by using different languages (e.g. Python, R).

Integrating digital infrastructure for sustainable software

The use of digital infrastructure and services can contribute to enhancing software sustainability, encompassing aspects such as version control, licensing, citation, publication, and long-term preservation. We have integrated and improved existing digital services relevant to the NES domain that support several aspects of software sustainability.

The 4TU.ResearchData repository aids researchers of the science, engineering and design disciplines with long-term archiving of software. 4TU.ResearchData is the only certified repository in the Netherlands that provides support for sharing and long-term preservation (at least 15 years) of both research data and software and for disciplines from the entire NES domain. The Research Software Directory is a registry developed by the eScience Center that enables both research performing organizations and researchers to find, publish, cite, share, and measure the impact of research software.

We will write a blog summarising this integration.

Learning resources for sustainable software development

We conducted a train-the-trainer workshops and walk-in sessions aimed at trainers, training coordinators and researchers within the NES domain and at LDCCs. Through these events we shared with participants our best practices for software sustainability in the NES domain.

Based on these activities we created training materials which can be used by the wider community.

Toolkit

Choose one of the tools below to guide your software to sustainability.

  • SMP Decision Tree icon

    SMP Decision Tree

    This is a questionnaire package for a Software Management Plan (SMP). This is an open source tool.

    View tool
  • SS-NES-lesson icon

    SS-NES-lesson

    Training material of the software sustainability of the TDCC NES project. These materials are also available on GitHub.

    View training materials
  • Code-auditor icon

    Code-auditor

    A package and command-line utility to audit code quality and compliance to the best practices.

    View tool
  • Meta-template icon

    Meta-template

    A toolkit to start software templates for research software and adopt best practices on sustainable software for Natural and Engineering Sciences. It provides a way to align best practices and reduce maintainance efforts across organisations, while allowing organisation to customize software templates to their needs.

    View tool
  • python-template icon

    python-template

    This is a copier Python software template that implements the best practices on sustainable software for researchers in Natural and Engineering Science. The template provides boilerplate code and assets to initiate the research software development, including unit tests, documentation, etc.

    View tool