Deboonking 'Debian is Bad on the Desktop'
I’ve been running Artix GNU/Linux exclusively on my laptop for over 5 years. I’ve had zero complaints or issues using Arch and Arch-based distributions. Before that I ran Ubuntu (Gnome2 days) and later Debian. Likewise I had few complaints and had no issues making Debian-based distros work.
Historically I’ve put Linux Mint on my wife’s computer, but when setting up a new (used) laptop several months ago I decided to go with CachyOS. The laptop had plenty of resources, and I wanted something that would be a quick and reproducible setup that had btrfs & snapshots configured out of the box. Not to mention the eye-candy is nice, maybe that’s just default KDE these days.
My only issue is this: my wife knows goose egg about arch linux. I do not enable automatic upgrades on arch linux for obvious reasons, but I found myself forgetting to run updates on her computer every couple of weeks. In one case there was the classic archlinux keyring issue that comes once or twice a year, not a big deal. But if I was not around that is something she unfortunately would not be able to rectify.
So I decided to look at moving her computer back to something Debian-based so I could unattended-upgrades and chill without thinking much of it. If I were to suddenly die, it would be an easier machine to manage and find solutions for, at least until Debian drops the current version from lts support.
Whilst I could have just installed Linux Mint or LMDE, that’s now how we do things at linuxmaxxing dot com. So I decided I would distro-hop on an unused laptop for the first time in over 5 years to properly retest Debian. Not sure if it counts as a proper hop since I’m very familiar with Debian and still run it on a ton of servers and containers.
My Last Experience with Debian on the Desktop
The last Debian version I used on the desktop was Buster (Debian 10). I was never much of a desktop environment user outside of LXDE and XFCE, and I remember at that time KDE and Gnome were having rapid development so the versions on Buster were not only out of date but missing features, and buggy on the KDE side IIRC. Not surprising, but it didn’t phase me. The only real complaint I had was not having a number of the Luke Smith starter pack in the Debian repos.
Installing Devuan in 2026
Because I fell for the “muh init freedom” meme a long time ago, I prefer to not run systemd. Tons to say about that of course, but to keep it simple my overall perspective (which also applies beyond just GNU/Linux) is to hedge all sides and not put all your eggs in one basket. Even if I were a systemdmaxxer I would want projects like Artix, Devuan, Gentoo, Alpine, etc to continue to succeed even as a proof of concept that GNU/Linux can still function without systemd. This approach bypasses all the “bloat” or “unix philosophy” arguments for something much more pragmatic and practical IMHO. More on that in another post.
I’ve loved using openrc, I used runit for a while, and hadn’t really messed much with sysvinit since back in the day I really didn’t tinker much. So Devuan with sysvinit made sense as a learning experience. I’ll cover Devuan in more detail in another post.
From here on out I may refer to installing Debian, just know it was
actually Devuan. It practically makes no difference, Devuan is
extremely similar to Debian, much closer than Artix is to Arch. In
fact all of the sysvinit scripts used by Devuan are included in
Debian. Don’t believe me? Check out /etc/init.d/ on your Debian server.
I like Debian’s netinstaller. It’s a good balance between minimal 1337 installers and something that’s relatively easy if you know your way around. I installed with encrypted btrfs subvolumes which requires a bit of tribal knowledge which will yet again be covered in another post.
What does “Stable” actually mean?
Stable means exactly one thing: no updates. The opposite of updatemaxxing. That’s it.
All you’re getting are Security updates which are patched by the Debian security team. After the roughly 6-month testing freeze prior to a stable release, bugs are fixed/patched by the Debian team to ensure the pinned package versions are as bug-free as possible. It is not 100%, there will be bugs that are discovered that do not get resolved until the next stable release. But I’ve found this to be few and far between, it is just features you will be missing out on.
This gets at a major ideological point of departure from Arch linux: Debian packages are often heavily modified compared to upstream. I’ll save Debian vs Arch for another post.
What are some advantages of “stable” packages?
- No updates.
- Minimized possibility of updates breaking stuff (not 100% eliminated, there was a Debian 12 point release which had issues).
- Small file downloads. If you update Arch every week or two, you will be pulling in at least 1 GB of updates, 2+ for most users. This adds up if you are bandwidth or space limited.
Are there packages we don’t care about upgrading?
Absolutely. I could not care less about running the latest kernel, in fact I am still running the latest version 5 LTS kernel offered in artix linux. I am not a programmer or developer, so I don’t care about any of the language libraries. Even so, for what programming I have to do, it is all stuff that really hasn’t changed much: C, shell, elisp/scheme. Python is probably the most dynamic.
There is so much on my system that I don’t care about upgrading, by far outweighing what I do care about.
BUT EVERYTHING IS OUT OF DATE!
So trve, king. But here’s a question: 2 years ago, was your GNU/Linux system completely unusable, or was it just as usable as it is today?
If you’re a KDE or Gnome user, this argument held water a several years ago. But ever since around 2023 / Debian 12 Bookworm I can’t recall any massive changes to either of those projects. Maybe wayland support. Likewise there have not been major changes to the linux kernel since version 6 which was included in Debian 12. Drew from Just a Guy Linux maintains that Debian 12 was a major release from Debian standpoint because of how many features it added from large projects, but ever since that not much has changed. I tend to agree.
Unless you’ve got a new computer, your desktop experience probably hasn’t changed much since Debian 12. And with the rise of vibed projects there have even been deliberate regressions in forks. Calibre and vim comes to mind.
In some cases out of date packages are an advantage. Take Nvidia for example, the lastest driver you can get in any Debian variant is 550; stable and sid (unstable) are both at 550. Peculiar choice, I would prefer 560-580. But it ensures that all nvidia cards (save brand new ones) are fully supported, unlike Arch which went right along with Nvidia’s decision to drop legacy cards from their drivers after 580.
HOW CAN I GET THE NEWER SOFTWARES THOUGH?
Astute question dear reader. Answer:
- Backports
- Extrepo
- Nix/Guix
- Legacy universal packaging formats
Backports
This is the most well-known method of getting version updates to software in the Debian repos. The key concept here is things that are already in Debian repos for your release. If it’s in testing but not in stable, you probably aren’t going to find it in backports.
Extrepo: the Mostly-Official Unofficial Third Party Repo
The extrepo package is new (for me) to the Debian repos and includes a
fairly large collection of third-party repositories. Don’t Break
Debian is a longstanding
Debian mantra meaning don’t add ppas or other third-party repositories
that could conflict or break existing software. Extrepo is like a
middle ground between ppas and official repos. They are vetted repos
which are built to work on Debian, but are not official. When you add
a repository with extrepo, it creates an additional sources file in
/etc/apt/sources.list.d/ which apt uses to pull software and updates.
I am surprised extrepo is not that well-known. I am using extrepo to get librewolf, Signal (soygnal), and tailscale, but there are a ton of other free and proprietary packages available from upstream providers on extrepo.
Nix/Guix Package Managers
My brother in Christ tony_btw recently put out a tier list which had Debian solidly in the meh category. His reasons were reasonable: not user-forward, seriously out of date development packages. I definitely agree Debian is not user friendly as a desktop distro unless you know what you’re doing, but if not now that was certainly true with arch and gentoo from years ago. Nothing you can’t overcome. It provides a moderately satisfying flex on newbs FWIW.
If you’re a developer, I think nix and/or guix package managers are a must have regardless of distro. The env shells and local build environments simply are game changers that you don’t even get with up-to-date distros like arch or gentoo. I don’t even care much about reproducibility since I’m very comfortable with ansible, the env shells are the killer feature for me beyond just larger package repos.
I use nix for a handful of packages I can’t find in the Debian repos. I never liked flatpak, AppImage is ok but is not guaranteed to be auto-updating and requires creating/adding your own desktop files, man pages, etc. Nix and Guix just werk (once you know what you’re doing) if you can spare the couple GB of extra storage.
So at this point I don’t even really care how big, small, new, or old Debian’s repos are - which now include many packages I wanted but were not available in Buster. So if I were a dev, I would rather rate a distro on how easy it is to install nix packages. Nix-bin is in the Debian repos and works great. On Devuan I simply had to write a sysvinit script for the daemon which was not difficult. But even then the daemon is not necessary, you can manually run it whenever you need to make changes to nix. Guix includes a sysvinit daemon, but the package selection is much smaller, so rather than running both, I keep everything additional I need on nix.
Debian is good for Emacs
Not strictly necessary, but there are many GNU elpa packages in the official Debian repos. Why is this nice? These packages will be pinned with the version of emacs in Debian repos. You won’t run into the problem of Debian’s emacs package being a version behind the newest stable emacs - which will shortly happen when emacs 31 is released. Once that happens the gnu elpa packages may be modified for version 31 which could introduce breaking changes if still on emacs 30 unless you’ve addressed that possibility in your config (e.g. pinning packages with use-package). Whilst I look forward to emacs 31, I don’t really care much about it, version 30 has been great and I haven’t seen any must-have features in version 31.
vterm is available so zero compilation is required. The latest version
of jabber.el with OMEMO support is in Debian backports, again zero
compilation required.
There are also a number of emacs packages built around
Debian and apt. debian-el provides modes and interfaces to apt for
use in emacs, also available in Debian repos. Next to GNU Guix SD and
maybe NixOS, Debian is probably the best distro for emaxxers.
Other features
I’ve always liked the apt-cacher-ng
package. Since most of my servers and containers at home are running
Debian, I run apt-cacher-ng on an lxc to keep a cache of all packages
installed and point all my machines to that cache. That way updates
are pulled from the upstream repo on the first run from whichever
machine updates first, and then all other machines pull the same
update from the apt-cacher-ng lxc over the LAN. Nice to have when you’re
bandwidth limited and want to minimize hits to the repo servers, but also nice because you can clear the apt cache
on your machine and know you still have the ability to revert packages
from apt-cacher-ng. This also gives you the ability to update
machines which are blocked from the internet.
I also like the aptitude package for researching packages from the
terminal. It is an apt wrapper but also has a tui menu which contains all
the metadata for each packages. Think of it as synaptic package
manager for the terminal. This was a feature I missed when I first moved
off Debian for arch-based distros. A nice to have, not a necessity.
Because of how Debian packages, you end up with a greater number of packages but the overall install size is smaller than Arch. This is because Debian breaks up source and development packages from binaries.
Conclusion
I have my ansible playbooks dialed so that it mirrors my setup from Artix onto Debian/Devuan. From an operator standpoint there is no difference. I can get updated software that I care about from various sources, particularly Nix for those things not in Debian backports or extrepo. The question I have to ask myself is this: what do I actually get from running Artix/Arch? Do I have a compelling reason to run Artix/Arch over Debian/devuan? Not really, it would boil down to init preferences, e.g. Artix fully supports openrc (PID1, openrc-specific scripts) whereas openrc on Devuan is just a substitute for sysvinit’s service manager, PID1 is still sysvinit and the vast majority of init scripts are sysvinit from Debian upstream. And Artix has dinit which is a really nice “minimal systemd” init system.
If I were choosing between Artix/Arch and Debian unstable, I would choose Artix. Debian stable/oldstable is the reason to run Debian IMHO.
Will I be ditching Artix entirely? Absolutely not, the installation I’ve used will stay on the same laptop and I will continue to be as active as I can in forums and contributing to AURIS. But I will be giving Devuan a solid run to learn the ins and outs of sysvinit and see if it could work for me in all edge cases.
Of course this will all change when I get around to installing GNU Guix System Distribution.
Now all I have left is to install a Debian-based distro on my wife’s computer which is why I went down this rabbit hole to begin with. I’ll get around to that eventually too.