This document describes how Apache Cordova versions and manages its packages.
Given a version number MAJOR.MINOR.PATCH, increment the:
- MAJOR version when you make incompatible API changes,
- MINOR version when you add functionality in a backwards-compatible manner, and
- PATCH version when you make backwards-compatible bug fixes.
-dev
suffix is added to versions in repos to indicate unreleased code (as platforms and plugins can be installed from a repository's master
branch via Cordova CLI). This suffix is only removed during the release process and added back with the version bump.The version of a package is “bumped” (increased):
#.#.x
)#.x.#
)x.#.#
)If a release branches is required, the version bump may happen on the release branch instead of master
.
Apache Cordova uses a variant of Trunk Based Development:
master
.Cordova uses release branches for releases only if necessary: If a new patch or minor release from master
is not possible as it already includes other changes that should or can not be part of the planned release, we create a release branch (e.g. 1.0.x
for an upcoming 1.0.1
patch release, or 2.1.x
for an upcoming 2.1.0
minor release). New changes added in those release branches should be merged back to master
if applicable (release notes or bug fixes: yes, version number changes: no).
During the release preparation the commit messages of changes that happened are curated into a release notes file.
Tags are used to to indicate versions (e.g. 1.1.0
). Tagging happens after all the work for a release has been done.
As Cordova is an Apache Software Foundation project, we have some additional special steps during our releases:
vote/1.1.0
to indicate that this is not a release tag that still has to be voted on.1.1.0
) and the archive is moved to another, permanent location on the Apache SVN server.After a successful vote the tag is also be published to npm for developers to use with Cordova CLI.
The actual release process a committer might follow is documented in release-process.md. This also describes the software Apache Cordova uses to enable and simplify the release process.