Skip to content

Semantic Versioning

Tim van der Lippe edited this page Oct 23, 2020 · 3 revisions

Semantic Versioning in Mockito

Currently, all improvements to Mockito 2.x are completely backwards compatible, semantic versioning is rigorously maintained. Hence, every change automatically publishes new version (see Continuous Delivery Overview). New major version change such as Mockito 3 will trigger new beta and later on, release candidate cycle (we will not publish beta versions to central).

The versions follow this scheme:

major.minor.patch-tag.tagVersion
number meaning
major major version, backwards incompatible with the previous major version
minor minor version, backwards compatible with added features
patch patch version, small bug fixes or stylistic improvements
tag optional beta or RC (release candidate). See below.

That means:

  • 2.0.0 and 2.0.0-beta.5 are binary incompatible with 1.10.19.
  • 2.0.0-beta.5 is the fifth release beta of version 2.0.0.
  • 2.0.0-beta.5 could be (but is not necessarily) binary incompatible with version 2.0.0.
  • 2.0.0-RC.1 is binary compatible with release 2.0.0.

Note : During the 2.0 beta phase we unleashed beta builds with the following version schemes, like : 2.0.111-beta, where the build number is placed before the tag. The current scheme reuses the build number and places it behind the tag. Hence those versions are to be considered as beta builds that happen either before or after a release candidate, but always before the final release.

2.0.111-beta < 2.0.0-beta.112 < 2.0.0-RC.1 < 2.0.0-beta.200 < 2.0.0

Tags

There are two different tags: beta or RC. Beta indicates that the version is directly generated from the release/Y.x branch of the git repository. Beta releases are automatically published whenever we merge a pull request or push a change to the release/Y.x branch.

When we deem our release/Y.x status worthy of a release, we publish a release candidate. The release candidate is scheduled to be officially published in the official release a while later. There will be no breaking changes between a release candidate and its equivalent official release. The only changes will include bug fixes or small updates. No additional features will be included.