Research software in practice

Software presents multiple challenges for researchers and institutions when it comes to reproducibility-related practices. Unlike publications and datasets, software is executable, highly iterative, and often inter-dependent. Therefore,  In our recent study, we found that while scholars often save their software for long periods of time, many do not actively preserve or maintain it. The lack of active preservation and tendency to share software outside traditional (and measurable) scholarly communications channels on display demonstrates social and behavioral challenges. These findings indicate the need for programs to train researchers on how to maintain their code in the active phase of their research.

Additionally, there are technical challenges when it comes to ensuring the use and reuse of software. For example, software relies on multiple dynamic elements, including the build and execution environment; dependencies and integrated libraries; metadata and specifications; and the structure of source code and individual components that support functionality. All of these components are necessary during the software lifecycle for execution. At the same time, the essential components for reuse may differ according to the community of interest. Factors that influence reuse of software include the quality of documentation and implementation details. Additionally, having full access to the data used in research is crucial for ensuring reproducibility.

The findings of our study along with the challenges that software presents indicate the need for programs to train researchers on how to maintain their code in the active phase of their research. At UC Berkeley libraries, we have started generating a series of tutorials to help researchers manage their software in the active phase of the research. We first introduced researchers with a generic workflow for making their research reproducible and how to manage the research entities: data, software, research workflow, and scholarly publication. Then we focus on managing research software. Here are our guides:

  • How to make research reproducible: This guide presents best practices in documenting scientific research process to make the research reproducible.
  • How to write a good documentation: This guide helps researchers to prepare their code for publishing through writing a good documentation.
  • How to make your code citable: This guide helps researchers to learn how to make their code citable. It walks researchers step by step through steps of archiving code using data and code archiving platform Zenodo and also shows how to get a DOI for your code.

We plan to continue our effort by introducing more guides on how to manage software.

If you have comment or questions, contact me at