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.


Reply via email to