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