Skip to content

Question: Minor vs Patch Increment? #1917

Closed
@benjchristensen

Description

@benjchristensen

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:

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.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions