|
|
|
|
|
by lmm
4905 days ago
|
|
Because it's tying you to an unreliable third-party service, and there's no way to mitigate it. Artifact dependencies really shouldn't be in the same place as source, they fulfil different roles. What you want is a dedicated repository format. Libraries can still be hosted by whoever maintains them on their own repository (which can be their own piece of software as long as it follows the standards), or in the community central repository. But either way, if you depend on those libraries and want to lower your risks, it's trivial to set up a local mirror and make sure all your third party dependencies come in via this mirror. That way if their repository goes down temporarily or permanently it's no problem, and you ensure your builds remain reproducible. The most infuriating part is, the software to do this already exists. If you want to start a new language, great. But please, use maven; otherwise you are doomed to re-invent it, poorly. |
|
Because it's tying you to an unreliable third-party service, and there's no way to mitigate it.
> Sure GitHub has been having some problems recently, but they are all-in-all massively reliable.
> Artifact dependencies really shouldn't be in the same place as source, they fulfil different roles.
Seems like a dogmatic point - why is this advantageous?
More importantly, there is a reason people do this - they want a zero-effort way to use certain branches, tags, etc. They want source.
>What you want is a dedicated repository format.
Again, seems dogmatic. What advantage does one format have over the other.
> in the community central repository
and now we have single point of failure again, but I also have to wait for someone to either upload, or set up an automated solution to upload, the version I want. There's a reason people use the source for this.
> it's trivial to set up a local mirror and make sure all your third party dependencies come in via this mirror
Nightmare. We actually do do this - we maintain a nexus instance on EC2. Its a fairly awful experience. We wouldn't use it if there was a way in leiningen to use git, and if maven wasn't so slow at getting dependencies.
> That way if their repository goes down temporarily or permanently it's no problem, and you ensure your builds remain reproducible.
Definitely a real problem. But there are real tradeoffs here.
> The most infuriating part is, the software to do this already exists. If you want to start a new language, great. But please, use maven; otherwise you are doomed to re-invent it, poorly.
I use maven on a daily basis. Its not great to be honest, and comes with a massive amount of baggage, including the SNAPSHOT stuff which is awful, and a lot of things tied to java. Rubygems are a significantly better experience, are a lot more usable, and have some really good features like being able to use Github links :)