"Windows Side by Side" for Linux?
Bear with me here because it might sound rather outrageous, and I might be a bit ignorant in these matters so please forgive me if this sounds stupid.
Windows has a system called "Windows Side by Side" (or winsxs) that basically tries to avoid dependency hell by storing multiple versions of the same DLL into a folder, and programs can load their version of a DLL on demand. This was introduced in Windows XP and I've noticed that it tended to avoid a lot of the "DLL hell" that was there in previous versions of windows back in the day. The disadvantage to this is that it can end up taking a LOT of space.. for example in my Windows 7 install I've noticed that the winsxs folder can take up around 20GB (!!)
I've noticed that a lot of Linux distributions tend to store only one version of a certain library at a time and as a result there can be certain amounts of dependency hell. Additionally, different versions of the same Linux library from what I understand tend to be very incompatible between each other, and this can break things very easily when upgrading. I regularly encounter a lot of packages getting broken between upgrades.. so I was wondering how practical it would be for a distribution to implement something like this. It would probably require a lot of drastic changes in the operating system.. I don't know, but I think it'll make desktop linux much more usable despite the amount of complexity it might add as well as the space it might use up.
Microsoft maintains the older versions of those libraries. They still apply security and compatibility fixes to them. On Linux, this doesn't happen. If you don't update to the version supported by upstream, you're left with security holes and also breakage that won't get fixed for that version. Distros simply package the libs. They don't develop them themselves. Microsoft actually does develop them and has full control.
I was under the impression that WinSxS works for all libraries whether they are made by Microsoft or not.
Originally Posted by RealNC
The amount of work for packaging applications for a distro would rise significant. Let's say you have 1000 applications in your repository that depend on a specific library (which should not be that uncommon when it comes to libraries like GTK, QT, SDL, glib, ...). If now there is a patch to this library you would have to re-built/re-package 1000 applications. In the current approach you only need to re-built one library.
Hm. Didn't know that. My winsxs directory seems to contain only MS stuff.
Originally Posted by 9a3eedi
That is true, but this would also give the application developer the ability to distribute his program to multiple distributions at a time, and not just for a specific distribution. Kinda like how Windows programs are installed with an installer rather than a package manager.
Originally Posted by TobiSGD
I suppose it would take up way more space though.
This is already possible with static linking.