GNU Guix 1.0: a solid foundation for HPC and reproducible science

Ludovic Courtès — May 6, 2019

GNU Guix 1.0.0 was released just a few days ago! This is a major milestone for Guix, which has been under development for seven years, with more than 40,000 commits made by 260 people, and no less than 19 “0.x” releases.

Guix 1.0!

Useful links:

More download options are available on the Guix web site.

What GNU Guix can do for scientists and HPC practitioners

We think Guix 1.0 is a solid toolbox for scientists concerned about reproducibility, for HPC practitioners, and also for cluster system administrators. We had outlined this vision in our 2015 paper, Reproducible and User-Controlled Software Environments in HPC with Guix; 1.0 makes this a reality, with a toolbox that goes beyond what we had envisioned back then. Let us summarize the salient features of Guix.

For scientists

  • Reproducibility and transparency. Guix combines the flexibility and transparency of package managers like Anaconda or Spack, along with the reproducibility of “container-based solutions” such as Docker or Singularity.

    With guix pull and guix describe, you can reproduce the exact same environment on a different machine, or at a different point in time. Our collaboration with Software Heritage aims to strengthen the ability to reproduce software environments in the long term.

  • Packages. No need to wait for cluster sysadmins to provide the software you’re interested in as modules: almost 10,000 packages are one guix install command away, maintained openly by an active community, including lots of scientific software packages—from OpenFOAM and TensorFlow, to linear algebra software, and to statistics and bioinformatics packages.

    Upgrade software when you decide, not when administrators decide, and have the assurance that you can roll back any time.

  • Flexibility. Guix allows you to customize packages directly from the command line, or by using its APIs. While a container image merely allows you to run the software as-is, Guix gives you the ability to inspect and modify the software you use.

For developers

  • Channels. With channels, developers can publish their own package collection. You can easily share package definitions for your software with colleagues and partners, while still benefiting from the properties of Guix.

  • Container images. You have a Guix-managed package collection and would like to use it on a cluster that lacks Guix? Create an application bundle with guix pack, in the Docker (OCI) or Singularity format.

  • Development environments. With guix environment, set up a “clean” development environments for your software in one command. If you’re used to Conda environments, you’ll find that this provides similar functionality, except that with Guix this is reproducible in time and space.

For system administrators

  • Relief from software packaging. Instead of providing modules, let users manage their own software environment and upgrade packages as they see fit.

  • Garbage collection. No need to guess what software is in use—running guix gc is all it takes to free space.

  • Security. The vast majority of Guix packages are bit-reproducible. You do not need to trust third-party binaries, and when you do, you can challenge them.

Let’s get in touch!

Whatever your HPC or scientific use case is, we hope that you’ll find in GNU Guix 1.0 the tools to further your goals. We’d love to hear from you! You can email us at guix-hpc@gnu.org or on the Guix mailing lists.

  • MDC
  • Inria
  • UBC