Let's start off with basics by discussing what our contracts are WRT API's, and releases with our users. We can throw out the past focusing on the future to save time since 2.0 will effectively be a new era.
This 2.0 release I'm gathering is the first stable, serious, enterprise ready major release of ApacheDS. 1.0 was kind of a toy considering all it's faults and shortcomings so the two situations are not completely the same.
We have to select a release scheme. Based on the scheme we select, we have to adhere to the rules of that scheme. This is like picking what our contract with users of the server will be for release compatibility.
So when considering compatibility we have to consider several things besides just APIs and SPIs:
o Database Format
o Replication Mechanism
o API Compatibility
o Plugins - We have pseudo plugins like Partitions, Interceptors and Handlers that users can alter which involve SPIs.
So based the scheme we select we have to define policies for these interfaces. I am calling anything that is exposed to the users as interfaces like DB format for example. We have the following choices for schemes:
1. Milestone Scheme (Eclipse)
2. Traditional major.minor.micro Scheme
3. maj.min.mic with Odd Numbered Versions for Development Releases (Old Linux Kernel)
4. Modern Linux Versioning Scheme
Se let's start off talking about which scheme we like best and why along with pros and cons taking into account realistically how we work.