On Sat, Mar 02, 2013 at 17:42 -0600, Nelson Morris wrote:

> > Or is this a bug in leiningen's dependency resolution?

> Unfortunately it's behaviour defined by maven.  In order to be compatible
> lein has to do the same thing.

> I've written up a few things about version ranges at
> http://nelsonmorris.net/2012/07/31/do-not-use-version-ranges-in-project-clj.html
> and in some other mailing list threads.  

I would like to note that there is /nothing/ wrong with version ranges in
general and it would be very good if the Clojure tooling would actually
support proper and expressive dependency definitions. Unfortunately it does
not, which seems to be a bug in maven or in the fact that Clojure relies on
this. It is also ridiculous that RC or alpha/beta releases are treated in the
same way as actual ones.

Maybe it would be good to think about how this unfortunate behaviour can be
fixed, rather than relying on having to hardcode very specific dependencies.
(as in dependency on X.Y.Z even though the library in question provides a
stable API in all X.* releases)

I think this would have the following positive effects:

    * Projects don't have to constantly monitor new releases of new libraries
      and bug authors of libraries they use to do the same

    * Library authors would be more concerned about providing a stable
      interface for all releases that fall into a certain version span

    * Packaging software and tools by downstream distributions (e.g. Debian,
      Ubuntu, …), so that Clojure software can be easily used by people that
      are /not/ familiar with Clojure can still easily use software written in
      it, would be much easier.

    * Deployment would be more predictable as people know that they target
      only "stable" releases.

I know that I am coming from a different culture than the "Let's package
everything in a jar and it is good", but I believe that there is merit in
stabilizing APIs and in relying on libraries that honour this. I am also aware
that my experience with Python's "batteries included", Haskell's "platform",
C's SONAMEs or Debian's packaging system might have spoiled me, but still ...

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.
-- 
Wolodja <[email protected]>

4096R/CAF14EFC
081C B7CD FF04 2BA9 94EA  36B2 8B7F 7D30 CAF1 4EFC

Attachment: signature.asc
Description: Digital signature

Reply via email to