SC 3.16 | Sustainable Research Software
EDI
Sustainable Research Software
Co-organized by ESSI3/GD11/GM12
Convener: Emmanuel Nyenah | Co-conveners: Robert Reinecke, Victoria Bauer

Software plays a pivotal role in various scientific disciplines. Research software may include source code files, algorithms, computational workflows, and executables. It refers mainly to code meant to produce data, less so, for example, plotting scripts one might create to analyze this data. An example of research software in our field are computational models of the environment. Models can aid pivotal decision-making by quantifying the outcomes of different scenarios, e.g., varying emission scenarios. How can we ensure the robustness and longevity of such research software? This short course teaches the concept of sustainable research software. Sustainable research software is easy to update and extend. It will be easier to maintain and extend that software with new ideas and stay in sync with the most recent scientific findings. This maintainability should also be possible for researchers who did not originally develop the code, which will ultimately lead to more reproducible science.

This short course will delve into sustainable research software development principles and practices. The topics include:
- Properties and metrics of sustainable research software
- Writing clear, modular, reusable code that adheres to coding standards and best practices of sustainable research software (e.g., documentation, unit testing, FAIR for research software).
- Using simple code quality metrics to develop high-quality code
- Documenting your code using platforms like Sphinx for Python

We will apply these principles to a case study of a reprogrammed version of the global WaterGAP Hydrological Model (https://github.com/HydrologyFrankfurt/ReWaterGAP). We will showcase its current state in a GitHub environment along with example source code. The model is written in Python but is also accessible to non-python users. The principles demonstrated apply to all coding languages and platforms.

This course is intended for early-career researchers who create and use research models and software. Basic programming or software development experience is required. The course has limited seats available on a first-come-first-served basis.

Software plays a pivotal role in various scientific disciplines. Research software may include source code files, algorithms, computational workflows, and executables. It refers mainly to code meant to produce data, less so, for example, plotting scripts one might create to analyze this data. An example of research software in our field are computational models of the environment. Models can aid pivotal decision-making by quantifying the outcomes of different scenarios, e.g., varying emission scenarios. How can we ensure the robustness and longevity of such research software? This short course teaches the concept of sustainable research software. Sustainable research software is easy to update and extend. It will be easier to maintain and extend that software with new ideas and stay in sync with the most recent scientific findings. This maintainability should also be possible for researchers who did not originally develop the code, which will ultimately lead to more reproducible science.

This short course will delve into sustainable research software development principles and practices. The topics include:
- Properties and metrics of sustainable research software
- Writing clear, modular, reusable code that adheres to coding standards and best practices of sustainable research software (e.g., documentation, unit testing, FAIR for research software).
- Using simple code quality metrics to develop high-quality code
- Documenting your code using platforms like Sphinx for Python

We will apply these principles to a case study of a reprogrammed version of the global WaterGAP Hydrological Model (https://github.com/HydrologyFrankfurt/ReWaterGAP). We will showcase its current state in a GitHub environment along with example source code. The model is written in Python but is also accessible to non-python users. The principles demonstrated apply to all coding languages and platforms.

This course is intended for early-career researchers who create and use research models and software. Basic programming or software development experience is required. The course has limited seats available on a first-come-first-served basis.