Vanilla OS, an Ubuntu-based Linux distribution, recently had its first stable release. Much like other Ubuntu-based distributions, it emphasizes ease of use. However, it approaches this differently than many others.
This article will not discuss every aspect of Vanilla OS, but more so the technologies and workflow it employs. In my view, these could shape many popular Linux distributions in the future.
Overview of Vanilla OS
Vanilla OS ships with a minimal, unmodified GNOME desktop environment. By following GNOME upstream closely, it aims for a bug-free experience.
More importantly, Vanilla OS ships a workflow quietly forged by proponents of image-based (or immutable) Linux desktops.
- Out of the box, it provides hassle-free updates and rollbacks. It offers this through immutability and auto-update functionality.
- It ships Flatpak and the largest Flatpak software repository, Flathub.
apx
, a Distrobox-based package manager, is configured by default. It gives access to packages from Ubuntu, Fedora, Arch Linux, and more. It can also integrate installed packages from these distributions into Vanilla OS.
We can call this workflow — Flatpak, immutability, Distrobox — the immutable workflow. Combining everything together, Vanilla OS is unprecedentedly low-maintenance and powerful. It has the potential to become a staple for non-technical individuals and Linux veterans alike.
What are these technologies?
Flatpak
Flatpak is a containerized way to use applications on the Linux desktop. As detailed in my article Distribution packaging for Linux desktop applications is unsustainable, Flatpak’s model improves privacy, security, and ease of use on the Linux desktop.
Moreover, Flatpak provides a line of separation between one’s applications and the base system. No matter the distribution they’re on, Flatpak applications won’t harm the base system.
Immutability
Immutable Linux distributions take advantage of this line of separation by setting most core system files as read-only. This means that applications cannot easily corrupt one’s base system.
This can work very well. Immutability is one reason why SteamOS on the Steam Deck provides such a good experience to non-technical individuals. It prevents bricking issues resulting from dependency conflicts.
There’s other significant material benefits that can be provided by immutability. Immutability looks different across various Linux distributions, but I’ll discuss its most popular forms and benefits here.
Robust updates
Immutability enables more robust updates. For instance, take rpm-ostree
in Fedora Silverblue. Even if one’s computer shuts down during an update, there’s no harm. This is part of Silverblue’s atomic update model. Updates only go through if they’re completed and successful.
Vanilla OS’s immutability system, ABRoot, also provides this benefit by transacting between two root partitions.
Better rollbacks
Immutability also enables better rollback capabilities. This means that if something goes wrong on your system, a reinstall is often not necessary.
Once again, take Fedora Silverblue’s immutability. One can go from Fedora Silverblue 37 to 36, for example, without experiencing irreconcilable breakage from dependency issues. This is because one can pin known working system states to the boot menu. If the rollback goes wrong, one can boot back into a known good state.
ABRoot also lets one rollback to the last system version. System snapshots may also come to Vanilla OS in the future.
Immutability’s drawbacks and solutions
As aforementioned, Vanilla OS is an immutable distribution. Many people have tried immutable distributions in the past few years. Some have brought up a couple pain points:
Tinkering
Immutability can seem to prevent the system tinkering that many Linux enthusiasts are fond of.
This depends on how the immutability is implemented. Distributions like EndlessOS certainly have less tinkering potential than Debian.
However, there’s a lot of immutability implementations which support tinkering. Combined with rollbacks, it can be an even better experience than tinkering with traditional Linux distributions. It just works differently compared to them.
rpm-ostree
lets one compose custom system configurations and rebase to them. One also has the ability to overlay packages into the base system and to restore a ‘clean’ base system if necessary.- NixOS has always been a very friendly ground for technical users and tinkerers.
- Vanilla OS lets one install packages on the host using
ABRoot
. While not meant for heavy use, this provides flexibility for installing things like kernel modules or drivers. Image-based updates are also planned and may expand uponABRoot
’s versatility.
Reliance on Flatpak
Immutable desktops principally rely on Flatpak applications to provide software to users. This can seem too restrictive, especially in the case of software development. For example, the Flatpak version of VSCode seemingly has no easy integration with package management on the Linux desktop.
This is largely fair. One can use a remote container extension with a Flatpak application like VSCode, but this may not be the best setup for all use cases.
Flatpak isn’t the answer for everything. It struggles with applications which truly need profound system control. For example, one might want to install extra functionality for RBG devices through OpenRGB. This requires installing udev rules, but Flatpak cannot handle that on its own. One has to do it themselves.
Fortunately, software development tools like VSCode don’t need such deep system control. They just need access to programming language packages. While not the easiest under Flatpak, that’s certainly doable under immutability. More on this soon.
Software availability
Though it’s growing every day, Flathub isn’t yet the largest software repository on Linux. With the amount of software support the Linux desktop gets in the first place, relying solely on Flathub can be rough sometimes.
Moreover, many applications on Flathub aren’t maintained by their official developers. While Flathub is introducing a verfication system for transparency’s sake, this problem remains.
Solution
Distrobox and, by extension, Vanilla OS’s apx
, provides some solutions to all aforementioned pain points. It especially helps with the problem of software availability.
Distrobox
Distrobox lets you have nearly all Linux distributions’ software at your fingertips. It’s a containerized utility which allows one to use any Linux distribution through the terminal.
Like Flatpak, it’s installable on both mutable and immutable distributions. It provides deep system integration and backwards compatibility with outdated software. In addition to great CLI support, it also supports the installation and integration of GUI applications.
For example, one can install the video editing software LosslessCut from the Arch User Repository (AUR) while on Ubuntu 18.04. One can also install gedit
from the Ubuntu repos while on Fedora Silverblue. See this video for what this looks like. It’s even possible to use Steam + mesa-git
from Arch Linux while on Debian stable.
This software availability lets one source the official versions of applications outside Flatpak. Exercise caution, though, as Distrobox does not provide sandboxing like Flatpak does.
The possibilities are nearly endless. Picking a distro for the breadth of its package repositories basically isn’t a worthwhile consideration anymore.
My setup
Personally, I run Distrobox on Fedora Silverblue so I can benefit from apps found in Ubuntu, Fedora, and Arch Linux.
- I use the coding software VSCodium in a Fedora container so I can easily install and use programming language packages. Here’s a how-to guide for this.
- I have an Arch Linux container to use applications from the AUR.
- I have an Ubuntu container which runs Jekyll for this website.
Updates aren’t a hassle with this system. I have automatic updates enabled for my base system and for my Flatpaks. I never need to click an update button, and if anything ever goes wrong, I can rollback without worry.
I also just run distrobox-upgrade --all
in the terminal to upgrade all my distroboxes at once. One can also automate this with systemd
, but for me, keeping containers up-to-date isn’t critical.
While I had to configure automatic updates on Fedora Silverblue, Vanilla OS fortunately provides them by default.
Tinkering
Distrobox has nearly limitless potential for power users. One can integrate systemd in a container, using that compatibility to install integrated virtual machines and other fun stuff. One can also use Distrobox to run another desktop environment on top of one’s distribution. In short, Distrobox is a huge boon for tinkering. It can work around many of immutability’s pain points.
apx
Vanilla OS aims to simplify Distrobox through apx
, a package manager created collaboratively with Distrobox’s creator.
apx
is a stand-in replacement for apt
; it has a similar syntax.
- To grab packages from Ubuntu, one writes
apx install <package_name>
. - To grab packages from the AUR, one writes
apx install --aur <package_name>
. - To install something from Fedora, one writes
apx install --dnf <package_name>
.
No sudo required! Nix and Alpine Linux package support will also likely come in the future. See apx
’s manpage here.
This solution is a lot simpler than trying to manage many different distroboxes. I don’t always remember what I put in mine.
I really appreciate that Vanilla OS makes using Distrobox easy. The tool deserves a lot more recognition.
Vanilla OS pushes desktop Linux forward
In conclusion, we can see a lot of ways Vanilla OS has iterated on and simplified the ‘immutable workflow’. Like the immutable distribution openSUSE MicroOS, Vanilla OS ships Flathub by default. It also provides Silverblue-esque auto-updating capabilities out of the box.
Additionally, it has quality of life improvements, like good default compatibility with NVIDIA graphics cards. As aforementioned, Vanilla OS also allows flexibility in installing kernel drivers and modules.
Vanilla OS is not perfect in every way.
- I prefer Fedora Silverblue’s rollback capabilities.
- I’m also excited about Silverblue’s experimental ability to use container images as an OS. There’s a lot of quality assurance potential there! Unfortunately, Vanilla OS currently doesn’t have that capability.
- Vanilla OS also doesn’t currently support manual partitioning on the same disk, like Fedora Silverblue.
However, Vanilla OS is releasing with an amazing start. They’re aware of their distribution’s limitations and are actively working on some of them (e.g. exploring image-based updates and adding manual partitioning).
Moreover, I’ve been using a Vanilla OS-esque immutable workflow for many months now. I really can’t go back to traditional Linux desktops. I love having this much software availability and not worrying about updates.
Trust me. It’s worth it.
Install an immutable distribution
You can download Vanilla OS here. If you’re a fan of GNOME, give it a try! Vanilla OS may introduce other variants in the future (like KDE), so keep an eye out for that.
- You can also check out Fedora Kinoite for a KDE version of Fedora Silverblue.
- If you’d want another desktop environment or window manager, check out one of the many custom Silverblue-based desktops.
- There’s also a general list of immutable distros available here.