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
