It's nice that Flatpak (and AppImage and Snap) exist, but it's sort of sad that we had to resort to this kind of thing to get out of dependency hell. The ultimate cause of the problem was misplaced enthusiasm for both modularity and deduplication. So you've got the standard Linux distro (say, Ubuntu) which comes with a certain version of libxml, and all of the preinstalled apps use this version. Except it isn't backward or forward compatible, so every time you install an app from the package manager, it goes and grabs a different version of libxml and installs it alongside the system one. Soon enough you have dozens of variants of each common library. Now imagine a hapless Linux coder has written a program that works with libxml version 4.0.1 and absolutely breaks horribly with version 4.0.2. And the dependency resolution is lax enough that it automatically loads with 4.0.2 (after all, it's a point release, as per semver). Now look at the opposite extreme: On Windows everything is backward and forward compatible. Nothing is modular, everything is standardized. If you want an XML parser, it's provided as a system library, and apps pull in their own version only if they absolutely must.