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.