Return-Path: X-Original-To: apmail-accumulo-dev-archive@www.apache.org Delivered-To: apmail-accumulo-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 9A1641024C for ; Thu, 4 Dec 2014 16:52:37 +0000 (UTC) Received: (qmail 9347 invoked by uid 500); 4 Dec 2014 16:52:32 -0000 Delivered-To: apmail-accumulo-dev-archive@accumulo.apache.org Received: (qmail 9304 invoked by uid 500); 4 Dec 2014 16:52:32 -0000 Mailing-List: contact dev-help@accumulo.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@accumulo.apache.org Delivered-To: mailing list dev@accumulo.apache.org Received: (qmail 9288 invoked by uid 99); 4 Dec 2014 16:52:31 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 04 Dec 2014 16:52:31 +0000 X-ASF-Spam-Status: No, hits=2.2 required=5.0 tests=HTML_MESSAGE,RCVD_IN_DNSWL_LOW,SPF_NEUTRAL X-Spam-Check-By: apache.org Received-SPF: neutral (athena.apache.org: local policy) Received: from [209.85.216.176] (HELO mail-qc0-f176.google.com) (209.85.216.176) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 04 Dec 2014 16:52:27 +0000 Received: by mail-qc0-f176.google.com with SMTP id i17so13231989qcy.35 for ; Thu, 04 Dec 2014 08:52:06 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:date :message-id:subject:from:to:content-type; bh=LbZBy9UMv5XuUqkKIE0HkgEo/tFnZ4arj+k98IasdUU=; b=LhMxTQg6C0c3nfTwVZx9IsVojrENFsQHSZuWMV57LhAUXQdR25AqkGWZBq5CGLXWYI AzIKHM13+prUFxfAMytjW+yFl37RySC7859dCqIotZs1XqKlNHGLRw7XtQjnf93cZozo eTomgWpzCzdILaiLD9/mp7ScgcOs2ga7FXcbqTt43HpoMleDJAkMgn7c+Y0jFtk8CzQ+ gtCE9snv72bUnz1mXt2TSzr62pK9oW1xvQg7r/cCXrvee/yUxXOv/emHzasaZbDslS5O TuKiBGNJgge2N7BJ+H+xDCGG1pjN3p80bi7Nv+bq6MhbUDshTLGcb0kSqg+lK2/WdNLi aUzQ== X-Gm-Message-State: ALoCoQnGENTWG+HYTl/l8y3q4QWBuSWCV5BMApIJ+FvRrqfORD6R6Li9+X2/zHT/5MC8Dkcv6+HC MIME-Version: 1.0 X-Received: by 10.140.28.73 with SMTP id 67mr17934073qgy.53.1417711926485; Thu, 04 Dec 2014 08:52:06 -0800 (PST) Received: by 10.229.147.204 with HTTP; Thu, 4 Dec 2014 08:52:06 -0800 (PST) In-Reply-To: <54808E84.9090403@gmail.com> References: <54808E84.9090403@gmail.com> Date: Thu, 4 Dec 2014 11:52:06 -0500 Message-ID: Subject: Re: [VOTE] API release policy for 1.7/2.0 From: Keith Turner To: Accumulo Dev List Content-Type: multipart/alternative; boundary=001a113a357ac602b8050966c7d6 X-Virus-Checked: Checked by ClamAV on apache.org --001a113a357ac602b8050966c7d6 Content-Type: text/plain; charset=UTF-8 On Thu, Dec 4, 2014 at 11:40 AM, Josh Elser wrote: > John Vines wrote: > >> Though I feel the biggest reasoning is our switch to semantic >>>> >>> versioning. And from semver.org, >> >>> > > >>>> > > >>>> > > 1. MAJOR version when you make incompatible API changes >>>> > > >>>> > > >>>> > > >>>> >>> > Right and dropping deprecated APIs is an incompatible change. Do you >>> think >>> > the following two rules are reasonable? >>> > >>> > * When API is deprecated, must offer replacement if feasible. >>> > * Can only drop deprecated method when MAJOR version is incremented >>> >> (there >> >>> > are other proposed constraints on dropping deprecated methods) >>> > >>> > If we follow the above, then we can not deprecate current API before >>> > introducing new API (because the replacement would not exist >>> > concurrently). Also we can not drop the current API in 2.0.0 if its >>> not >>> > deprecated. >>> >> >> It is totally a reasonable statement for after 2.0.0. But for 2.0.0 I am >> not okay making this guarantee because I would rather sacrifice backward >> compatibility for an API that isn't plagued by shortcomings of the old API >> > > Again, this is the fear/concern of impacting the new API due to supporting > of the old which *may or may not even happen*. > Good point, we could adopt these rules now and never create a new API. I think we would be better off adopting this now regardless of wether not we introduce a new API in the future. Also, if we do eventually create an API. How is it user unfriendly to have the old API around in deprecated form? The deprecation markings clearly communicate that someone writing new code should not use the old API. However it still allows existing code that users invested time into writing to run w/o issue against 2.0.0. --001a113a357ac602b8050966c7d6--