When we develop software in a community we must consider that our work is not just for ourselves but is expected to be used, adapted and (even) improved by others in that community. Much of The Unix Philosophy is worth considering when developing in such a context.
The Unix Philosophy principles apply to the creation of the software, but there are also some universally recommended best practices when it comes to the software development work-flow itself [BestPractices]:
For our specific use case we will support Git as our version management tool (with repositories hosted on the E-CAM GitLab service), CMake and Autotools (complemented by EasyBuild for HPC environments) as our supported build environments and unit/regression testing and continuous integration through the E-CAM GitLab service.
| [BestPractices] | https://en.wikibooks.org/wiki/Computer_Programming/Standards_and_Best_Practices |
Going a little deeper into the specifics, let’s consider some advice with respect to a desirable software development workflow.