Peter Firmstone wrote:
Niclas Hedhman wrote:
Peter,
I don't want to sound patronizing or "besser-wisser", but I disagree with
your ambitions.

Major releases are an opportunity, where "clean up" should occur but happen
as seldom as possible. Constraining such opportunity causes long-term
maintenance head-aches for the community which might drain it of the little
energy that exists, IMHO pretty much the current state of River.

Now, if you formalizes your list of what is possible, I think we can devise strategy on how to make such changes without breaking source compatibility as well.
Chapter 13 of the Java Language specification third ed is a good place to start. Attempting the above suggestion places additional constraints on the changes possible, this would in fact make life more difficult for the programmer to implement a new feature while preserving backward compatibility. However if & when we determine that we must break backward compatibility, we can at that point in time, check to see if Binary compatibility is at least salvageable. I would like to reserve the opportunity to determine if binary compatibility can be salvaged after it has been determined that source code compile time compatibility must be broken in order to achieve an outcome. This constraint wouldn't apply until it has been deemed necessary to break compile time compatibility.

Process:
1. It is deemed that compile time backward compatibility must be broken to implement feature X.
2. Committers vote on adding of the feature.
3. If the vote outcome is in favour, then check if Binary Compatibility can be preserved in the implementation.
4. If not then Binary compatibility is also broken.

Of course if preserving Binary Compatibility created a sub optimal design, then as you suggest also dropping binary compatibility may also be advantageous going forward.

Reply via email to