Hi Chas,

Am Montag, 4. März 2013 14:33:29 UTC+1 schrieb Chas Emerick:
>
> 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.
>

Ok. So instead of the range I specify "[org.clojure/clojure "1.2"]". What 
does that mean? Now I either excluded *all* clojure versions not= 1.2 or 
the version number doesn't mean anything. Then we should get rid of it 
completely and just specify the dependency without it. (It seems there 
maven poms which do exactly that? o.O)

The range [1.2;1.5) means that the library was tested with 1.2 up to 1.4 
and - believing in semver - their patchlevel children. 1.5 (was at that 
time) not released, yet. So compatibility couldn't be guaranteed. For me 
this is a reasonable approach. Sure. It might work with 1.5. Everyone is 
free to place an exclusion to help the system resolve the conflict. But you 
must be aware you might run into trouble.

If I follow your approach I must provide 4 branches of a library which 
basically consists of a single function: one branch per supported clojure 
version (so far). This is ridiculous. Or - as I said - we let all hope go 
and don't specify the version, only the dependency on the library itself.

I see we have a different basic idea of what a version range should mean. 
For me it's a promise that my library will work with the versions 
specified. If one wants to use a version outside the range, that *might* be 
ok, but one should be aware and pointed to that fact and the decision to do 
so should be explicit!

I'm probably just a pessimist, while you are an optimist.

Meikel

-- 
-- 
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