>I downloaded Baldur's Gate I Enhanced Edition which actually had a Linux port on GOG. I tried running it but it was missing libssl 1.0, of which Arch Linux now uses a newer version. Thankfully, an openssl 1.0 package was preserved in the Arch archive so that I can download and install it manually.
>My question is, why is this such an issue in Linux but not in Windows? Why can't an older program just use the installed newer libs? My fixing today was quite advanced for average noobs. How does Windows seamlessly manage to accommodate older programs relying on older libraries? Or should we just distribute Linux games in Flatpaks or Appimages just to be safe?
Linux distribution userspace isn't backward compatible. Flatpak tries to address this by bundling the required userspace (or implying it will), but it still doesn't truly make apps self-contained because it relies on a centralized distribution/updates network. If the repositories go offline, your workflow breaks so Flatpak isn't a complete dependency solution. AppImages are closer, but they still usually require bundling the relevant userspace libraries if you want real containment.
Traditional package managers have a similar issue as Flatpak, but arguably worse: they don't clearly separate the stability of the base OS from the stability of user applications. A rushed update that breaks core system components can affect everything on the system. Arch is the worst offender here because of its fast-moving updates. There's little isolation between OS and application. With AppImages and Flatpaks, the impact is at least isolated per application.
Windows doesn't suffer from this to the same extent because its core userspace libraries are stable and maintain backward compatibility. Applications typically only need to bundle specific third-party libraries like Qt or SDL2. On Linux, fragmentation makes it harder to coordinate a consistent, backward-compatible, stable “userspace API” across distributions.
The solution is for distribution maintainers/authors to actually care about creating and maintaining a stable userspace "API", which requires distribution maintainers to exercise real authority over the developers of key system libraries. Basically, Debian has to tell glibc programmers to stop fucking with the API/ABI stability, or ditch glibc entirely and similar independent libs to write their own stable userspace libs.
>My question is, why is this such an issue in Linux but not in Windows? Why can't an older program just use the installed newer libs? My fixing today was quite advanced for average noobs. How does Windows seamlessly manage to accommodate older programs relying on older libraries? Or should we just distribute Linux games in Flatpaks or Appimages just to be safe?
Linux distribution userspace isn't backward compatible. Flatpak tries to address this by bundling the required userspace (or implying it will), but it still doesn't truly make apps self-contained because it relies on a centralized distribution/updates network. If the repositories go offline, your workflow breaks so Flatpak isn't a complete dependency solution. AppImages are closer, but they still usually require bundling the relevant userspace libraries if you want real containment.
Traditional package managers have a similar issue as Flatpak, but arguably worse: they don't clearly separate the stability of the base OS from the stability of user applications. A rushed update that breaks core system components can affect everything on the system. Arch is the worst offender here because of its fast-moving updates. There's little isolation between OS and application. With AppImages and Flatpaks, the impact is at least isolated per application.
Windows doesn't suffer from this to the same extent because its core userspace libraries are stable and maintain backward compatibility. Applications typically only need to bundle specific third-party libraries like Qt or SDL2. On Linux, fragmentation makes it harder to coordinate a consistent, backward-compatible, stable “userspace API” across distributions.
The solution is for distribution maintainers/authors to actually care about creating and maintaining a stable userspace "API", which requires distribution maintainers to exercise real authority over the developers of key system libraries. Basically, Debian has to tell glibc programmers to stop fucking with the API/ABI stability, or ditch glibc entirely and similar independent libs to write their own stable userspace libs.
Replies: >>18740