To me, the current default behavior makes sense.  The dependency for X is 
listed as 1.0 (inclusive) or newer, not 1.0 explicitly.  I myself would find it 
confusing and surprising if it resolved to 1.0 if 2.0 was available.

James Davis * QA Engineer II/Software Engineer
Applied Technical Systems, Inc. * Information Engineering
web: www.atsid.com * e-mail: [email protected]
(p) 360.698.7100 x241 * (f) 360.698.7200

-----Original Message-----
From: [email protected] [mailto:[email protected]] On Behalf Of 
Archie Cobbs
Sent: Thursday, September 23, 2010 8:04 AM
To: Ivy Users
Subject: Please vote: changing the default conflict manager

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

Reply via email to