This seems to be the state of the software development world, where you really only have two states of affairs:
State one is really old, stable, standardized, “legacy” code, well documented, portable, runs everywhere, easy to port to new systems and architectures. The “curl” library is probably the archetype of this, written in C.
State two is really new, unstable, exciting, “modern” code, always changing, designed largely for a 64-bit Intel architecture, and unpredictably hard or easy to port to new systems and architectures. “Move fast and break things” is a fine motto. I’d put “systemd” in this bucket.
I suppose there are also really old code bases where there’s been a lot of bitrot and cruft accmulated that contributes to fragility. The modern tendency is not to fix those old systems incrementally but to replace them with something brand new.
Noted because of the challenges manifesting themselves in terms where the latest version of a package depends on the latest development version of a language, whereas a different package depends on the latest stable version of that language. You know that a solution is possible given enough time and enough attention to portability, and it’s going to take elbow grease to point out and fix each of those issues.
I really feel for people who do package management, it’s just like Sisyphus playing Tetris.