| I disagree completely and vehemently. 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 :) |
Meh. They've been down more often and for longer than my local nexus. Sometimes it's worth depending on a third-party service, if the benefits outweigh the cost - but there certainly is a cost.
>I also have to wait for someone to either upload, or set up an automated solution to upload, the version I want.
This should be cheap and easy; I think a lot of people misunderstand the point of maven releases - they're not meant to correspond 1:1 to your public "releases", they're for any case where you need a stable, reproducible build.
And do you really want to depend on some random development revision of a given library? Maybe there's a different community norm for Ruby, but if you tried that on one of my projects odds are it wouldn't even compile.
>Nightmare. We actually do do this - we maintain a nexus instance on EC2. Its a fairly awful experience.
Really? My experience is that Nexus is one of the simplest things to run that there is - just run the jar and... yeah, that's pretty much it. What problems have you had? (It's not that I don't believe you, I'm just surprised, and maybe they're things I should be watching out for myself).
>the SNAPSHOT stuff which is awful, and a lot of things tied to java.
It is quite tied to Java (I use it with pure scala but I guess that's similar). What's wrong with the approach to SNAPSHOTs?