Thanks, updated the justification: The vote we are going to have is reduced to two choices so far: * Never deprecate the old APIs unless the new APIs are stable and released without @IgniteExperimental. The old APIs javadoc may be updated with a reference to new APIs to encourage users to evaluate new APIs. The deprecation and new API release may happen simultaneously if the new API is not marked with @IgniteExperimental or the annotation is removed in the same release. * Allow to deprecate the old APIs even when new APIs are marked with @IgniteExperimental to explicitly notify users that old APIs will be removed in the next major release AND new APIs are available
As for the @IgniteExperimental precise meaning - I do not agree that the experimental essence is related to the API only. As you suggested in the separate email, we are going to mark MVCC as experimental because it is in beta meaning that there are currently known scenarios when the new feature breaks or simply is not implemented. Yet the API for MVCC cache is quite stable and adds nothing more than a separate cache mode. Not sure if this changes the vote, though.