Scientific Software

Ten best practices for scientific software development.

Learn More About This Project    

Configuration Management Tools

 

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.

Configuration Management Programs

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

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.

CMake

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 setup.py, Fabric, Scons, Pybombs

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.