4 ms·
> This worked in a world when there wasn't much software, when releases were rare and when most programs only had one or two dependencies. None of these propert
by zrm 6y ago
> This worked in a world when there wasn't much software, when releases were rare and when most programs only had one or two dependencies. None of these properties are true any more.
I don't think this is even the problem.
It's that upstream maintainers have stopped worrying about compatibility.
Once upon a time you would have regular minor releases of some package. 3.0.2, 3.0.3, 3.0.4, but they were all backwards compatible. If you had version 3.0.4 and some software that was built against 3.0.2, it still worked against 3.0.4 because the only difference was that things were added or compatibly improved, not removed or incompatibly changed.
Version 3.0.x wasn't compatible with version 2.9.x, but then the package maintainer for the distribution only has to package versions 3.0.4 and 2.9.16, i.e. suitably recent minor versions of each compatibility revision. Compatibility revisions so old that nobody relevant uses them anymore can be ignored, so they only had to package two or three incompatible versions which together are compatible with everything in active use.
The problem today is that everything is a compatibility-breaking change, so there are dozens of releases from this year alone that are all mutually incompatible and would have to be packaged separately. And that doesn't scale.
- josephg 6y agoInteresting - I didn’t know that. Can you give some examples?
- zrm 6y agohttps://wiki.openssl.org/index.php/Versioning https://wiki.openssl.org/index.php/Versioning https://developer.gnome.org/gtk3/stable/gtk3-Feature-Test-Macros.html https://developer.gnome.org/gtk3/stable/gtk3-Feature-Test-Ma... https://everything.curl.dev/libcurl/api https://everything.curl.dev/libcurl/api