Long lasting, bit-reproducible research with GNU Guix
Abstract
Even under the best of circumstances*, reproducing research from a few years ago is hard. To confirm the results of a scientific experiment, one could start from the same data and processing scripts, which should in theory lead to the same result, since most variables (e.g. measurement points) become fixed. Still, it remains almost impossible to reliably reproduce the results bit by bit due to uncontrolled variables (e.g. random numbers). Even without random numbers, there is one variable uncontrolled and overlooked most of the times: the computational environment. Unless meticulously recording every single library used in producing the result, chances for bit-reproducible research are dropping fast. While results don't always have to be bit-reproducible to review if the conclusion is still valid, the question remains: can a discussion about the differences in results even be fruitful if it's unclear if the variability is caused by the computational environment or another uncontrolled variable? There are a few approaches to reproduce the computational environment for experiments. The package manager GNU Guix is presented because of it's unique approach to recording the complete software stack, with an explicit focus on long term reproducibility. Additionally, it allows for effortless experimenting with differences in the computational environment. The effect on the final result of swapping out or patching libraries deep inside the stack is easily investigated. The authors dissertation written for his educational master's degree is used as an example of a bit-reproducible deliverable. *When the data, the processing scripts and the report are all available: Open Data, Open Source software and Open Access