Return-Path: Delivered-To: apmail-ant-ivy-user-archive@www.apache.org Received: (qmail 12934 invoked from network); 23 Sep 2010 16:12:05 -0000 Received: from unknown (HELO mail.apache.org) (140.211.11.3) by 140.211.11.9 with SMTP; 23 Sep 2010 16:12:05 -0000 Received: (qmail 11841 invoked by uid 500); 23 Sep 2010 16:12:05 -0000 Delivered-To: apmail-ant-ivy-user-archive@ant.apache.org Received: (qmail 11707 invoked by uid 500); 23 Sep 2010 16:12:04 -0000 Mailing-List: contact ivy-user-help@ant.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: ivy-user@ant.apache.org Delivered-To: mailing list ivy-user@ant.apache.org Received: (qmail 11699 invoked by uid 99); 23 Sep 2010 16:12:04 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 23 Sep 2010 16:12:04 +0000 X-ASF-Spam-Status: No, hits=2.2 required=10.0 tests=FREEMAIL_FROM,HTML_MESSAGE,RCVD_IN_DNSWL_NONE,SPF_PASS,T_TO_NO_BRKTS_FREEMAIL X-Spam-Check-By: apache.org Received-SPF: pass (athena.apache.org: domain of mgitman@gmail.com designates 209.85.213.173 as permitted sender) Received: from [209.85.213.173] (HELO mail-yx0-f173.google.com) (209.85.213.173) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 23 Sep 2010 16:11:59 +0000 Received: by yxs7 with SMTP id 7so831344yxs.4 for ; Thu, 23 Sep 2010 09:11:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:received:in-reply-to :references:date:message-id:subject:from:to:content-type; bh=we4Hxu8rdw5tw6RaCx8yNNrQySBKZpIRn32sAnw+vg4=; b=tpRTHpTGzmu1LLvG3jTSZRIKFxfQ5sS4e24VZrqniNfsw/zJ9MjMvQMfgj4vqXo3ei eKYqFxdYb6LrfXR07w1JGX/ax/E5d3atVEBuG99U5XNVcgPkbYhxSMOo/78wOfSgjkPe yH5nGHf4baWZVV19t7nBxt6yRpNsHyg/rk/o8= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type; b=f4ckxL2PqqMpB8B07OabxXZYGfF180lgdtK7uZEIsoOm0tEblEPxnOShBnJJqboKWU u7GSMJdJKb7YvqUzLvGRCGtYGO/xOqXKaHJmPg/anOF/51iD2VYW7q+Wg9qZMccw4lWN sBALAhFzgFvQDW6XCkf7dud6CZNaZuXTiPlwA= MIME-Version: 1.0 Received: by 10.100.209.19 with SMTP id h19mr2242818ang.169.1285258298060; Thu, 23 Sep 2010 09:11:38 -0700 (PDT) Received: by 10.231.176.164 with HTTP; Thu, 23 Sep 2010 09:11:37 -0700 (PDT) In-Reply-To: References: Date: Thu, 23 Sep 2010 09:11:37 -0700 Message-ID: Subject: Re: Please vote: changing the default conflict manager From: Mitch Gitman To: ivy-user@ant.apache.org Content-Type: multipart/alternative; boundary=0016369fa3314cfab50490ef84b7 --0016369fa3314cfab50490ef84b7 Content-Type: text/plain; charset=UTF-8 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 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: > > > > > X: > > > > 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 > --0016369fa3314cfab50490ef84b7--