> Yawn, another language-specific package manager.
People have been bemoaning language-specific package managers in favor of (Nix/apt-get/yum/Homebrew/MacPorts) for years now, and again and again developers keep flocking to them, despite the supposedly-superior alternatives being readily available. Rather than continuing to complain about this state of affairs, perhaps we should try to figure out why language package managers are so successful.
Nix is far different than everything else you mention. It's not tied to a particular Linux distribution or OS (well, Windows/Cygwin support is shaky but nobody is stopping you from improving that). It provides a foundation (functional package management) unlike any other package manager (except Guix), which solves and allows you to solve many problems that are inherently unsolvable in other PMs (just read the docs ;).
The reason people keep flocking to the favorite language-specific package manager is that it is seemingly the easiest way to solve their immediate problem - get the dependencies installed so they can get on with coding. And the reason not many people go with Nix is first they don't know about it, second it initially seems scary, third the particular package they need may not yet exist.
1. only packaging once, opposed to making a .deb, a .rpm and so on.
2. as soon as its in the language repo, it's available everywhere. Even if I make an apt-get package, I'd have to wait for Ubuntu/Debian/others to include it in their repos. Or I'd have to host a ppa, requiring users to search for it and add it to their package manager. RPM fusion and AUR simplify that, but it still seems hard to have your own packages on .deb systems.
Also because people are complacent with something that works well most of the time, but not all of the time. (where most applies only if you're running the latest stable Ubuntu)
I think it is backwards logic to cite the popularity of Cargo as validation of language-specific package management, when Cargo was officially blessed by the Rust devs:
Standardizing on Cargo as a build system and package manager was a massively important technical decision that was made by the Rust devs. It will have positive and negative consequences for the language, probably for as long as it is relevant.
Rust will work really well with other rust code thanks to Cargo, but what if you want to make a complex project that mixes Rust with other languages at the package level? How about inside of one library? Rust isn't any worse than other languages on this front, but it could have been way better.
Can you elaborate on how Rust "could have been way better"? IME Rust interoperates fantastically with other languages, both as a component in foreign codebases and with foreign languages embedded in Rust libraries.
People have been bemoaning language-specific package managers in favor of (Nix/apt-get/yum/Homebrew/MacPorts) for years now, and again and again developers keep flocking to them, despite the supposedly-superior alternatives being readily available. Rather than continuing to complain about this state of affairs, perhaps we should try to figure out why language package managers are so successful.