Return-Path: X-Original-To: apmail-hbase-dev-archive@www.apache.org Delivered-To: apmail-hbase-dev-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 12FB9178D7 for ; Wed, 22 Apr 2015 17:37:18 +0000 (UTC) Received: (qmail 68713 invoked by uid 500); 22 Apr 2015 17:37:17 -0000 Delivered-To: apmail-hbase-dev-archive@hbase.apache.org Received: (qmail 68625 invoked by uid 500); 22 Apr 2015 17:37:17 -0000 Mailing-List: contact dev-help@hbase.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@hbase.apache.org Delivered-To: mailing list dev@hbase.apache.org Received: (qmail 68613 invoked by uid 99); 22 Apr 2015 17:37:17 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 22 Apr 2015 17:37:17 +0000 X-ASF-Spam-Status: No, hits=1.0 required=5.0 tests=SPF_SOFTFAIL X-Spam-Check-By: apache.org Received-SPF: softfail (athena.apache.org: transitioning domain of josh.elser@gmail.com does not designate 54.191.145.13 as permitted sender) Received: from [54.191.145.13] (HELO mx1-us-west.apache.org) (54.191.145.13) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 22 Apr 2015 17:37:09 +0000 Received: from mail-qk0-f174.google.com (mail-qk0-f174.google.com [209.85.220.174]) by mx1-us-west.apache.org (ASF Mail Server at mx1-us-west.apache.org) with ESMTPS id 69E6724C1C for ; Wed, 22 Apr 2015 17:36:49 +0000 (UTC) Received: by qkgx75 with SMTP id x75so225903788qkg.1 for ; Wed, 22 Apr 2015 10:36:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=message-id:date:from:user-agent:mime-version:to:subject:references :in-reply-to:content-type:content-transfer-encoding; bh=lpBloYWRvC5Ap8z2hRdTfVqO5Q63T3pKOPVbZK12IKg=; b=FbEg4j8Qyd/KtGcsxfoImvJ+UE8k26l/AoWS45U8thgHwE9/h98GcxQlH3FP9GyaQW qCvLHrymRnAqFS5GyiDBhycTcsK6/H+agziXc0shQYOqrt49ez3C/cedGuoQa5x1IlAl hTmpDZmgfn1hP+JrB3ux4xl/E6wt4uh9/8l2sQbwwgaMgHYe9mDcaBe/gQL3Z4vM7m/j cEgQZL/Jc9AVzmkZSOqKYEelJPm/enXmAC92+EGtiztQM0W8NjcCpNiflBElpVVic/7G S/A86Yo4YDkLy6NkQ8zfslpzU92+bE69xO+FztDempXZWp76hvmPWMAabF0tUrU2cUW3 n/rw== X-Received: by 10.140.231.198 with SMTP id b189mr31674530qhc.98.1429724163349; Wed, 22 Apr 2015 10:36:03 -0700 (PDT) Received: from hw10447.local (pool-72-81-135-153.bltmmd.fios.verizon.net. [72.81.135.153]) by mx.google.com with ESMTPSA id v2sm4093233qhd.43.2015.04.22.10.36.02 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Wed, 22 Apr 2015 10:36:02 -0700 (PDT) Message-ID: <5537DBF5.6080204@gmail.com> Date: Wed, 22 Apr 2015 13:35:49 -0400 From: Josh Elser User-Agent: Postbox 3.0.11 (Macintosh/20140602) MIME-Version: 1.0 To: dev@hbase.apache.org Subject: Re: Clarifying interface evolution freedom in patch releases (was: Re: [VOTE] Third release candidate for HBase 1.0.1 (RC2)) References: <5537D45D.3020207@gmail.com> In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Virus-Checked: Checked by ClamAV on apache.org Andy -- I understood your intent, but thanks for clarifying. (as well as taking the time to break this discussion out in the first place). I agree with your assessment. re: Sean's comments, if it wasn't clear by me asking in the first place, I also think sticking as close as possible to semver's rules is the best approach, although I'm getting the impression that there have been some previous reservations to doing so (especially by your comment about backporting features if there is demand is). I've found adhering to the bug-fix release restrictions can be a very painful and time-consuming task, so this is something to get a representative sampling of those who do the work to make sure everyone is on board. Sean Busbey wrote: > I'd much rather we stick with the definitions used in Semantic Versioning. > Our use is already confusing enough given our matrix of compatibilities > that don't get "major version for breaking" protections. > > We've previously discussed how we'll do additional minor releases when > there's sufficient interest in the new features present there. What's > building that demand if any backwards compatible change can go back into a > patch release? > > Would we have an easier time restraining ourselves if we had a regular > schedule planned around new minor versions? > > > On Wed, Apr 22, 2015 at 12:03 PM, Josh Elser wrote: > >> While I can understand the desire to want to add things, I do think it >> makes things harder for users to reliably write code against versions of >> HBase which (by their view) should be completely compatible with one >> another. >> >> Take this extremely hypothetical situation: I'm new to HBase and start >> writing some code against HBase 1.0.1 which was just deployed at my $job. I >> don't _know_ what APIs are new, I just know what exists and treat that as >> acceptable for me to be using. Meanwhile in production, some other people >> find a bug with HBase 1.0.1 and roll back to 1.0.0 which they had been >> previously using. My reaction would be "of course my code should work with >> HBase 1.0.0, I only used the public API" when in fact this is not true. >> >> Personally, I think it's a little bold to say semver is even in use if >> this principal isn't being followed as it doesn't follow at all with my >> understanding on the guarantees defined by semver for bug-fix releases. >> >> That being said, if the intent *is* to allow ourselves to make these sorts >> of changes, I just think some sort of disclaimer should be present: >> >> - HBase uses Semantic Versioning for its release versioning >> + HBase uses Semantic Versioning for its release versioning with a caveat >> that methods and members might be added in newer bug-fix releases that were >> not present in the previous bug-fix release. >> >> >> Andrew Purtell wrote: >> >>> [Subject changed] >>> >>> On Tue, Apr 21, 2015 at 8:47 PM, Josh Elser wrote: >>> >>> I was a little surprised when I noticed method additions to >>>> InterfaceAudience.Public annotated classes. This means that a user could >>>> write code against 1.0.1 that would not work against 1.0.0 which seems >>>> undesirable for a bugfix release. I read over the book section on >>>> compatibility and didn't see this addressed, so I thought I'd ask. >>>> >>> >>> Let's clarify this. It's not the first time this question has been asked. >>> >>> To get things moving: >>> >>> I propose the following addition to the "Client API compatibility" section >>> of Section 11.1: >>> >>> + APIs available in a patch version will be available in all later >>> + patch versions. However, new APIs may be added which will not be >>> + available in earlier patch versions. >>> >>> I propose the following change to the "Client Binary compatibility" >>> section >>> of Section 11.1: >>> >>> - Old client code can run unchanged (no recompilation needed) against new >>> jars. >>> + Client code written to APIs available in a given patch release >>> + can run unchanged (no recompilation needed) against the new >>> + jars of later patch versions. >>> >>> >>> What do you think? >>> >>> If these changes are (mostly) ok, then this clarifies in one direction. >>> >>> If these changes are not acceptable, I will propose edits that clarify >>> toward the opposite meaning. ​ >>> >>> >>> > >