Comment Re:And what other languages too? (Score 1) 130
I can say from the painful experience of my colleagues that Gems are just broken. It's hard to say precisely what the problem is, but I *think* it's human rather than technical. It's telling that several solutions to "fix" Gems have sprung up in the past few months.
The problem stems, I think, from a tendency for software developers to attach themselves to the cargo-cult of major-minor-teeny version numbers. Without solid release engineering, you've got no indication that (for instance) a minor version bump doesn't include functionality breakage, or that a certain release only includes bug and security fixes *and nothing else*. What it boils down to is that you might as well only have two versions: current and edge.
I also see no reason *whatsoever* to allow more than one gem version on a production server. This being supported has caused us some *hideous* problems in the past. It's not helped by gem authors completely ignoring that some libraries (rake is an example) that are available both as gems and as ordinary system libraries. What happens then is that you can have one version installed, a gem requiring a version that should match, and that require failing because rake exists outside gems.
One way to fix it would be to have a "distribution" layer on top of gems, where people would nominate a specific set of gem versions, and make sure that they work happily together *without* the Gem namespace existing. End users could then install gems from a specific distribution without caring about specific version numbers, knowing that version conflicts couldn't happen. Optionally, the distribution could take care of building binary gems, so that production hosts didn't need compilation tools installed. A not insignificant benefit of this would be that it could make gems compatible with the Debian packaging policy.
The only downside is that people would have to stop living on the edge. I don't see this as a bad thing.