@Doomed_Daniel @anniethebruce @foosel I don't mind too much if things are broken down into little projects but how annoying it is depends a lot on the dependancy management tools helping keep track of it all. I've mostly developed perl projects and used RPM as my packaging format successfully, that has worked well for keeping track of things and perl doesn't have a lot of compatibility breaks. I've some 3rdparty apps which are Python/Django, and while that's a great tool, it really pushed me into building virtualenv instead of packaging anything because of the poor built-in dependancy tracking that interfaces poorly with the system-wide package manager, pip has no problem installing incompatible dependancies that break the app as long as the version number goes up and API breaks across the ecosystem are frequent enough that you can't safely share systemwide libraries without having two apps with mutually conflicting library needs, and you can't easily recreate an install of an app from 6mo ago because of library churn, unless somebody pins all the dependancies in the virtualenv and tracks it. I've actually taken to building RPMs of an entire virtualenv to ensure it's consistent across hosts which seems kind of wild.
The way this seems to be solved for desktop software is with Flatpak where the entire runtime is managed as a single versioned thing regardless of how many smaller subcomponents it's made out of. This is also some of the same thinking which created Enterprise distros, where you treat the whole of EL as a single unit that doesn't break API/ABI, and only need to care about your app and it's uniquely managed dependancies.