💾 Archived View for yujiri.xyz › software › fleeing-from-os.gmi captured on 2023-11-14 at 07:53:32. Gemini links have been rewritten to link to archived content
⬅️ Previous capture (2023-09-08)
-=-=-=-=-=-=-
I'm starting to think one of the transcendent problems with modern software is that no one wants to negotiate with the OS anymore. Everyone's trying to cut the OS out of the picture by building more layers on top of it. Snap, Flatpak, AppImage, Homebrew, the container fad, Electron...
You *can't* make a platform-agnostic packaging system, stop trying. Packaging is fundamentally a platform-specific thing. I think when people try to make it platform-agnostic, what they really end up making is something that supports most of the *mainstream* platforms by depending on various assumptions that those platforms share; the difference is that now these assumptions are unwritten, which makes it even harder for people who use a platform outside the mainstream.
Developers shouldn't distribute their own software
For example, snap depends on systemd. That is *absolutely* not platform-agnostic; it only exists on *mainstream* Linux distributions. But a lot of people aren't aware of this; for a long time Snap even had something on their website falsely claiming it works with all Linux distributions.
Platform-agnostic application runtimes are more complex, and maybe more sinister, because the software never *leaves* the invented layer. Packaging is just a system for delivering software. A runtime captures the software forever, its overhead and brittleness always present.
A popular example is Electron.
And of course, the web is a huge example.
The absolute worst example of fleeing from the OS, and the one that prompted me to write this, is a diabolical piece of software called Eclipse Che: an IDE that runs in a Kubernetes cluster. Jesus, fuck. What was I doing with this diabolical piece of software, you ask? Well, my *job* asked me to integrate it with our web service as an in-browser IDE that gives access to a pod running on our Kubernetes cluster.
And incase you thought I just meant that the IDE runs *as a single pod* in a Kubernetes cluster: no, the IDE runs across *six separate* pods.
My god, we've got to stop this. An IDE should be an application you install and run on your computer. Instead of stuffing stuff into "containers", learn how your operating system works and install it properly.