gluster-kubernetes Release and Maintenance Policies
August 24, 2017 ยท View on GitHub
This document outlines the release and maintenance policies of the gluster-kubernetes project.
Maintained Branches
The project will only support and actively maintain two branches, master and
the latest release branch. The latest release branch will always be reachable
by two HEADs, <VERSION>-latest and stable. Requests for support of older
branches may be considered on a case-by-case basis, but users will be
encouraged to use newer versions where possible.
Version Numbering
This project follows the versioning guidelines outlined by the Semantic
Versioning specification, version 2.0.0.
In short, versions numbers will follow the structure <MAJOR>.<MINOR>.<PATCH>,
with the following definitions:
- MAJOR version indicates a fundamental change to the structure of the project, often due to innovations from significant changes in the component projects. Major versions will typically not be compatible with older versions of the component projects.
- MINOR version indicates a major feature, a broad set of changes, and/or new
releases of the component projects. Minor versions retain the following
compatibility guarantees:
- Component projects from the last MAJOR release will still work with the current code.
- Deployments made with the current code will not conflict with other deployments made since the last MAJOR release.
- PATCH version indicates backwards-compatible bug fixes, and guarantees that the versions of the component projects has not changed.
Branch Definitions and Structure
The master branch will always contain the latest development code. The
project guarantees that this branch will be functional and tested but not
bug-free. It will always track the latest versions of all component projects
and makes no guarantee of backwards compatibility to older versions of those
projects or itself.
The stable branch will track the latest stable release of the code. When a
new release is made, the stable branch will be moved to follow the new
release branch.
Each MAJOR and MINOR release will get its own branch, forked from master.
Each release branch name will be of the form <VERSION>-latest, e.g.
1.0-latest. PATCH releases to those versions will be made in those branches,
and will be marked by tags of the form v<VERSION>, e.g. v1.0.0. PATCH
releases may contain more than one commit, depending on the whimsy of the
release engineers. :)
Commits to a release branch will be of the following types, ranked in order of preference:
- Direct cherry-picks from
master(git cherry-pick -sx) - Cherry-picks from
mastermodified to resolve conflicts (changecherry picked from committobased on commit) - Custom patches
An example git history is presented below.
* I (master)
|
* H * H' (1.1-latest, stable) tag: v1.1.0
| |
| * G
| |
| /
| /
| /
|/
* F * F' (1.0-latest) tag: v.1.0.3
| |
* E * E' tag: v1.0.2
| |
| * D
| |
* C * C' tag: v1.0.1
| |
| * B tag: v1.0.0
| /
| /
| /
|/
* A