In Go, Java, Node.js, Python, Ruby, etc.. you have dependency management solutions.
The idea is every project wraps its output into an artefact, this is pushed into a central repository (Maven Central, NPM Registry, Ruby Gems, etc..).
The build management system can extract the artifact contents and link against the contents. To compile your application, which you package and deploy to the artefact repository.
Considering how much energy has gone into packaging systems and alternative routes, I don't understand why no one has tried this now standard software development approach.
I figure the only technical objection is about C/C++ being platform specific and the artefacts it can produce. However:
- Apache Maven is aware of the operating system and architecture for those terrible Java developers who make OS specific code.
- NPM and PiP both have dependencies with C libraries (SSL is an obvious one) and are OS aware.
I figure C devs might complain their project in what it produces. At this I would refer to Node.JS developers who produce all sorts of madness and the artefact is still usable accross projects.
This approach happened years after apt and rpm were developed, but more than a decade before Snaps & Flatpak which aim to overcome how painful it is to use deb/rpm.
My issue with Snaps and Flatpak is to reduce image size you can now reference libraries which install as snaps/flatpaks. Which is an incredibly heavyweight means of pulling down libraries.
Lastly having written RPM/Deb specs for Java, Node.JS and Python projects its actually really easy to pull the dependency management and build information to auto populate most of it for you.
It just boggles me the open source movement has spent so much energy not doing the obvious thing.
SOCIAL SHARE CARD GENERATOR