lucene-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From DM Smith <>
Subject Re: [VOTE] Break Back Compatibility "Contract" on Fieldable
Date Wed, 30 Jul 2008 15:07:48 GMT
As a user, I have no problem with this, as I have a pulse:)

If I understand that it just breaks software backward compatibility and 
not compatibility with the index itself. Minor software changes are no 
big deal to me. I would still expect that a newer API would still read 
earlier indexes. Specifically that in the N series that N.x would be 
able to read N.(x-1) and N.x would be able to read (N-1).y.

There needs to be a mechanism to communicate that a break has happened. 
The current mechanism of @deprecated works well but requires several 
releases to do the communication. This is both good and bad.

Also, in the RPM world, dependencies are typically noted as >= x && < y 
(e.g. Lucene >= 2.0 && Lucene < 3.0). Also, a typical RPM will treat 
minor numbers as a reason for replacement (e.g. Lucene 2.4.0 replaces 
2.3.2) but that major numbers live independently (e.g. Lucene 2.3.2 and 
3.0 live side by side). Such a policy as being suggested here 
potentially makes managing a Lucene RPM more difficult. And it may 
invalidate existing ones. The same might be true with other Linux 
package manager files such as Debian's.

If the change is seen merely as an internal implementation detail that 
would affect very few, then this is probably a nit.

I'm not sure that the comment that "this gives anyone with a pulse 
enough time to react" is particularly accurate or helpful. It all 
depends upon effective communication (such as to Lucene user's mailing 
list and package maintainers).

-- DM Smith

Grant Ingersoll wrote:
> As they say, rules are meant to be broken...
> For a variety of reasons, some outlined below, I (and others) would 
> like us to break our back compatibility requirements and allow for 
> modifying the Fieldable interface in 2.x releases with the 3.x plan to 
> be to separate out write side interfaces from read side interfaces per 
> Hoss' suggestion in 
> Our reasons are based on LUCENE-1340, LUCENE-1219 and 
> Simply put, my gut says there are almost no implementations of 
> Fieldable "in the wild", and those that are won't mind a few lines of 
> code change here and there to accommodate Fieldable changing (since 
> Fields really are just simple data structures and don't due much 
> algorithmically, except maybe LazyField)
> Thus, here's the vote part:
> 1. We mark Fieldable as being subject to change.  We heavily advertise 
> (on java-dev and java-user and maybe general) that in the next minor 
> release of Lucene (2.4), Fieldable will be changing.  It is also 
> marked at the top of CHANGES.txt very clearly for all the world to 
> see.  Since 2.4 is probably at least a month away, I think this gives 
> anyone with a pulse enough time to react.
> 2. We thus allow 1340 and 1219 to go forward, and maybe some others.
> 3. [OPTIONAL] We commit to rethinking input Documents and output 
> Documents for 3.x per Hoss' design suggestions in the email thread 
> above.  At a minimum, it becomes an abstract base class.
> +1 to all 3 items from me.
> -Grant 

To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message