Base Service “Research software development”: advice and services for good software

The NFDI4Ing Base Service “research software development” (S-2) provides infrastructure, best practices and templates to make research software and its development more replicable and reproducible while improving the quality of the written code. Currently, our main projects are a JupyterHub server for the NFDI4Ing-community, a knowledge base with best practices and examples for sustainable code development, and training courses for, e.g., GitLab.

A research software engineering workflow.

Vision

Research software plays a fundamental role in the advance of science. Not only is every simulation based on code and the assumptions in the models therein, but also almost every measurement is evaluated using software. Therefore, the importance of functioning, quality-assured code and the effectiveness and effectivity of its development can hardly be over-emphasized. We dream of a world, where every piece of code is well-tested, quality-assured and easily reusable.

Reusable Workflows and Best practices

As one of our services we are providing a Knowledge Base for software development (accessible at knowledge-base.nfdi4ing.de). Here we provide various guides and “How-to”-articles on different topics of research software development. The workflow proposed and the articles provided have been developed and proven useful in the CRC1194 at TU Darmstadt, effectively combining version control, continuous integration, automatic testing and evaluation, both small-scale and with HPC-systems. The Knowledge Base is an ongoing project, in which we are working together with participants in- and outside of NFDI4Ing. We also actively engage in various training formats.

 

Jupyter at your workstation

To support parallel code development and documentation, but also to make reproducing analyses easier, we have set up a JupyterHub that allows scientists to develop or reuse Jupyter notebooks. In these, code can be executed interactively and enriched with text, figures and more (literate programming). 

Within two use cases, we provided MATLAB (the normal IDE, but also a dedicated kernel) for academic usage and made polyglot notebooks possible, i.e., notebooks which contain more than one programming language.

Currently, the NFDI4Ing JupyterHub is still in the testing phase and access to it a bit cumbersome. But we are working on simplifying that and offering a scalable service for as many users as possible.

Tomislav Maric
Christian Bischof
Moritz Schwarzmeier
Anett Seeland

Tags

NFDI4ING services may be relevant to different users according to varying requirements. To support filtering or sorting, we added a tag system outlining which archetype, phase of the data lifecycle, or degree of maturity a service corresponds to. By clicking on one of the tags below, you can get an overview of all services aligned with each tag.

This service has the following tags:

The tags correspond to:
The Archetypes: Services relevant to Alex – Bespoke Experiments, Betty – Research Software Engineering, Caden – Provenance Tracking, Doris – High Performance Computing, Ellen – Complex Systems, Fiona – Data Re-Use and Enrichment

The data lifecycle: Services related to Informing & Planning, Organising & Processing, Describing & Documenting, Storing & Computing,
Finding & Re-Using, Learning & Teaching

The maturity of the service: Services sorted according to their maturity and status of their integration into the larger NFDI service landscape. For this we use the Integration Readiness Level (IRL), ranging from IRL0 (no specifications, strictly internal use) up to IRL4 (fully integrated in the German research data landscape and the EOSC). Click here for a diagram outlining all Integration Readiness Levels.