Future of the Linux Desktop

Future of the Linux Desktop
Photo by Gabriel Heinzer / Unsplash

The Linux Desktop has been known as a bit of a problem child compared to the more poplar Windows or MacOS. Either because of the many many many package formats, the hundreds of different distributions, thousand different ways to do the same thing, or the overall complexity and instability (Looking at you Arch Linux). No matter how you spin it, the Linux Desktop just does not feel complete.

These "problems" play more into Linux's strengths as opposed to a weakness. Linux is unique in this respect where is has so many eyes on the project that not every one agrees on one way to do things. Package formats are a great example of this. There are deb, rpm, snap, flatpak, appimage, nix, and more. All with their own strengths and draw backs. This can be problematic as it introduces confusion as well as frustration for application maintainers who only want to support one format. There is also a very sizable benefit. DEBs, RPMs and other system packages usually don't have sand boxing support. Formats like Flatpak, Snap, and AppImage do and are also system agnostic. Meaning you can run a Flatpak app on Ubuntu, Fedora, Arch, or any Linux system of your choice! So even though having this many package formats is very burdensome, it allows a lot of room for new solutions. I personally really like Flatpak the most for its open repositories, sand boxing, and ease of use on any distribution.

What about the other pieces of a Linux Desktop? The filesystem, tool set, update methodology, etc. These are all interchangeable pieces that each distribution handles differently. For example, Debian's release cycle was too slow for some people, so along came Ubuntu. Distributions like Arch Linux don't even have point releases and work on a "rolling release" cycle so you always have the latest packages. Me personally? I like the approach that Fedora takes. It is semi rolling which means the core system components are frozen at the point release with a release every 6 months. The rest of the packages are rolling. This avoids my number one issue with Arch Linux which was regressions in the core packages like grub and the kernel. Fedora provides much more protection against this as the core components are battle tested before making it into the release.

While Fedora solved most of my breakage issues, I still was prone to breaking the system myself or getting the system into a muddy state where I wanted to reinstall anyway. Luckily Fedora's Special Interest Groups (SIG) brought a new vision for the Linux Desktop that solves this issue. Atomic Desktops! To be fair Immutable/Atomic OS's have been around in Fedora since 2014, but just recently have been gaining popularity in the Linux Desktop space.

Atomic Desktops are amazing. Functionally they are more similar to ChromeOS with the customization and control you would normally have under Linux. This is thanks to the read only root file system and the use of rpm-ostree/bootc. These technologies make it rock solid to deliver updates to a system. Fedora Atomic desktops have a few unique benefits that make them much more stable than a normal Linux Desktop. System updates are built before they are delivered to the system. So if an update fails to build, it never gets delivered to the end users. The system also keeps two versions of the system state in grub. So even if a problematic build manages to get pushed to the container registry, the user can roll back to the previously working system image. Here is an example from my fork of Bazzite.

Example of a build failure in GitHub Actions

As you can see, my bazzite/silverblue/asus (bazzite-asus-gnome) image failed to build due to the "Verify akmods image" step failing. So that image will never get pushed to the container registry for rpm-ostree/bootc to pull down and use.

This avoids a whole slew of issues! Though it is not perfect as it can only catch build time and some boot errors. More niche boot errors are not as likely to be caught, but once again, thanks to grub keeping two versions of the system the machine should always have at least one functional image for it to boot.

A rock solid base system in conjunction with a great tool set like distrobox, flatpak, brew, and nix leaves you with almost everything you would need! I'm a big fan of Arch Linux but always got frustrated running it as my main system. Now I can run Arch Linux in Distrobox and still use and enjoy things like the AUR! This way of using the Linux desktop helps me considerably as I used to have a hard time keeping track of the system's state in my head. Usually after a while of using the same Linux desktop the system would always feel muddy and bloated. Either with dependencies I wasn't sure if I needed, files lingering in /opt and /var, or package-less installs that just leave their files everywhere. With Atomic Desktop I don't need to think too much about it!

Did I layered too many system packages?
Just run rpm-ostree reset to revert back to the base image.

My AUR package is broken?
Try to fix it or hell, just nuke the whole Arch container and rebuild it.

Have a messy bash script install that you don't really want on your host?
Install it in a distrobox container and nuke it once you are done!

These use cases above have saved me countless hours and the best part of it all? It has been over a year since Ive reinstalled my desktop. That's a new record for me! (Previously was 9 Months on Arch Linux)

Fastfetch output: Spawned on Oct 07 2023

As a conclusion I would like to thank all the people involved in making these technologies possible! I would not have learned nearly as much as I did without the phenomenal people over at Fedora and Universal Blue! Specifically, a big thanks to Jorge O. Castro for his amazing work on one of the coolest Operating Systems Ive ever had the pleasure of working with. Jorge, along with the other great people at Universal Blue, have done an amazing job of documenting, communicating, and making it super easy and fun to learn how to use and maintain these images yourself! If you have not tried out Bluefin or Bazzite, I cannot recommend them enough!

Mastodon