Description
Research software is an essential component of modern research, and it is therefore vital that our tools are the best that they can be. PlasmaFAIR was funded in 2021 in order to improve the quality and sustainability of research software within plasma science, and has worked on over 30 projects to date, helping researchers around the world to make their software better tested, better documented, more maintainable, and more interoperable with other codes. In this talk we discuss some of the key packages we have worked on, and how they fit into a wider research software ecosystem.
We have worked on a wide variety of projects, including: Pyrokinetics, a new community library that helps researchers compare results from multiple gyrokinetic solvers, automatically handling common pitfalls for new researchers such as different normalisations and parameter names; sdf-xarray, which allows users of the EPOCH code to interface with the powerful Python xarray ecosystem; and a major refactoring of Scotty, a beam-tracing code for Doppler Backscattering diagnostics, shoring up its foundations to make it a reliable, robust tool for researchers worldwide.
As well as contributing directly to research software packages, PlasmaFAIR has also created new libraries and tools for developers to make maintaining research software easier: nc-complex is a drop-in extension for netCDF to support complex numbers, very common in plasma science; Fortitude is a Fortran linter that helps developers catch bugprone code, obsolete constructs, and style violations, 100x faster than other linters, making it much easier for maintainers to modernise existing software; and snaptol is a Python testing library, designed explicitly to enable developers to rapidly retrofit tests onto legacy codebases.
In addition to discussing the software itself, we will also discuss our methodology and workflows for assessing and rapidly getting to grips with legacy software. We walk through our initial steps taken on a new project, along with how developers can easily improve the sustainability of their codes, and steps they can take to improve interoperability with the wider plasma science software ecosystem.
This work is supported by EPSRC Grant EP/V051822/1.