Scientific software is increasingly complex, but is developed on a shoestring budget. Maintaining a reproducible development environment for all developers and running robust deployments is challenging, to say the least. Wouldn't it be nice to have a tool that does it all and does so correctly?
The traditional Unix way to deploy complex web applications and provision servers is to manually mutate configuration files on the server. Such an approach is brittle, time consuming and hard to migrate to new machines. Tools as varied as Ansible and Docker have been developed to ease this process, but these tools are still mutation based and their abstractions leak in unexpected ways. Guix, with its "functional" package deployment provides the watertight abstractions necessary to express complex deployments with precision.
In this talk, I will present how we deploy development and production environments using Guix at genenetwork.org. I will show how we use Guix channels to distribute our own packages and services; and how we run continuous integration and deployment (CI/CD) using Guix. I will explain how this enables us to further software quality in science, and will hopefully be able to convince you to use more Guix in your team.
Videos brought to you by the video team at Institut Agro and published under CC-BY-NC 3.0. Guix artwork by Luis Felipe published under CC-BY-SA 4.0.