Ten best practices for scientific software development.
Scripting library and package installation with configuration management tools (e.g., Makefiles) is necessary for deploying scientific software projects that have complex dependencies, cater to a large user base, and/or run on multiple platforms.
Any software that gets complicated (or, sophisticated) enough will eventually rely on other software libraries for its functionality. Configuration management tools help make it possible to link your software with other libraries no matter how they happen to be installed on the user's computer.
autotools is the most common configuration management program. This is used in most open-source projects. Using autotools involves creating a configuration file, which the user runs, that looks for the location of various software libraries, checks for the proper compiler flags, etc.
The user runs that by running ./configure
. This process then creates a Makefile. The user runs that makefile
by running make
and then make install
.
Another option for configuration management is CMake, which has some similarities to the autotools toolchain, but is significantly different enough from it to offer a very different set of advantages. The biggest strength of CMake is its cross-platform nature - a CMake project can generate a standard Makefile for Unix-like systems, or installers for Windows or Mac systems.
Python has a host of libraries intended to replace and automate the installation process.
The standard one is to have a setup.py
file, which will install a package when run as follows:
python setup.py build
python setup.py install
Fabric, Scons, and Pybombs all work by replacing the configure file with something Python-like.