Grant Ingersoll wrote:
Yes, I agree these are what is about (despite the divergence into
locking).
As I see, it the question is about whether we should try to do
major releases on the order of a year, rather than the current 2+
year schedule and also how to best handle bad behavior when
producing tokens that previous applications rely on.
On the first case, we said we would try to do minor releases more
frequently (on the order of once a quarter) in the past, but this,
so far hasn't happened. However, it has only been one release,
and it did have a lot of big changes that warranted longer
testing. I do agree with Michael M. that we have done a good job
of keeping back compatibility. I still don't know if trying to
clean out deprecations once a year puts some onerous task on people
when it comes to upgrading as opposed to doing every two years. Do
people really have code that they never compile or work on in over
a year? If they do, do they care about upgrading? It clearly
means they are happy w/ Lucene and don't need any bug fixes. I can
understand this being a bigger issue if it were on the order of
every 6 months or less, but that isn't what I am proposing. I
guess my suggestion would be that we try to get back onto the once
a quarter release goal, which will more than likely lead to a major
release in the 1-1.5 year time frame. That being said, I am fine
with maintaining the status quo concerning back. compatibility as I
think those arguments are compelling. On the interface thing, I
wish there was a @introducing annotation that could announce the
presence of a new method and would give a warning up until the
version specified is met, at which point it would break the
compile, but I realize the semantics of that are pretty weird, so...
I do think we should try for minor releases more frequently,
independent of the backwards compatibility question (how often to do
major releases) :)
I think major releases should be done only when a major feature truly
"forces" us to (which Java 1.5 has) and not because we want to clean
out the accumulated cruft we are carrying forward to preserve
backwards compatibility.
As for the other issue concerning things like token issues, I think
it is reasonable to fix the bug and just let people know it will
change indexing, but try to allow for the old way if it is not to
onerous. Chances are most people aren't even aware of it, and thus
telling them about may actually cause them to consider it. For
things like maxFieldLength, etc. then back compat. is a reasonable
thing to preserve.
So, in hindsight, the acronym/host setting for StandardAnalyzer
really should have defaulted to "true", meaning the bug is fixed, but
users who somehow depend on the bug (which should be a tiny minority)
have an avenue (setReplaceInvalidAcronym) to keep back compatibility
if needed even on a minor release, right? I agree. (And so in 2.4
we should fix the default to true?).
I think for such issues where it's a very minor break in backwards
compatibility, we should make the break, and very carefully document
this in the "Changes in runtime behavior" section, even within a
minor release. I don't think such changes should drive us to a major
release.
Mike
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]