[remark] Linux becoming a Windows / OSX clone

by Ciprian Dorin Craciun (https://volution.ro/ciprian) on 

A rant about the complexity of modern Linux distributions, which places them on par with the opaqueness of Windows and OSX.

// permanent-link // Lobsters // HackerNews // index // RSS

Before getting into the topic at hand, I would like to give the reader a small history of my journey in the land of operating systems.

Like most of us that caught the early 90's, I've started with MS-DOS, then continued with Windows (95, 98, Me, 2000, 2003 server), then switched briefly to Linux, then switched briefly to FreeBSD, and from around 2004 I've switched permanently to Linux (first Debian, then Gentoo, then ArchLinux, and currently OpenSUSE). In the years to come I also had the displeasure of fiddling with OSX and Windows.

The main reason I've switched to Linux (and earlier to FreeBSD) was not because of the FOSS ideology, nor the gratis software (as in no payment needed), nor the abundance of good software packages, nor the perceived security superiority...

The main reason I've switched to Linux was because it was an operating system that was so transparent, so (relatively) simple to debug and experiment with, that I felt I could grasp how it all worked (though perhaps not the actual low-level kernel details). I understood everything (at least on a basic level), from the bootloader (at that time the simpler GRUB version which didn't try to be an OS itself, and later my favorite SysLinux), through the early boot with initrd (now initramfs), through the /etc/inittab and /etc/rc.* system boot, through the display manager (although you could have just used xinit straight from the terminal), through the desktop environment, up-to the way Firefox got to connect to the network and play sounds.

Contrast this with Windows (at that time and since after): you've got an opaque bootloader, opaque bootup process, presented with a single-user login prompt (that was a mandatory part of the OS), up to the startup menu (another mandatory part of the OS). How did everything get to that point? Perhaps only a Microsoft engineer would know... Add these days the mandatory TPM, mandatory Live account, and the fog is even thicker...

Also, contrast the Linux (and other unices) /etc configuration with the Windows registry, /var/log debugging with the Windows event log, installation via a simple rsync clonning vs the "1 hour slideshow Windows installer", ssh vs Windows Terminal Services (a.k.a. remote desktop).

Unfortunately, to round-trip to Linux, as the title suggests, I feel more and more that the current (as of 2023) Linux distributions are becoming the open-source alternative to Windows (and OSX), or even perhaps Android (and iOS).


Well, at the moment although I do have a vague idea on how everything works on a modern Linux distribution, I can't actually say with certainty what happens at each step. Nor can I say with certainty what each process running on my system does...

In fact, taking as example the whole system bootup process, my "vague idea" boils down to something like these phases:

In fact, especially looking at the desktop environments, I feel that a running Linux system resembles more some OEM-mangled Android, or some Kubernetes-deployed-micro-services-cluster, than anything which doesn't require a reboot on the next update...

And I haven't even tasted the immutable OS coolness that seems to be all the rage with Ubuntu / RedHat / SUSE nowadays...

Before I continue, I want to caution the reader against labeling me a "systemd-hater"!

I don't hate the core concepts of systemd, and in fact I think that systemd has brought us out of the dark ages of /etc/rc.* mess of tangled and poorly written sh scripts.

However, I do believe that the whole systemd project has overstepped its initial purpose and has become a sort of mandatory "second userspace Linux kernel", that doesn't suffer running along anything else touching the kernel (see the cgroup-v2 takeover), and which has tainted so much the Linux ecosystem that nowadays almost nothing more complex than a terminal tool works anymore without "systemd-enablement"...

In fact I don't even criticize the "Linux project" (as in the "Linux kernel"), because in all fairness it works fine without any systemd-*, udev, dbus, polkit, containers and other silliness.

I criticize most of the "Linux distributions" (thus the generic term "Linux" in my title) that in the later years have become such a monoculture (all being clones or refinements of a few downstream projects like Debian, Fedora, or ArchLinux), that the only differentiator between them has become which "app container runtime" they offer by default, if they use Gnome or KDE, and what theme they sport out of the box...

Granted there are other Linux distributions like Gentoo, Alpine, Void, NixOS, etc. that are still conservative in some of these regards... However, these are not the popular ones, thus not the ones where the most development effort goes into.

I also somewhat understand why we've gotten where we are today. Namely, that developing and supporting nice software costs quite some money (or lots of free time and energy), and having nice desktop environments and GUI applications means we need the RedHat's and Ubuntu's and SUSE's to burn that money on development and support... And these for-profit companies in turn need flexible, extensible, pluggable, and enterprise friendly building-blocks to base their offerings upon. Thus, the proliferation of systemd as a "sidecar userspace kernel" that Linux distributions have nowadays, which supports a wide range of use-cases from desktops to servers to embedded. Then add to all this the whole container cornucopia and we require even more complexity and silliness.

Sure, one can still take the Linux kernel, pretend like it's 2010, and concoct something resembling a workable distribution. But that distribution wouldn't have Firefox, VLC, Discord, Slack, WebRTC, and other nice software without adding back in all the complexity and silliness...

As a side-note, I've started looking at OpenBSD or FreeBSD as alternatives, but they came short of filling Linux's shoes... They are great general purpose server or desktop OS's.

However, they have shortcomings of their own, mainly being so conservative that they've almost been left behind by the overall open-source community. For example, many of the modern development languages or runtimes (like Rust or Erlang/Elixir) don't even treat OpenBSD as a first-tier OS target.

In fact, getting back to systemd, none of the BSD systems have done anything to solve the /etc/rc.* shell scripts hell. I don't want the current systemd, but I also don't want sh scripts to initialize the next Mars mission helicopter; I don't want to rely on double-forking daemons without supervision.

When it comes to userspace virtualization (a.k.a. containers) all the current development happens mainly in the Linux ecosystem, meanwhile FreeBSD sticks with its jails, and OpenBSD has dropped all efforts and focuses on their unveil / pledge mechanism. Which perhaps isn't that bad either, because I do prefer full VM virtualization as compared to shared-kernel containers; but even in this regard virtualization isn't a strong feature of either BSD project.

In the end, I think I'll end-up with only one choice: use any OS that gives me an SSH terminal into a headless desktop running a simple Linux system.

Because I think in a couple of years, I wouldn't be able to tell the difference between an Android tablet and a Gnome desktop (and perhaps even KDE). Both insist on me installing self-contained "apps"; both insist on me living with their "UX and design choices", granting me only the choice of "accent colors" (from a predefined set); both (in fact the "apps") will demand that a 2 year old OS is "unsupported", and then in turn the OS will demand that a 2 year old hardware is "unsupported"...

And this trend has already started with Ubuntu dropping support for any browser and guiding users into using the Snap equivalent, then continued with RedHat dropping support for LibreOffice and guiding users into using the FlatPack equivalent.

(Granted when I say "Gnome" and "KDE" I actually mainly mean the "distributions that package this or that desktop environment", but perhaps some of the fault does stem from the choices these desktop environments have made over the years.)

In fact, the overall dumbed-down and closed-up -- sorry I meant to say "optimized for the enjoyment of our customers" -- Apple OSX seems to be a better alternative...

In the interim I'll continue using i3 until the various distributions drop support for XOrg, or perhaps switching to sway (or other i3 equivalents) if Wayland becomes mandatory, all with minimal systemd-ness. But I fear that the technical support burden of such a deployment would become just unbearable.

Want to read what other people have to say?