Description
I'd like to get opinions on what justifies incrementing the minor version (1.0.x -> 1.1.x) as opposed to the patch version.
Technically the minor version should increment when new functionality is added. In RxJava though were it's about a long list of operators, that could mean we increment minor versions quite often. Also, should it increment when they are added as @Experimental
or @Beta
or only once they become stable?
Examples:
- Beta & Experimental Annotations #1905 Beta & Experimental Annotations
- Experimental: onBackpressureBlock #1907 Experimental: onBackpressureBlock
- Experimental onBackpressureBufferWithCapacity #1916 Experimental onBackpressureBufferWithCapacity
Currently we have the definition of minor and patch as this:
Minor 1.x increments (such as 1.1, 1.2, etc) will occur when non-trivial new functionality is added or significant enhancements or bug fixes occur that may have behavioral changes that may affect some edge cases (such as dependence on behavior resulting from a bug). An example of an enhancement that would classify as this is adding reactive pull backpressure support to an operator that previously did not support it. This should be backwards compatible but does behave differently.
Patch 1.x.y increments (such as 1.0.0 -> 1.0.1, 1.3.1 -> 1.3.2, etc) will occur for bug fixes and trivial functionality (like adding a method overload). New functionality marked with an @Beta
or @Experimental
annotation can also be added in patch releases to allow rapid exploration and iteration of unstable new functionality.
Should we allow additional operators and functionality on patch versions if we deem them trivial (a subjective decision) and only increment the minor version when we subjectively determine significant additions? This would mean we have low minor versions and high patch versions, such as 1.0.17, 1.1.20, etc.
Or should we liberally increment the minor version anytime something is added to the APIs? This would mean high minor versions and low patch versions, such as 1.15.1, 1.27.0, 1.45.3, etc.
I would appreciate guidance on what is expected or preferred.