Project Bluefin: A customized Fedora Silverblue desktop image
So-called "immutable" Linux distributions have been in development for some time, but (unless you count ChromeOS) haven't gained much traction. Project Bluefin, is a heavily customized set of Fedora Silverblue images coming from the Universal Blue community; they are designed to deliver a reliable Linux desktop that's as easy to use as a Chromebook but more customizable. Bluefin's mission is to change up the desktop experience and attract a new generation of open-source contributors with a "cloud-native" take on developing and delivering the operating system.
Fedora Silverblue
LWN readers are, no doubt, at least passingly familiar with Fedora but may not know about the Silverblue project. A variant of Fedora Workstation, Fedora Silverblue has the same stock GNOME desktop and base software, but delivered as an immutable image. It's built using OSTree and rpm-ostree, which are a set of tools that provide a Git-like way of working with OS images created from RPMs. OSTree deploys a bootable, read-only filesystem tree with writable content stored in /etc and /var; user home directories live under /var/home.
Rather than installing or updating Fedora package by package, Silverblue installs an image built from RPMs (with rpm-ostree) as a single transaction. When updates are applied, they're also applied as a single transaction, whether it includes an update to a single RPM or an upgrade to a new release of Fedora. For example, one can update from Fedora Silverblue 37 to 38 by rebasing on the Silverblue 38 image.
The OSTree project got its start with gnome-continuous, a research project aimed at making it easier to take GNOME's Git repositories, build them, and make them available quickly for testing. Later, OSTree and rpm-ostree were used as part of Project Atomic to develop immutable variants of Fedora, CentOS, and Red Hat Enterprise Linux to run Linux containers. The technology lives on in the CoreOS family and is also being used for Silverblue.
This model has at least three distinct benefits. First, systems deployed in this way are identical. That is, using the OSTree model, every system's install using the same image will have the same versions of software without any package variations. This can help prevent "drift", where some systems running package-based installs may have slightly different versions of software or missing packages, etc. Updates are staged in the background and take effect on reboot rather than updating packages on a running system.
A second major benefit is the ability to roll back updates if needed. Let's say one has taken their laptop on the road for an event and updated the system to the latest Fedora release, but the update has a bug that disables the laptop's WiFi. Reversing this using the standard RPM model could be challenging, to say the least. Under the OSTree/rpm-ostree model, one need only revert back to the prior, working, image and report the bug like a good community citizen.
The third advantage is the ability for adventurous users to easily switch between multiple branches of OSTree images, which is called "rebasing". By using "rpm-ostree rebase", one can pull a major operating system update and move from Fedora 37 to 38, or perhaps move between Fedora Silverblue and a custom image like Bluefin (and back again, as well).
Application management on immutable systems
The image-based approach has its clear positives, but also raises the question of how users can add software to their systems. This lack of flexibility was a feature for the Atomic Host and CoreOS use case — the host operating system was not meant to be customized, it was simply a vehicle for running Linux containers.
Systems built with rpm-ostree are "immutable" with an asterisk. Users can install software from RPMs by layering packages on top of the image with "rpm-ostree install packagename". This is usually done to add drivers, libraries, or system software, rather than for user-facing software. This creates a new image and it's generally recommended to reboot to apply the changes — though rpm-ostree does allow users to apply changes to a live environment with the apply-live option.
But that mechanism is meant to make changes and updates to the image and then roll it out to the fleet, rather than tending to systems individually, so each host offers only the needed software to boot the system and run application containers. Customizing individual hosts is generally considered an anti-pattern when running container workloads at scale.
However, a desktop operating system without the ability to install new applications would be of little interest to most users. Silverblue addresses this in several ways. Users are guided to using Flatpak for GUI desktop applications. If an application isn't included in the default selection, then one can turn to Flathub to it. The Flatpak format has its pros and cons, along with fans and detractors. Needless to say, users who do not like the format would be unlikely to find happiness with Silverblue or Bluefin.
Silverblue also offers a utility called Toolbox (sometimes stylized as Toolbx), which is a streamlined way of using privileged Linux containers to install command-line tools and utilities. Toolbox uses Open Container Image (OCI) images, but integrates them into the system so that they provide access to the host as if they were natively installed. Toolbox containers can access Wayland/X11, removable devices, the systemd journal, and other components. This is useful for troubleshooting, setting up a development environment, or otherwise installing software that might not be available as a Flatpak or well-suited to the Flatpak model.
Universal Blue and Project Bluefin
Bluefin is one of many images created by the Universal Blue project, which starts with Fedora Silverblue and then diverges from stock Fedora to create a number of customized images for various desktops and specific use cases. The images offer additional packages, custom udev rules, codecs that Fedora will not ship, as well as things like NVIDIA drivers and customizations for popular hardware. These images promise a better "out of the box" experience for those who have a target device and want to avoid fussing with driver installations and customizations. Conversely, this may be off-putting for users who wish to avoid any proprietary drivers or codecs.
The most recent addition to Universal Blue's family of images is Bluefin, currently described as "beta" with an eye toward a stable release in the Fedora 40 time frame. Bluefin is a take on Silverblue that aims to have an Ubuntu-like look and feel, with a dock (the Dash to Dock extension) and AppIndicators out of the box, plus the aforementioned codecs, defaulting to Flathub for Flatpaks, and other customizations. Flatseal is also installed by default, should users wish to view or modify the permissions granted to Flatpak applications. See the screen shot below to get a feel for Bluefin's default look.
Bluefin also prefers Distrobox to Fedora's Toolbox for providing a mutable environment or environments. Distrobox aims to let users run any Linux distribution inside their terminal. Like Toolbox, Distrobox containers are privileged and integrate almost seamlessly with the user's desktop environment. Users can use "distrobox create debian", for instance, to create a containerized environment based on the default Debian Docker (OCI) image. This can be immensely useful for testing and experimentation using the user space for multiple Linux distributions without having to maintain multiple physical or virtual machines, or dual-booting.
The Bluefin Developer images are particularly interesting. In addition to the default customizations, the Developer images include tools like DevPod, Devbox, Fleek, and Incus. DevPod is similar to GitHub Codespaces, a tool to create and manage "run anywhere" developer environments. Likewise, Devbox uses Nix under the hood to create reproducible developer environments — but abstracts away some of the complexity of Nix. Fleek also gives users a way to use Nix under the hood to configure their working environment and even make it portable and reproducible. Incus is a recent fork of Canonical's LXD, and is designed to run virtual machines via QEMU, and/or system containers via LXC.
In short, Bluefin Developer comes heavily loaded with leading-edge developer tools that are popular (or aim to be) with developers in and around the "cloud-native" space. It wouldn't be a bad thing if a project like Bluefin were to lure some cloud-native developers away from macOS to (or back to) the Linux desktop. Note that work is also afoot to generate Bluefin images based on the Fedora Asahi Special Interest Group (SIG) to support Macs using Apple silicon.
The Bluefin experience
Installing Bluefin is much like installing Fedora, with a few extra steps. One can pick the Bluefin ISO image or rebase to a Bluefin image from Fedora Silverblue. The process takes a bit longer than a standard Fedora install — particularly since Bluefin installs several packages from Flathub post-install and rebasing to a new image after installation takes additional download time.
Note that, as of this writing, Bluefin does not support manual partitioning or dual-booting setups — so interested users will want to have a dedicated machine or test Bluefin in a virtual machine until that capability is available. For this article, Bluefin was installed on a Lenovo Thinkpad X280 with 16GB of RAM and 256GB of storage, as well as in a virtual machine with similar RAM and 4 vCPUs. Performance on the Thinkpad is similar to stock Fedora Workstation, perfectly acceptable for light work, battery use was about the same, waking from sleep worked without fail, and no hardware problems came to light.
The look and feel of the Bluefin Developer desktop differs from the stock Fedora Workstation by providing a dock out of the box, Alt-Tab cycles through open windows rather than applications, windows have the minimize and maximize buttons available by default, and other minor touches like adding the "Blur my Shell" GNOME extension that adds visual effects like "blurring" the dock or top panel with the desktop background so they appear to show through. Whether these are appealing or not is, of course, strictly a matter of taste. I found it necessary to crank down the huge default terminal font size, despite my aging eyes — but otherwise found the look and feel pleasing. Which is not to say that stock Fedora is unpleasing, just that Bluefin's overall look and feel is even more to my taste.
The focus on current developer tools and advanced-user productivity applications sets it apart from Fedora Workstation's more conservative set of default software. Distrobox neatly solves the problem of choosing a Linux distribution by making it relatively easy to set up a variety of distribution environments. With a few commands it was easy to run AlmaLinux 9, Debian 12, and Ubuntu 22.04 LTS environments.
Bluefin also provides just, which is a utility to run project-specific commands from justfiles (like makefiles, but with a simpler syntax). Bluefin ships with a full complement of pre-defined just tasks for everything from showing the changelog between the current system and pending updates, cleaning the system of old containers, or switching the default shell to zsh or fish. The "just update" task helps in keeping a Bluefin system up-to-date by automating updates for the OS image, installed Flatpaks, and likely one or more Distrobox environments. Those working with containers for development work have the option of using Podman or Docker. Running "just docker" will fire up the Docker service and add the user to the docker group, for example.
One minor complaint about the "rpm-ostree update" operation if run separately is that it does not offer status updates while working. It provides a report of how many layers are present and need to be downloaded, with an estimation of size and begins working without any indication of progress until it has downloaded its new data. Then it provides a report of changes and guides the user to perform a "systemctl reboot" to make them take effect. It's easy to wonder whether an operation has stalled or if it's just being extremely quiet. The answer is "quiet", apparently. Switching from a Fedora 38 base to Fedora 39, then back again, worked without hiccup.
Final thoughts
Though Bluefin is considered beta status, I had no problems using it as a daily driver. Overall, Bluefin seems like a fine choice for a desktop distribution even considering that status. That is not surprising, since it's building on a fairly mature base with Fedora Silverblue. It comes with something of a learning curve for those accustomed to Fedora Linux, but not so great that it's off-putting.
Bluefin is especially interesting because it leans heavily into the Fedora tenets of "features" and "first." Aside from its immutable model and additional polish for specific systems, it serves as a showcase for a lot of recent tools like Devbox, Distrobox, just, and many more. For users already familiar with these tools, it's handy to have them all in one basket. For others, trying out Bluefin and exploring the varied development tools and utilities may lead to some useful discoveries. Putting Bluefin through its paces is a great way to uncover newer open-source tools that aren't yet well-known.
For those interested in taking the plunge, ISOs are listed on GitHub and the Universal Blue documentation will help to get started.
| Index entries for this article | |
|---|---|
| GuestArticles | Brockmeier, Joe |