I know every distro has its own package manager, some of them share the same package manager, you can even install other package managers.
Besides the source there getting the content from, the formatting of the download and compilation phases, and maybe even a specific programming language; I still can’t wrap my head around why there need to be so many?
What rule says that every distro needs its own package and manager to install any package?
Your OS’s own scripts use Python. So it installs Python by default. But the version of Python that it needs for those scripts, isn’t necessarily the same one that you want to use as a developer. Developers often want to run brand-new versions of open-source software, but the OS depends on stable versions of that same software.
The current solution is to just completely decouple the two. Your OS’s Python libraries are separate from the Python libraries you’re using as a developer. That way, you can update the latter to whatever unstable version you want, while being confident that you’re not going to break your OS.
Aside from the technical problems you mentioned, it also solves the convenience problem of how to distribute libraries. C/C++ is really bad here because they dont have an integrated management tool. If you want to distribute over Linux package managers, then you will have to package it for every distro, paying attention to best practices and figuring out your dependencies for each one, you’ll also have to put it on the VS package repo for developers using Windows and possibly also support a Windows installer (and uninstaller) for those that dont use VS.
The alternative is to upload to a single repo and be done.
I’ve found that certain libraries i need to compile come with their own libraries and npm packaged and i end up with several hundred mb of bloat and 12 versions of npm and libraries just to try to install some package.
Installing a lot of things from github can be more of a pain than it’s worth.
Especially the first time. When you don’t know that there are now different npm instances on your system and you try to install or update something and you affect your entire system instead of the package directory.
Npm is not user friendly imho.