On the 4th of november, Daniel Bankmann gave a talk on different tools that can be used to ensure the longevity of mathematical software. As applied mathematicians, a good deal of our daily work concerns implementation
of mathematical algorithms for numerical experiments. Often, the programs are not meant to be deployed in a commercial context, but are intended to support and illustrate mathematical results. Nevertheless, even if the programs are never officially released, they are meant to be distributed among the research community with the intend to let colleagues benefit from ones work, or to enable them to comprehend numerical results. The talk addressed one common problem of software distribution: A program written on one machine does not necessarily work on another, due to missing libraries or dependencies. And rather than to burden the colleague with the tedious task of searching and installing the missing dependencies one by one on his machine, the talk introduced three tools to circumvent this problem, namely Conda, Docker and Singularity. Conda is a command line tool for mananaging dependencies, packages and environments.
It lets you create environments with the needed dependencies for the software you are writing and also functions as an environment manager. Delivering your software with an appropriate environment takes care of the dependency problem on other machines, as the only thing required to run the program is an installation of Conda. Docker and Singularity are programs that perform containerization. Containers are software packages that bundle their own dependencies, tools and configuration files, thus also eliminating the need to install every dependency by hand. Instead, only the appropriate container is needed to execute the program.

Tools Seminar: Reproducible Research