I had been hacking for several days on a small application that provides smart card support for my bank’s ATM card. The bank provided a version for Windows, Mac, and (surprise) Linux. The Windows app just worked on Win11 although it had been written some time ago and only mentioned Windows 7. The Linux app was built on Ubuntu 18.04 and of course was completely broken on Ubuntu 24.04 due to missing/obsolete packages, etc. With a little hacking and backporting a couple of missing libraries I managed to get the app working on Linux, but then ran into a problem at the bank after successfully logging in with my ATM card. So guess I’m stuck with Win11 if I need to pay bills online using my ATM card (that’s the way things work in Taiwan).
I watched a rant by Linus Torvalds on YouTube from about 3 years ago where he was complaining about the sorry state of desktop Linux. So many of the problems I run into when maintaining my systems come down to version-itis issues with libraries that I’m wondering why do we even need this stuff anymore? 40 years ago in the early years of the PC revolution memory was scarce and storage expensive, so it made a lot of sense back then to be able to share resources among applications in order to minimize an app’s storage footprint in a given system. But today why do we need to bother with shared libraries? I mean, when was the last time we had to deal with overlays? Shared libraries really still make sense only for development, but once an app is finished statically compile the bugger and ship it and it will run on any distro regardless of version and survive many an upgrade until the kernel breaks something. But kernel breaking it down the road is unlikely it seems, at least as long as Linus is around. His #1 rule for kernel developers, and it has NO exceptions, is: you don’t break userland.
We measure disk space in Terabytes and memory in Gigabytes these days, who cares how much disk space an app takes up? It’s nothing compared to the amount of storage we have available. Even my itty bitty Jetson dev board has 1TB of SSD on it. And especially for embedded systems running Linux it seems that statically compiling applications makes a lot of sense. The fewer files to configure in a system or have to OTA from time to time the better.