Return-Path: Delivered-To: apmail-lucene-java-user-archive@www.apache.org Received: (qmail 5168 invoked from network); 16 Oct 2009 06:58:23 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3) by minotaur.apache.org with SMTP; 16 Oct 2009 06:58:23 -0000 Received: (qmail 25695 invoked by uid 500); 16 Oct 2009 06:58:20 -0000 Delivered-To: apmail-lucene-java-user-archive@lucene.apache.org Received: (qmail 25626 invoked by uid 500); 16 Oct 2009 06:58:20 -0000 Mailing-List: contact java-user-help@lucene.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: java-user@lucene.apache.org Delivered-To: mailing list java-user@lucene.apache.org Received: (qmail 25616 invoked by uid 99); 16 Oct 2009 06:58:20 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 16 Oct 2009 06:58:20 +0000 X-ASF-Spam-Status: No, hits=2.2 required=10.0 tests=HTML_MESSAGE,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (nike.apache.org: domain of buschmic@gmail.com designates 209.85.221.188 as permitted sender) Received: from [209.85.221.188] (HELO mail-qy0-f188.google.com) (209.85.221.188) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 16 Oct 2009 06:58:10 +0000 Received: by qyk26 with SMTP id 26so1258027qyk.5 for ; Thu, 15 Oct 2009 23:57:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:message-id:date:from :user-agent:mime-version:to:subject:content-type; bh=uh1ewn0aC7EDTRyoFrZKQ8zcjy2q/pAuMaXTC2FG7zo=; b=UM4gi959B7nHJIQltzPum4K8hIUnlFymzZyQYGG4cy3tXqblj6tnT6SWBbHBCHCyYo CynsIF0f0m7qKojucPO1dx0CY8P2aWbXPWrVhZJuGvmENuJqhlBNOWHvBD7jBQVFriU5 M1aU7pTd7/hyyxi0jXKBgsNkYnHAN4nnd6UEw= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:user-agent:mime-version:to:subject :content-type; b=BfDoaJGF/KAF3dZKLpHholnj0wE4oQ8LeqhSoSARAAO8br5DdpqU/n32e5TKEmtY1S wgyXM/Klu+2NRDFAEJiC+NnYuuDsip7xfdKcjKmfU+Hu2/P+Kmygc1EmfjLuaIDmirx6 w+zrU8dhR/qKRg50exDisaP7Lrm19Ew+fSE3c= Received: by 10.224.96.202 with SMTP id i10mr786236qan.311.1255676269716; Thu, 15 Oct 2009 23:57:49 -0700 (PDT) Received: from michael-buschs-macbook-pro-2.local (c-98-248-34-169.hsd1.ca.comcast.net [98.248.34.169]) by mx.google.com with ESMTPS id 7sm2000634qwb.42.2009.10.15.23.57.48 (version=TLSv1/SSLv3 cipher=RC4-MD5); Thu, 15 Oct 2009 23:57:48 -0700 (PDT) Message-ID: <4AD81961.7090108@gmail.com> Date: Thu, 15 Oct 2009 23:57:37 -0700 From: Michael Busch User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.1.4pre) Gecko/20090915 Thunderbird/3.0b4 MIME-Version: 1.0 To: java-user@lucene.apache.org Subject: Proposal for changing Lucene's backwards-compatibility policy Content-Type: multipart/alternative; boundary="------------070703010702020309020301" X-Virus-Checked: Checked by ClamAV on apache.org --------------070703010702020309020301 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Hello Lucene users: In the past we have discussed our backwards-compatibility policy frequently on the Lucene developer mailinglist and we are thinking about making some significant changes. In this mail I'd like to outline the proposed changes to get some feedback from the user community. Our current backwards-compatibility policy regarding API changes states that we can only make changes that break backwards-compatibility in major releases (3.0, 4.0, etc.); the next major release is the upcoming 3.0. Given how often we made major releases in the past in Lucene this means that deprecated APIs need to stay in Lucene for a very long time. E.g. if we deprecate an API in 3.1 we'll have to wait until 4.0 before we can remove it. This means that the code gets very cluttered and adding new features gets somewhat more difficult, as attention has to be paid to properly support the old *and* new APIs for a quite long time. The current policy also leads to delaying a last minor release before a major release (e.g. 2.9), because the developers consider it as the last chance for a long time to introduce new APIs and deprecate old ones. The proposal now is to change this policy in a way, so that an API can only be removed if it was deprecated in at least one release, which can be a major *or* minor release. E.g. if we deprecate an API and release it with 3.1, we can remove it with the 3.2 release. The obvious downside of this proposal is that a simple jar drop-in replacement will not be possible anymore with almost every Lucene release (excluding bugfix releases, e.g. 2.9.0->2.9.1). However, you can be sure that if you're using a non-deprecated API it will be in the next release. Note that of course these proposed changes do not affect backwards-compatibility with old index formats. I.e. it will still be possible to read all 3.X indexes with any Lucene 4.X version. Our main goal is to find the right balance between backwards-compatibility support for all the Lucene users out there and fast and productive development of new features. The developers haven't come to an agreement on this proposal yet. Potentionally giving up the drop-in replacement promise that Lucene could make in the past is the main reason for the struggle the developers are in and why we'd like to ask the user community for feedback to help us make a decision. After we gathered some feedback here we will call a vote on the development mailinglist where the committers have to officially decide whether to make these changes or not. So please tell us which you prefer as a back compatibility policy for Lucene: A) best effort drop-in back compatibility for minor version numbers (e.g. v3.5 will be compatible with v3.2) B) best effort drop-in back compatibility for the next minor version number only, and deprecations may be removed after one minor release (e.g. v3.3 will be compat with v3.2, but not v3.4) Note that in any case the changes will take affect *after* the 3.0 release. On behalf of the Lucene developers, Michael Busch --------------070703010702020309020301--