Browse code

Documenting Docker release process

Signed-off-by: Arnaud Porterie <arnaud.porterie@docker.com>

Arnaud Porterie authored on 2015/08/05 09:25:30
Showing 1 changed files
1 1
new file mode 100644
... ...
@@ -0,0 +1,78 @@
0
+# Docker Release Process
1
+
2
+This document describes how the Docker project is released. The Docker project
3
+release process targets the Engine, Compose, Kitematic, Machine, Swarm,
4
+Distribution, Notary and their underlying dependencies (libnetwork, libkv,
5
+etc...).
6
+
7
+Step-by-step technical details of the process are described in 
8
+[RELEASE-CHECKLIST.md](https://github.com/docker/docker/blob/master/project/RELEASE-CHECKLIST.md).
9
+
10
+## Release cycle
11
+
12
+The Docker project follows a **time-based release cycle** and ships every nine
13
+weeks. A release cycle starts the same day the previous release cycle ends.
14
+
15
+The first six weeks of the cycle are dedicated to development and review. During
16
+this phase, new features and bugfixes submitted to any of the projects are
17
+**eligible** to be shipped as part of the next release. No changeset submitted
18
+during this period is however guaranteed to be merged for the current release
19
+cycle.
20
+
21
+## The freeze period
22
+
23
+Six weeks after the beginning of the cycle, the codebase is officially frozen
24
+and the codebase reaches a state close to the final release. A Release Candidate
25
+(RC) gets created at the same time. The freeze period is used to find bugs and
26
+get feedback on the state of the RC before the release.
27
+
28
+During this freeze period, while the `master` branch will continue its normal
29
+development cycle, no new features are accepted into the RC. As bugs are fixed
30
+in `master` the release owner will selectively 'cherry-pick' critical ones to
31
+be included into the RC. As the RC changes, new ones are made available for the
32
+community to test and review.
33
+
34
+This period lasts for three weeks.
35
+
36
+## How to maximize chances of being merged before the freeze date?
37
+
38
+First of all, there is never a guarantee that a specific changeset is going to
39
+be merged. However there are different actions to follow to maximize the chances
40
+for a changeset to be merged:
41
+
42
+- The team gives priority to review the PRs aligned with the Roadmap (usually
43
+defined by a ROADMAP.md file at the root of the repository).
44
+- The earlier a PR is opened, the more time the maintainers have to review. For
45
+example, if a PR is opened the day before the freeze date, it’s very unlikely
46
+that it will be merged for the release.
47
+- Constant communication with the maintainers (mailing-list, IRC, Github issues,
48
+etc.) allows to get early feedback on the design before getting into the
49
+implementation, which usually reduces the time needed to discuss a changeset.
50
+- If the code is commented, fully tested and by extension follows every single
51
+rules defined by the [CONTRIBUTING guide](
52
+https://github.com/docker/docker/blob/master/CONTRIBUTING.md), this will help
53
+the maintainers by speeding up the review.
54
+
55
+## The release
56
+
57
+At the end of the freeze (nine weeks after the start of the cycle), all the
58
+projects are released together.
59
+
60
+```
61
+                                        Codebase              Release
62
+Start of                                is frozen             (end of the
63
+the Cycle                               (7th week)            9th week)
64
++---------------------------------------+---------------------+
65
+|                                       |                     |
66
+|           Development phase           |    Freeze phase     |
67
+|                                       |                     |
68
++---------------------------------------+---------------------+
69
+                   6 weeks                      3 weeks
70
+<---------------------------------------><-------------------->
71
+```
72
+
73
+## Exceptions
74
+
75
+If a critical issue is found at the end of the freeze period and more time is
76
+needed to address it, the release will be pushed back. When a release gets
77
+pushed back, the next release cycle gets delayed as well.