I am a Linux user for decades. I have promoted the use of Linux wherever I could. But it’s about time to say the truth: Linux sucks!
Before you draw conclusions I like to add: Microsoft Windows and Apple macOS suck even more.
The Linux kernel and applications are based on open source software (with possibly a few exceptions such as proprietary graphics drivers). Everyone can access the source code and make modifications, add stuff, etc. Package maintainers then decide which changes or additions to add to their packages. Distributions may also go through some validation to make sure essential things don’t break.
All this has worked amazingly well to produce an operating system and software environment that today powers practically everything from mainframe computers, servers down to tablets and cellphones. There is one, and only one big exception: the desktop. Less than 2% of the PCs and laptops are powered by Linux. Compare that to Microsoft Windows’ 77% market share and Apples 18% share (statcounter, May 2020).
Although originally derived from Linux, Android – or better, a Linux kernel hijacked by Google and mostly turned into closed source software – has nothing to do with Linux and is not part of the Linux ecosystem.
Bryan Lunduke recently released his 2020 version of “Why Linux sucks”. A review or summary can be found at thenewstack, and here is the full video. (Be aware that if you are a young viewer you may lack the patience to sit through the video, and if you are old enough, you might die of old age before you see the end of it.)
I’ve copied his title because it’s just so true. In the following I will share my experiences with desktop Linux in 2020 and why I agree with Lunduke.
2020 – Odyssey in Desktop Linux
It all started with a new PC built. I felt that Linux Mint 19.3 QEMU and libvirt packages were way to old to properly support the latest and greatest AMD hardware and installed Pop!_OS on the new PC. Everything worked fine, performance was good, and after a lot of tuning I even got to a usable Linux desktop.
Things started to fall apart when all of a sudden some desktop feature wouldn’t work anymore after an update. Applets disappeared. Sometimes uninstalling and reinstalling would work. In the end, a perfectly working printer setup suddenly failed and I found no way of making it work again. The documentation (or lack of it) didn’t help, and a cry for help on the Reddit forum was left unanswered (after trying all sorts of other sources). There is only one conclusion when it’s broke and nobody can fix it – dump it. True, it’s all my fault. I hadn’t tested Pop!_OS to see if it fits my needs. One week of running it in a VM is just not enough.
I had tested Manjaro for about half a year in a VM, including virtualization using nested kvm. I was worried that Manjaro – being an almost bleeding edge distro – would break ever so often after updates, but I didn’t experience a single issue while running the VM.
After installing Manjaro as my host OS, I soon discovered its downsides. Packages like system-config-lvm – a really simple, easy-to-use GUI to configure LVM – aren’t supported anymore. Even when I managed to install it via AUR, it gave me “ImportError: No module named gnome” because some dependencies were missing. (Note: this package has been abandoned some years ago.)
luckybackup, my rsync GUI of choice, installed and worked fine. Until an update broke things. So I wrote my own backup script and just as I finished testing my backup script and – don’t know why – rechecked luckybackup, lo and behold, it suddenly works again. (That was after some 1 GiB updates that same day.)
Having a little spare time (thanks to the CoVID-19 crisis) I rewrote my mount script to mount Windows partitions residing on LVM volumes. In the past I used kpartx to map the Windows partitions. kpartx is part of the multipath-tools package which is not installed by default. Since, under Linux, there are usually multiple ways to do things, I discovered losetup and wrote a little script to mount a Windows partition on the Linux host. Here is the losetup command:
dev="$(losetup --show -f -P "$winlv")"
The script worked fine until yet another system update/upgrade broke things. losetup would create loop devices for regular NTFS drives (actually LVM volumes), but not for the Windows system drive (again, I’m speaking of a virtual drive on a LVM volume). I couldn’t figure out what happened and eventually gave up. My current script uses once again kpartx.
Then there was the QEMU 5.0 upgrade. I had already built QEMU 5.0-rc from AUR and it worked fine before. When QEMU 5 was finally released as 5.0.0-5, the bugs came creeping up (see Windows BSODs to KERNEL_SECURITY_CHECK_FAILED on boot and Sound (?) make VM crashing). Some days later the QEMU 5.0.0-6 release fixed the issues, but for me it meant a day of downtime for my Windows VM which I need sometimes.
And here we come to the bottom of the problem: Lack of (backward) compatibility! The Linux environment changes so quickly that sooner or later apps and scripts will become incompatible.
Lack of backward compatibility of the OS environment makes it extremely difficult, time-consuming and ultimately expensive to maintain software on Linux. This comes on top and in addition to the fact that there is no one Linux OS but many distributions with often very different ways of doing things.
Most Linux distros underwent profound changes over the past 10 years: systemd vs. init, kernelstub vs. efistub vs. rEFInd vs. grub2 vs. grub vs. lilo vs. clover…, and many more. Heck, even the NTP sync service on Manjaro has now two services to choose from: ntpd.service and systemd-timesyncd.service. Why does Manjaro install ntpd.service when they recommend systemd-timesyncd.service?
On top of all and right in front of our eyes are the desktop environments: Gnome, Xfce, Mate, Cinnamon, KDE, Budgie etc.
All this makes Linux overwhelming for the newcomer as well as for the software developer. And sometimes even for me.
That’s why Linux sucks in my eyes.
P.S.: I won’t change to Microsoft Windows on my host. Why should I trust closed source software?
P.S.S.: I’m waiting for the release of Linux Mint 20. Linux Mint has been my stable companion for about a decade.
P.S.S.S: Just to underline the point, Ubuntu 20.04 managed to break the driver override feature that worked very well in previous editions. This goes for Ubuntu derivatives such as Linux Mint and Pop!_OS as well. If you think something works well, just wait for some update to break it!