principles-research-software-sustainability.pdf (1.83 MB)
Principles of Research Software Sustainability
This is a talk for SIAM CSE21, for session MS278:
Enhancing Sustainability and Productivity for Research Software - Part II of II (https://meetings.siam.org/sess/dsp_programsess.cfm?SESSIONCODE=70275)
Abstract:
Research software typically involves a complex set of layers, from non-scientific infrastructure (e.g., operating systems, compilers) to multi-disciplinary research infrastructure (e.g., general scientific libraries, utilities) to discipline-specific software (e.g., tools and libraries that implement disciplinary models and methods) to project-specific software (e.g., scripts, workflows, computational notebooks, special-purpose libraries and utilities). Software builds and depends on software in all layers below it; any change in an underlying layer may cause the software to collapse. This means that software (and the research it enables) stops working eventually if is not actively maintained.
Given this, we can defined research software sustainability as the process of developing and maintaining software so that it continues to meet its purpose over time, including that the software adds new capabilities as needed by users, fixes bugs that are discovered, and is ported to work with new versions of the underlying layers as well as new hardware.
In order to sustain research software, we can 1) do things that reduce the amount of work needed, 2) do things that increase the available resources, and/or 3) do things that both reduce the amount of work needed and increase the available resources. This talk will discuss some of these things, including training, best practices, incentives, career paths, funding, collaboration, and community engagement.