On Mar 4, 2013, at 7:36 AM, Meikel Brandmeyer (kotarak) wrote: > Hi, > > Am Montag, 4. März 2013 13:00:31 UTC+1 schrieb Wolodja Wentland: > > It is up to a community to fix things that are broken in their toolset and > "Do > not use version ranges" is IMHO the wrong answer. > > > Huge +1. > > I was about to blog in favour of version ranges. As I'm a toolmaker myself, I > wanted to first spike a proof-of-concept of a saner dependency resolution > library ("it can't be thaaat hard, right?" kind of run-up-a-wall-soon > project). However now I will blog anyway and get to code later on. > > Having detailed dependency reports with sane information as they were added > lately to leiningen and gradle are a first step. A sane resolution strategy > is the next. (Funnily ivy already seems to provide that...)
FWIW, contributors to Pomegranate and Leiningen are working on general solutions to this sort of madness, but the use of version ranges will always be largely unwarranted, especially in published libraries. There are a lot of reasons for this, but #1 for me is that few people understand the implications of version ranges, either downstream of their published libraries or when they are consuming a library and place a range around its resolution. If you do, and your team does, then by all means, go hog-wild with version ranges in your in-house libraries and applications, where you can control versioning schemes, correspondences between APIs and versions, and so on. However, none of those standards apply in the commons, so ranges like the one that provoked the problem in this case ([org.clojure/clojure "[1.2,1.5)"]) are counterproductive (i.e. there is no reason to prospectively exclude an unreleased version unless you're certain that API changes will break the library in question). Granted, the fallback resolution of the Leiningen/Pomegranate/Aether triad fall down badly, which exacerbates the problem; again, that's being worked on, but the solution still won't help in this situation where a library blocks out e.g. 1.5.0, but a downstream user/library explicitly specifies 1.5.0. I feel like I'm light-years OT, so I won't wade into the Ivy vs. Aether morass; suffice it to say, if there were a silver bullet — and there's not — Ivy wouldn't be it. Cheers, - Chas -- -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.