Skip to content
This repository was archived by the owner on Jul 7, 2020. It is now read-only.

Commit 23dba9d

Browse files
authored
Merge pull request #272 from jarrpa/release-doc
[PROPOSAL] Codify release criteria and branch structures.
2 parents ae3f004 + f74046c commit 23dba9d

File tree

2 files changed

+89
-0
lines changed

2 files changed

+89
-0
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ You can find slides and videos of community presentations [here](docs/presentati
2727
* [Setup Guide](./docs/setup-guide.md)
2828
* [Hello World with GlusterFS Dynamic Provisioning](./docs/examples/hello_world/README.md)
2929
* [Contact](#contact)
30+
* [Release and Maintenance Policies](./docs/release-maintenance.md)
3031

3132
### Quickstart
3233

docs/release-maintenance.md

Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
# gluster-kubernetes Release and Maintenance Policies
2+
3+
This document outlines the release and maintenance policies of the
4+
gluster-kubernetes project.
5+
6+
## Maintained Branches
7+
8+
The project will only support and actively maintain two branches, `master` and
9+
the latest release branch. The latest release branch will always be reachable
10+
by two HEADs, either `<VERSION>-stable` or just `stable`. Requests for support
11+
of older branches may be considered on a case-by-case basis, but users will be
12+
encouraged to use newer versions where possible.
13+
14+
## Version Numbering
15+
16+
This project follows the versioning guidelines outlined by the [Semantic
17+
Versioning specification, version 2.0.0](http://semver.org/spec/v2.0.0.html).
18+
In short, versions numbers will follow the structure `<MAJOR>.<MINOR>.<PATCH>`,
19+
with the following definitions:
20+
21+
* MAJOR version indicates a fundamental change to the structure of the
22+
project, often due to innovations from significant changes in the component
23+
projects. Major versions will typically not be compatible with older
24+
versions of the component projects.
25+
* MINOR version indicates a major feature, a broad set of changes, and/or new
26+
releases of the component projects. Minor versions retain the following
27+
compatibility guarantees:
28+
1. Component projects from the last MAJOR release will still work with the
29+
current code.
30+
2. Deployments made with the current code will not conflict with other
31+
deployments made since the last MAJOR release.
32+
* PATCH version indicates backwards-compatible bug fixes, and guarantees that
33+
the versions of the component projects has not changed.
34+
35+
## Branch Definitions and Structure
36+
37+
The `master` branch will always contain the latest development code. The
38+
project guarantees that this branch will be functional and tested but not
39+
bug-free. It will always track the latest versions of all component projects
40+
and makes no guarantee of backwards compatibility to older versions of those
41+
projects or itself.
42+
43+
The `stable` branch will track the latest stable release of the code. When a
44+
new release is made, the `stable` branch will be moved to follow the new
45+
release branch.
46+
47+
Each MAJOR and MINOR release will get its own branch, forked from `master`.
48+
Each release branch name will be of the form `<version>-latest`, e.g.
49+
`1.0-latest`. PATCH releases to those versions will be made in those branches,
50+
and will be marked by tags of the form `v<version>`, e.g. `v1.0.0`. PATCH
51+
releases may contain more than one commit, depending on the whimsy of the
52+
release engineers. :)
53+
54+
Commits to a release branch will be of the following types, ranked in order of
55+
preference:
56+
57+
1. Direct cherry-picks from `master` (`git cherry-pick -sx`)
58+
2. Cherry-picks from `master` modified to resolve conflicts (change `cherry
59+
picked from commit` to `based on commit`)
60+
3. Custom patches
61+
62+
An example git history is presented below.
63+
```
64+
* I (master)
65+
|
66+
* H * H' (1.1-latest, stable) tag: v1.1.0
67+
| |
68+
| * G
69+
| |
70+
| /
71+
| /
72+
| /
73+
|/
74+
* F * F' (1.0-latest) tag: v.1.0.3
75+
| |
76+
* E * E' tag: v1.0.2
77+
| |
78+
| * D
79+
| |
80+
* C * C' tag: v1.0.1
81+
| |
82+
| * B tag: v1.0.0
83+
| /
84+
| /
85+
| /
86+
|/
87+
* A
88+
```

0 commit comments

Comments
 (0)