ReproZip is a tool aimed at simplifying the process of creating reproducible experiments from command-line executions. It automatically captures operating system calls and creates a package that contains all the binaries, files, and dependencies required to run a given command on the original researcher's computational environment.
Reviewers can then unpack and run the experiments without having to install any additional software, even if the environment has a different operating system from the original one. ReproZip also generates a workflow specification for the experiment which reviewers can use to explore the experiment and try different configurations, while maintaining the provenance of the review process. Currently, ReproZip can only pack experiments that originally run on Linux.
Concretely, ReproZip has two main steps:
- The packing step happens in the original environment, and generates a compendium of the experiment, so as to make it reproducible. ReproZip tracks operating system calls while executing the experiment, and creates a
.rpzfile, which contains all the necessary information and components for the experiment.
- The unpacking step reproduces the experiment from the
.rpzfile. ReproZip offers different unpacking methods, from simply decompressing the files in a directory to starting a full virtual machine, and they can be used interchangeably from the same packed experiment. It is also possible to automatically replace input files and command-line arguments. Note that this step is also available on Windows and Mac OS X, since ReproZip can unpack the experiment in a virtual machine for further reproduction.
While reprozip is responsible for tracing and packing an experiment, reprounzip is the component used for the unpacking step. reprounzip is distributed with three unpackers for Linux (e.g.: reprounzip directory, reprounzip chroot, and reprounzip installpkgs), but more unpackers are supported by installing additional plugins; some of these plugins are compatible with different environments as well (e.g.: reprounzip-vagrant and reprounzip-docker).
For more detailed information, please refer to the following links:
A demo video of ReproZip can be found below: