3liz / lizmap-rfc

Lizmap Request For Comment
2 stars 0 forks source link

Versioning for releases & LTR #7

Open laurentj opened 4 years ago

laurentj commented 4 years ago

Lizmap RFC: Versioning for releases & LTR

Date 2019/11/11

Author Laurent Jouanneau (@laurentj )

maintainer @laurentj

Version All

Summary

We need to specify what is a release, what is an LTR, and we need to specify how to construct version name, in order to name correctly versions, and to produce zip packages and docker image correctly. Specifications should be clear and simple, so users can decide easily which version they can install, and they can know when they must upgrade.

Version number

The version number must follow the semver specification. In summary:

Given a version number MAJOR.MINOR.PATCH, increment the:

Additional labels for pre-release ( -alpha, -beta, -rc etc.) and build metadata (+20191111 etc) are available as extensions to the MAJOR.MINOR.PATCH format.

Releases

A release is a stable version of Lizmap. It have a version number without a pre-release part.

Each minor version has its own branch into the repository, named RELEASE_<MAJOR>_<MINOR>, in which the version is maintained, and from which patch version are released.

Except if it is a Long Term Release (see below), a minor version MAJOR.MINOR is maintained until there are two minor versions released after it. Ex: the maintenance of 3.3 will be stopped after the release of 3.4 and 3.5.

LTR

A Long Term Release, is a branch of Lizmap that is maintained for two years.

A LTR can be the latest minor version of a major release, or a version that support specific features, for example a LTR version of Qgis (like Lizmap 3.2). So there could be several LTR that are supported at the same time.

There is no specific syntax version for LTR. The version is just MAJOR.MINOR.PATCH. In texts, it can be followed by the LTR word. ex: 3.2 LTR.

Aliases

For docker or downloaded sites, we may need some aliases, so a user can always retrieve a type of release.

Version for developments

By definition, a version in development has no version. And as Semver defines the precedence by alphanumeric order, in the pre-release part of the version, we cannot use suffix like -pre, -dev...

The version indicated into Lizmap should always be the next version in development.

For builds and packages of a development version, names of packages/builds may contain the next version number, followed by a -dev suffix.

Version storage

The version must be indicated into a file of the source code, typically into lizmap/project.xml.

The LTR status should be also indicated somewhere in the source code, typically into lizmap/project.xml.

Example of a normal version:

  <version date="2019-11-12">1.2.3</version>

Example of a LTR version, here indicated into a ltr attribute with the end date of the support of the branch:

  <version date="2019-11-12" ltr="2021-09-01">1.2.3</version>

Votes

(required)

pcav commented 4 years ago

Sounds good to me, thanks.