Embrace the bazaar

It has been two months as I resigned as Debian Developer and do not use Debian. Instead, both my work and personal computers run Nix on top of very minimal installation of other distribution. This distribution happen to be Void Linux, but it is not of essence.

Nix enables me to describe state of 99% of system – both executables and configuration files – with simple, but powerful programming language. There can’t be leftovers from deployment of previous system version and I always know what exactly that previous version is. For me, upgrade from misery of traditional package managers like dpkg or rpm to Nix feels as significant as upgrade from mouse-driven file manager to endless power of command line.

Adjusting software to personal needs with Nix is significantly simpler than with traditional package manager. For example, rebuilding and publishing Debian package with one extra patch applied requires setting up web server, managing cryptographic keys and manual intervention every time there is new release of official package. With Nix it is as simple as adding following lines into ~/.config/nixpkgs/overlays.nix:

foo = super.foo.overrideAttrs (old: {
  patches = old.patches ++ [ ./my_personal.patch ];
});

There is no need to do anything on new “official” package release: as long as my_personal.patch applies and compiles, everything works smoothly. This fact has much more profound consequences that meets the eye.

With traditional package managers, either your patch is present in official package, or you have to do a lot of work to make version of software with your patch applied first-class citizen of software management. It grants both upstream maintainer and official package maintainer power over you.

Additionally, expectation that there must be one true and official repository pressures upstream maintainer to include as much features as possible to create single version that would fit everybody, contributing to ubiquitous software bloat.

For long time I believed that modern Free Software is Bazaar, because we develop software publicly. I was wrong, I was missing the whole point. We still were building cathedral, it is just this time basement was on GitHub.

Nix makes real Bazaar practical. Embrace the Bazaar!

PS. This article is heavily inspired by this1 eye-opening article. I strongly suggest you to read it.


  1. https://drewdevault.com/2019/05/24/What-is-a-fork.html↩︎