The Ur Project

Documenting the craft of stacking things so they remain stacked. For a very long time.

Project Status Update - week 2

We're now public for 2 weeks and I did a project status update after week 1, so, it'll be a good time to put down some hard numbers and show everyone where the work has been going in the last week, and where it still needs to go before I'm calling it good enough for everyone to start using it.

Where it's at

If you go back to the last status update, you'll see I've posted about the release criteria at a higher level. I'll dive a little deeper to show what has been going on with each of the listed items.

This has progressed towards usability, and the build side of it has, as well. The build system itself now creates this image automatically as soon as there is a relevant change - effectively making it ready for full CI/CD cycling. The change that triggers an image generation can either be that the composition TOML file changes or that packages are updated.

The content of the image also improved. I've ironed out a few usability bugs such as weird fonts and there is now a debranded firefox build available as browser until we can slide an official Firefox build in. I've taken the liberty of disabling some of the default clutter from firefox and adding a few tweaks along my own preferences: A different default search engine, a more minimal chrome, and 4 extensions that will be useful for most experienced users.

Aside from the bootable Live USB image, there will be a generic cloud image and container images. These are mostly finished. I do need to hook up the OCI v2 format output, and possibly generate the ISO instead of qcow2 format for those users that prefer or need that.

No progress this week. This work isn't gated by anything - the composition layer can do a full disk install already by itself. It just needs a wrapper to select an actual drive to provision.

While I still need to commission and deploy an actual repo server that can be reached uniformly from the internet, this has come together well, and even the Live USB image can do a sudo pkg upgrade without issues. Working well without needing a lot of time on this over the last week.

In progress, and, progressing. I've just about wrapped up the lowest tier of package builds - these are local / bare package builds that any user can just do to create a quick build that isn't integrated in the build system. I'm making a demo and there will be a post about how this looks, but the gist is: create a recipe, point pkg build at it (after creating your own signing key) and pkg bundle create it into an installable pkgtar - this is the format where you can shove a bunch of built objects into an archive that will work everywhere.

One thing I've been working out is to create a TUI for those pesky "administrative" tasks that the build system just occasionally needs performed. While the web interface is enough for 90% or so of the operator tasks, there are a few things that belong in the admin realm and should stay out of the web UI. But offering a cli tool to do things like provisioning keys is time consuming and all it is is figuring out what the right parameters are - and the tool already knows what those are.

The Admin TUI handles other things like chain of trust verification and checksum checks so you can periodically audit the integrity of all the content in the repos. It can show systemd service unit status of the relevant services, it can do buildroot comparison for bootstrap purposes, and some basic job control. More will be added to it as I run into operations that just need a good admin home.

What's still needed

The biggest items left are gated by time - time needed to test that all the code paths through the various features that I want to have working are properly tested and they aren't overly complicated or worse, plainly undocumented.

The second item worth mentioning is the repo server. For now I'll procure cloud infrastructure that will host it, but it will have to be relatively large already from the start as I'm going to want to show the full genesis of the project's artifacts - since that is a major pillar in the project's design objectives.

Are we getting closer?

Yes, absolutely. Things are running pretty smooth and the build system is getting a good flow of updates and rebuilds in to make sure things are exercised properly. Doing so has already exposed some gaps and minor bugs that definitely needed fixing, but overall things are maturing pretty well.

--sofar (aka Auke)