Motivation
Although in some communities (e.g., meteorology, climate science) the tradition of software writing has a long history, most scientists are not trained software engineers. For early-stage scientific software projects, which are typically developed within small research groups, there is often little expectation that the code will (1) be used by a larger community, (2) be further developed or extended by others, or (3) be integrated into larger projects. This can lead to an “organic” evolution of code bases that result in challenges related to documentation, maintainability, usability, reusability, and the overall quality of the software and its results.
The wider availability of large computing resources in recent decades, along with the emergence of large datasets and increasingly complex numerical models, has made it more important than ever for scientific software to be well-designed, documented, and maintainable. However, (1) established practices in scientific programming, (2) pressures to produce high-quality results efficiently, and (3) rapidly growing user and developer communities, can make it challenging for scientific software projects to
- follow a common set of standards and a style,
- are fully documented,
- are user-friendly, and
- can be maintained, easily extended or reused.
Session content and objectives
We invite developers or users of software projects to prepare presentations about the challenges and successes in the following topics
- Good practices for developing scientific software
- Modularization
- Documentation
- Linting
- Version control
- Open source and open development
- Automatization of quality checks and unit testing
- Planning new projects
- User requirements and the user-turned-developer problem
- Painless and energy-efficient programming solutions across computing architectures
- Modularization and reliability vs performance and multiplatform capacity
- Large-dataset compression and storage workflows
These presentations will show how different projects across geoscientific fields tackle these problems. We can discuss new strategies for bettering scientific software development and raising awareness within the scientific community that robust and well-structured software development enables meaningful and reproducible results, supports researchers —especially doctoral and post-doctoral students— in their work, and accelerates advances in data- and modelling-driven science.
Wilton Jaciel Loch