Learn about your package manager
@sir flip-side: some environments have out of date packages and wont even accept new ones you update yourself, such as Debian. Additionally, even across `apt`-using distros, like-packages may has dislike-names, but pip is a constant across everything.
Personal computing has loads of conflicting goals, and sometimes isolated and independent tools like virtualenv and pip make life more livable as a pragmatic solution to non-ideal environmental facts of life.
@sir the suggested solutions are to request or (even better) update them yourself, but I specifically mention an instance where this isn't possible.
Names being dislike across systems means I need to write more infrastructure or documentation specifying how to fetch the various dependencies. Ideally I would have the time to write these, or a team of contributors with platform- and distro-specific knowledge, but I don't.
It could of course be solved with sane standards, but that's boring & NIH
@sir it's now the same problem as the dislike names, where people need to know (and I have to write docs or code) to add my own repos, and I need to provide those repos for a bunch of different platforms and distros. Again, I'd need more time, money, or contributors.
It feels more sensible to converge the world on a single packaging standard and infrastructure and allow software to more precisely declare what they need. But that's a bit of a pipe dream because we all have divergent interests.
Some software needs to integrate with the distro, eg. (as pointed out in Drew's blogpost) by creating users, telling init how and when to start your software, etc.
You can't achieve it in a distro-agnostic manner, because one of the reasons different distros exist is to do these particular things differently. And no language-specific package manager will take care of this for you.
Also, you don't need to care about all distros, just the one you have on your servers.
@sir Thanks for this article, I completely agree. This is why crystal's package manager only touches files inside ~/.cache/shards/ and $PWD/lib/. Can't remember if I linked this to you already but: https://github.com/crystal-lang/crystal/pull/3328#issuecomment-247970222 is what I wrote about this topic from a language author's point of view.
@sir Language tooling tends to suck, and i'm scared of someday the "ruby fanclub" of our community are going to ruin everything and create a shitty bloated package manager. Oh well, at least i'll be arguing against ever acknowledging it exists officially until the end of time if that happens.