I am not sure whether this question belongs here, but I would like to give it a try and benefit from the experience of the people at scicomp.SE.
From my experience, the software quality in computational science often leaves a bit to be desired. Clearly, established software projects such as PETSc or OpenFOAM are exceptions to that statement. But often there is some old self-crafted code from the 80s that should serve as basis for new research topics but no one really understands what it does. I have the impression that while there are trends and guidelines to make simulation software projects more sustainable, often the developers lack the skills to implement quality assurance measures. Not blaming anyone, this is an interdisciplinary field and in a physics or engineering degree those skills are not taught.
- Are there some established guidelines that one can follow?
Thanks to contributors from other channels and my own research I can provide this list:
Are there further candidates?
- Are there any template projects that provide a clean basis?
In order to make things easier for developers of simulation software projects, I thought it would be helpful to have some boilerplate project that provides a clean start. Is there already such a thing?
So far I have collected several components the boilerplate project should contain:
- Version control system (git)
- Collaboration tool (gitlab)
- Continuous integration (gitlab-ci) for automatic build tests
- Extract documentation from source code (doxygen)
- Automated build system (CMake)
- Framework for unit tests (Google Test?)
- Code formatting tool (clang-format)
but I fear that the list is not exhaustive and would be grateful for your experiences and/or pointers to literature.