ant-ivy-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Mitch Gitman <mgit...@gmail.com>
Subject Re: Please vote: changing the default conflict manager
Date Thu, 23 Sep 2010 16:11:37 GMT
Fortunately, we're not arguing here whether there should be a
"latest-compatible" strategy. It's already there.

Frankly, I'm very happy that "latest-revision" is the default. I like it
when a framework or component does the "dumb" or literal thing rather than
the "smart" or magical thing. If you're being undisciplined about how you
manage your dependencies, then I appreciate it that Ivy isn't automatically
trying to think things through for you and bail you out.

Also, I bet there are very few people out there who even have a full grasp
of what "latest-compatible" does under various circumstances. How many of
you could explain that strategy in a few sentences? I'd hate to see the
default be something that people scarcely even understand.

Archie, isn't the example you give a classic case of why there's
force="true"? And BTW, while I like that dependencies have a force option, I
chafe at using it. That's an indication to me that I don't have a full
handle on my repository's dependency graphs.

Preemptive apologies if I'm not able to follow up further on this thread.

On Thu, Sep 23, 2010 at 8:03 AM, Archie Cobbs <archie@dellroad.org> wrote:

> In my opinion, the default behavior of ivy is very non-intuitive and
> violates POLA <
> http://en.wikipedia.org/wiki/Principle_of_least_astonishment>
> .
>
> I'm referring specifically to the default conflict manager being
> "latest-revision" instead of "latest-compatible".
>
> For a concrete example of what this means, suppose we have modules A, X and
> Y with these dependencies:
>
> A:
>
>  <dependency name="X" rev="3.0"/>
>  <dependency name="Y" rev="1.0"/>
>
> X:
>
>  <dependency name="Y" rev="[1.0,)"/>
>
> Y:
>
>  No dependencies
>
> Now suppose we resolve A. If only version 1.0 of Y exists, then ivy will
> choose Y=1.0 and everything is fine. Now suppose a few months later version
> 2.0 of Y is released and added to the repository. The next time A is
> resolved, ivy will choose version Y=2.0... even though the dependency in
> module A specifically states rev="1.0" for Y.
>
> To me this seems completely insane... at least for being the
> *default*behavior of ivy.
>
> However, this is just my opinion... and fixing it would mean changing ivy's
> default behavior in a backward-incompatible manner, by changing the default
> conflict manager from "latest-revision" to "latest-compatible".
>
> So the question is: would you support this change, or would it be too
> disruptive (or you just don't like it, etc.)?
>
> Thanks,
> -Archie
>
> --
> Archie L. Cobbs
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message