I think my ideal Linux OS is probably Ubuntu/CentOS + something like macOS’s .app bundle file format for distributing end-user applications.

When running personal Linux, I want things to generally “just work”, which means staying away from the distro package managers on Debian/Redhat derivatives. Given enough “hobby time” I manage to twist my base system’s packages into pretzels and/or break workflow critical software by noodling around. Back in the day I inflicted a lot of pain on myself trying to get newer Apache running on older Debian or similar. Third-party package repos, PPAs, or installing from source are all false prophets that eventually swamp the system in strangeness.

At least for server software, Docker solves this problem completely and totally. As long as your kernel is new and you have plenty of disk space, it’s trivial to run anything so long as it doesn’t need to integrate with the host OS for a good experience. Docker turned my hobby home server experience from “periodic distress” into “years of smooth sailing”. No matter how weird the server, I can bottle it inside a Docker container. This works because server software integration relies on a few primitives - sockets, boring files, env vars - and coupling is loose.

The same cannot be said for the “Docker for GUIs” stuff like Flatpack/AppImage/Snap, at least the last time I tried Linux on Desktop. I had issues with theme mismatch, weird fonts, broken clipboard, media hotkey problems, etc etc last time I tried Ubuntu & Fedora with these tools. Sure it’s better than running X clients in a docker container, but there were still many issues. Snap on Ubuntu was also slow - how come the calculator snap is slower than a calculator Docker? The issue is there’s tons of wild plumbing needed for GUI apps. Gconf (which is a windows registry clone?), dbus, something something Wayland, arbitrary sandboxing, .desktop files, whatever’s responsible for sound on the host… oy.

I look at systems like Nix or Guix with admiration — they offer an interesting tradeoff, but fundamentally represent a better version of a distro package manager. You can install software from the OS repo without worrying about internal conflicts… but now you’re using a weird system that’s much more difficult for software to understand. Also, I need to learn a new programming language (or whatever Nix is) to use it. Maybe one day I’ll go back to school or retire and I’ll have enough free time for this to sound fun.

I want to download apps as zip files from an upstream, unzip, and double click to run. Copy apps between systems with drag and drop. Never worry about incompatible versions of dynamic libraries. And my apps should use my system theme and respect my font and DPI settings, and have access to whichever files I want to work on. In short I want the ROX desktop dream, but for all Linux apps. http://rox.sourceforge.net/desktop/about_rox.html

[Article author here]

> I think my ideal Linux OS is probably Ubuntu/CentOS + something like macOS’s .app bundle file format for distributing end-user applications.

Then I suggest looking at NeXTspace:

https://github.com/trunkmaster/nextspace

It does exactly that. CentOS, plus .app bundles, all integrated into a single bundle.

But the .app bundles come from GNUstep, so you can't pick your own desktop.