It wasn't for nothing

by Marius Bakke — Wed 17 August 2022

Several friends and family members have asked me why I spend so much of my free time developing Guix. I don't always have a good answer, but after six years I'm starting to get a sense of it.

First of all, it's fun. It's fun to make my own operating system. I can design it exactly how I want it, from the inner workings to the user interface.

It's also rewarding. While I haven't been as active on the patch tracker as I'd like lately, it gives a sense of awe and accomplishment to aid new contributors from beginners to "professionals". It's also something of a dopamine rush to perform huge migrations like switching to a new C compiler or Python version upgrades (these activities feel more like an addiction than a hobby, but rewarding nonetheless).

The work feels important. Guix occupies an underserved niche in the operating system "market". Namely one that offers full reproducibility, transparency, and provenance, of every package, and every operating system generation. It also integrates a neat scripting language where you can string together any package into one deterministic script. Think of it like a shell script where every command is lazily instantiated by the package manager on demand. You don't even have to use Scheme, you can write in your favorite language and run it through guix shell and get the same deterministic guarantees. If you note the Guix revision (as given by guix describe), you can use guix time-machine to reproduce the exact same environment in the future, bit by bit (at least in theory).

Guix is pure. It's refreshing to know that I can take any package and reuse its source code for my own purposes without having to worry about commercial restrictions or redistribution. It's reassuring to know that all packages are bootstrapped and not just some random binary blobs. Guix is also immensely hackable, it's easy to add extra packages or services without submitting them, either by creating a channel or "inlining" straight in the OS configuration.

But most importantly, Guix saved my life. When I first started contributing to Guix I did not have any direction in life, any sense of purpose or belonging. I'd been using GNU/Linux for a long time, been a "power user" of Debian, Gentoo, and NixOS, but did not contribute much to any either because packaging was too much work, or I didn't enjoy the community, or I found the packaging standards "too low". With Guix I finally felt home, it ticked all the boxes, the language is a joy to work with (even though it felt weird in the beginning), and it also desperately needed developers.

I know some are disappointed that I have prioritized a hobby over doing "normal" things like chasing an exciting career or strengthening my social network. But without Guix I would still be a confused alcoholic with daddy issues crashing on someones couch. I have now been with Guix for longer than I held any job, and am finally feeling some stability in life; and a desire to explore other creative outlets such as blogging (hi!), cooking, growing sustainable foods; and healthy activities like climbing and skiing.

None of this would be possible without Guix, and the (occasionally reluctant) support from my awesome friends and family. So thank you. It wasn't for nothing. Rather the opposite.