
John Sellens via talk wrote:
I've long found it disappointing the way shared libraries are dealt with in linux and other OSs.
To me, the obvious solutions is to install every library into a directory named for the version, or name the library itself with a version number. Then, if you wish, a default version can be chosen and linked/symlinked into the default directory.
That way, a program that wants a particular version gives the compiler/linker the appropriate search path to find the preferred version.
And of course, once you've built a working version, you can choose to static link it rather than use shared libraries.
We solved this in the obvious way at UWaterloo in the late 1980's (as part of xhier). I still shake my head that this kind of thing is still a problem.
Speaking largely from my experience with Node.js this doesn't work so while in practice. It becomes a major headache for "pr developers"[0] and users. pr developers have to use libraries that they aren't 100% sure what the current feature set is and known bugs are. This creates a bunch of patch libraries, to back port existing features and bug fixes to the project and then you have dependencies hell. Users don't like it because it requires extra space to have multiple version of the same library. Especially when it comes to minor version releases. And it's getting quite common for people to run out of disk space again (the average laptop SSD is ~500GB and photos, videos, games, and even applications have gotten a lot large in the past five years). The only place this type of system works is in monolithic repos where the entire source is under one umbrella, ala Facebook and Google (and maybe Mozilla).[1][2][3] [0]: pr developers - people who aren't major contributors on a project but will submit a Pull Request. [1]: <https://cacm.acm.org/magazines/2016/7/204032-why-google-stores-billions-of-lines-of-code-in-a-single-repository/fulltext> [2]: <https://gregoryszorc.com/blog/2014/09/09/on-monolithic-repositories/> [3]: <https://code.facebook.com/posts/218678814984400/scaling-mercurial-at-facebook/>