maintenance/talks/fosdem-2020/containers/outline.org

3.8 KiB
Raw Blame History

Guix: Unifying provisioning, deployment, and package management in the age of containers

Summary

When it comes to software deployment, we are getting used to a new distribution of roles among many actors: traditional distros take care of core software pieces, “application bundles” à la Docker/Flatpak provide complex applications, Cabal, Gem, npm, pip, and friends take care of language-specific software, and Puppet/Ansible orchestrate the whole thing. Each of these tools has its justification, but the end result is a maze thats hard to deal with.

In this talk I will present GNU Guix, a software deployment toolbox and its associated distro that feature transactional upgrades and rollbacks, declarative OS deployment inspired by Nix, and reproducible builds. I will show how Guix approaches a variety of use cases: “package management” à la apt-get, environment management à la VirtualEnv, Ansible-style declarative OS deployment, and container provisioning à la Docker.

Guix emphasizes programmability and one of its salient features is that it provides a unified Scheme programming environment to deal with with all the aspects of configuration, deployment, and system management—including service management by PID 1. I will illustrate how this works out on standalone Guix systems, and show the benefits of the approach by discussing applications that take advantage of Guix as a library to support reproducible software deployment.

Last, I will reflect on the road that led to Guix 1.0 six months ago and present some of the challenges ahead.

Abstract

This talk will reflect on what GNU Guix has to offer to users and how it compares to other approaches—from CONDA and pip to Flatpak and Docker. Guix is not only a transactional package manager and declarative GNU/Linux distribution: its also an environment manager, a container provisioning tool, and more. We will describe these tools and our journey to 1.0, emphasizing key properties that set Guix apart: reproducibility, transparency, and hackability.

intro: ?

Guix

package management -> take from jcad-2018

guix describe + guix pull

operating system

guix deploy

“Its all about source code.”

functional model

guix system describe (Quine)

  ((lambda (x)
(list x (list (quote quote) x)))
   (quote
    (lambda (x)
(list x (list (quote quote) x)))))

reproducible builds

bootstrapping

  • bootstrap from nothing

Software Heritage

what's cooking?

Guix-HPC

Guix-Jupyter

guix deploy

Guile 3

contributor stats

Outreachy + GSoC

link to other talks

Get it!

COMMENT references

COMMENT demo preparation