Hi Wolodja,

It's useful to note that you can use the currently preferred fixed
version specifiers and still have your dependencies and the top-level
project depend on multiple versions of a library (the common case is
multiple versions of Clojure specified as dependencies).

Also, you can specify a baseline version requirement in project.clj
and then still specify tests for your library including alternative
version sets; that makes explicit what has been tested and what simply
"might" work.

Apart from noting the above, I have to say I simply don't see the
benefit of version ranges. Here's a bunch of comments on the list of
positive effects:

On 4 March 2013 13:00, Wolodja Wentland <babi...@gmail.com> wrote:
> 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

That is true today in the sense that if your code works now, it will
continue to work regardless of which libraries release new versions,
as long as you don't change your :dependencies in project.clj or the
equivalent for your build tool.

On the other hand, if you care about securing your project, pulling in
the latest bugfixes etc., you will need to monitor new releases
anyway, regardless of the version numbering scheme used by their
maintainers.

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

Those library authors who care about this already act in this way.

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

Are people actually using package managers for Java libraries and
applications much, beyond a small number of special cases like
LibreOffice (which therefore can totally be packaged überjar-like)?

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

In the absence of version ranges, that seems to be true today...?

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

Here's a relevant link to a post on Yesod's blog from April 2012 (one
of top Haskell web frameworks):

http://www.yesodweb.com/blog/2012/04/cabal-meta

And here's an interesting quote (again, this is from Yesod's own
blog): "Even with all these tools, one day I found myself completely
incapable of installng Yesod from source."

I know Cabal is improving and it actually has a shot at solving some
truly interesting problems with dependency handling, but right now I
find it surprising that one could feel "spoiled" by using it to the
point of feeling discomfort in Clojure land. (We actually have it
simpler for example in that we don't have to deal much with
assumptions baked into previously compiled artefacts; I'm not knocking
Cabal here in any way, just noting that it's not all that rosy.)

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

There's value in using Maven simply for the easy interop with the vast
Java ecosystem behind it. Maven's (Aether's?) handling of version
ranges appears to be counterintuitive. I'm not sure to which degree
this can be fixed on the Leiningen / Pomegranate side, but if we do
expend effort fixing that, what can we expect to get in return?

Cheers,
Michał


> --
> Wolodja <babi...@gmail.com>
>
> 4096R/CAF14EFC
> 081C B7CD FF04 2BA9 94EA  36B2 8B7F 7D30 CAF1 4EFC

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