|
|
|
|
|
by FooBarWidget
5201 days ago
|
|
And yet look at how many people use RVM. Just from user popularity alone it's clear that system package managers, no matter how much they're praised by sysadmin people, are not adequate. There's a clear need for package management that's: 1. cross-platform. 2. allows users access to the latest version of the software immediately. 3. allows installation of multiple versions. API/ABI stability is great but perfect backward compatibility is never possible. E.g. some apps actually rely on bugs in the platform and if you fix them they break; yeah yeah I know the software must be fixed but there may be a ton of reasons why that doesn't happen or at least not happen immediately and there's a clear need among users to be able to install multiple versions of a platform/library. RPM/DEB theoretically support (2), but in practice distros never do that. Third party packagers that immediately provide the latest versions are most exception to the rule because they need to replicate their effort multiple times over multiple platforms thanks to the lack of support for (1). RPM/DEB don't even try to support (3). |
|
* Cross-platform.
* Easy access to remote packages as soon as they're posted.
* Versions must specified, so builds are very repeatable. You bear the responsibility of updating your dependencies, but you don't get surprised if a version decides to break compatibility, either.
Also, very decentralized, and it's easy to create a directory locally to hold the dependencies within a project (specify a file:// repository relative to ${project.dir}), or on a per-system-user level (mvn install), or on a per-company/organizational unit basis (self-hosted repos are a cinch).
It's actually a fantastic package management system tailored to Java that works extremely well. Its main problem is that it's also fantastically verbose, and including more and more build plugins can grow exponentially more arcane the greater the number of plugins involved. However, with Go's standardized directory layout among other things (I admit, I haven't done much research into trying Go out), something akin to Maven may actually be a good fit.