lucene-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From DM Smith <>
Subject Re: Lucene's default settings & back compatibility
Date Fri, 22 May 2009 18:49:57 GMT
Michael McCandless wrote:
> On Fri, May 22, 2009 at 2:27 PM, DM Smith <> wrote:
>> Marvin Humphrey wrote:
>>>> I feel the opposite: I'd like new users to see improvements by
>>>> default, and users that require strict back-compate to ask for that.
>>> By "strict back-compat", do you mean "people who would like their search
>>> app to
>>> not fail silently"? ;)  A "new user" who follows your advice...
>>>   // haha stupid noob   StandardAnalyzer analyzer = new
>>> StandardAnalyzer(Versons.LATEST);
>>> ... is going to get screwed when the default tokenization behavior
>>> changes.
>>> And it would be much worse if we follow my preference for making the arg
>>> optional without following my preference for keeping defaults intact:
>>>   // haha eat it luser   StandardAnalyzer analyzer = new
>>> StandardAnalyzer();
>>> It's either make the arg mandatory when changing default behavior and
>>> recommend that new users pass a fixed argument, or make it optional but
>>> keep
>>> defaults intact between major releases.
>> I think I see your point: A new user is such only for the first release that
>> they use Lucene. For a first use, there is no backward compatibility
>> problem. On the use of a subsequent release, their code still gets the
>> latest and greatest and now by the choice they were guided to make, they may
>> have broken backward compatibility.
>> So for any user, the only save, thus acceptable use is to never have
>> Versions.LATEST, but only a specific version.
> Right, we would have to not provide Versions.LATEST, ie if you want
> latest, you'd pick Versions.LUCENE_29 (in 2.9).

Why go to all this trouble for a new user?

Let's pretend that there are 1,000 new users every release. After 12 
releases, there are still only 1000 new users but now 11000 old users.

How does it help an old user?

Those 11000 old users now have to update their code to 
Versions.Lucene_301 (or whatever the latest is) to get the latest 
changes, but they are also going to have to understand what that means 
and figure out what parts of their application now behave in a broken 
manner. Where are they to go to find out that info? CHANGES.txt?

When I was a new user, I had to look at example code, read faqs, wiki, 
javadoc, java-users .... It was a learning curve, fortunately not steep.

Don't those resources need to be maintained so as to match the 
best/recommended practices? Can't that be the place where new users are 

-- DM

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

View raw message