Skip to content

Commit 0fddf68

Browse files
authored
add warning about docker and mention nix/guix (#157)
1 parent 9aac141 commit 0fddf68

1 file changed

Lines changed: 6 additions & 0 deletions

File tree

packaging-guide.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,11 @@ Consider one of the following methods to package the software components of thei
3535
- For raw data, the container/VM contains the data and the analysis scripts.
3636
- For mechanized proofs, the container/VM contains the right version of the relevant theorem prover
3737
- For a mobile phone application, the VM has a phone emulator installed
38+
39+
Note however that container and virtual machine recipes (such as Dockerfile) might not be by default reproducible.
40+
In the case of Docker, pay attention to use a tag when using another image (and not the `latest` one) but also be aware that [images can be removed from caches](https://hub.docker.com/r/nvidia/cuda/#cuda-container-support-policy), know that `apt-get update` might yield different package versions every time it is being called.
41+
One practice is to archive the produced container or VM on long-term storage such as Zenodo, but this is not a substitute to sharing the recipe.
42+
For producing containers or VMs with more reproducibility guarantees, you can take a look at [Nix](https://nixos.org) or [Guix](https://guix.gnu.org/).
3843
- **Live instance on the web:**
3944
This can be a companion to source code as a way to make usage easier, or a replacement for source code for artifacts that cannot be made public.
4045
It can be a custom site or use public clouds such as the ones mentioned in "tools" below.
@@ -73,6 +78,7 @@ The following tools are commonly used in artifact packaging and distribution:
7378
- [GitHub](https://github.com) and [GitLab](https://gitlab.com), good options to host a Git repository for your artifact during evaluation, since they allow you to easily push updates in response to reviewer concerns
7479
- [Zenodo](https://zenodo.org), to provide long-term storage and a DOI, ensuring the final version of your artifact can be archived permanently
7580
- [Docker](https://docs.docker.com/get-started/overview/), to create a lightweight container with all of your artifact's dependencies, and even write scripts to manage multiple containers locally instead of using a cloud provider
81+
- [Nix](https://nixos.org/) or [Guix](https://guix.gnu.org/), to create reproducible software environments, containers, virtual machines and system images.
7682

7783
Other useful tools include:
7884
- [Popper](https://getpopper.io/), a container-native system for automating workflows

0 commit comments

Comments
 (0)