The Calamares installer for Linux distributions, which is used by lots of Arch-based distributions but also KaOS, is hosted on GitHub. That isn’t so hot, from a Free Software perspective. I was recently reminded how not-hot that is by changes in GitHub actions – that’s the Continuous Integration (CI) branding on that platform.

Back in 2021 when I was employed mostly-full-time to work on Calamares, I wrote about notifications because I had put together something nifty. Changes in Matrix and token expiry silenced those notifications, but GitHub has some kind of deal with Matrix so that you can get notifications via GitHub services rather than roll-your-own. Thanks to the folks from KaOS for setting that up in the Calamares Matrix channel.

But having that integration meant that a bunch of the CI coding that I had created was now useless cruft. And then there was something about an update to node.js needed for running actions, and then some other update and I realized that the CI wasn’t set-and-forget, it needed maintenance and it needed maintenance on somebody else’s schedule.

When I looked into the CI stuff, I realized that all the knowledge of how to deal with this proprietary configuration had leaked out of my brain in the past 18 months. It’s been replaced by configuring GitLab CI instead – a different kind of proprietary.

In any case this prompted me to step back and wonder about what all the CI was actually doing. Start a container, install git and some tools, clone the Calamares repo, install dependencies, kick off a build. Basically, run a couple of shell scripts, but wrapped up in a couple of layers of YAML and cruft. So in the past week I’ve gone through and extracted the bits again from the proprietary code and .. you guessed it .. added back shell scripts into the ci/ directory in the Calamares repo. It had never gone away, it just wasn’t used for much CI-work recently (the formatting scripts and translation-helpers live there too).

One immediate benefit of doing this extraction is that it is now trivial to do “run CI” locally. Not something I would usually do, but I can start up (for instance) a Fedora image and do all the things that Calamares CI would do, before pushing anything. It doesn’t need any of the cloudy stuff to run, and I can tweak things without leaving my own laptop.

The GitHub cloud-based CI is still there – it just runs these same scripts. And so in the time of three, maybe four years, Calamares CI has gone round one whole circle: from shell scripts run in Travis CI, to proprietary thingies, back to shell scripts run in GitHub CI.

To everything there is a season.