Skip to content

Commit 260125d

Browse files
committed
new release cycle
1 parent f2e5103 commit 260125d

File tree

1 file changed

+134
-0
lines changed

1 file changed

+134
-0
lines changed

text/052-platform-release-cycle.md

+134
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,134 @@
1+
- Title: Coq and Coq platform release cycle
2+
3+
- Drivers: Enrico
4+
5+
----
6+
7+
# Summary
8+
9+
We aim at a release process for Coq and the Coq platform which makes it
10+
easier for users to provide feedback and for developers to deliver fixes.
11+
12+
In a nutshell the Coq "beta period" is replaced by a Coq platform "beta period".
13+
Coq devs tag an almost final version on top of which the Coq platform core is
14+
built. Coq point release are then used as a *quick* means to deliver fixes
15+
to the platform.
16+
17+
# Motivation
18+
19+
The beta testing period does not provide enough feedback to sensibly improve
20+
Coq between the `VX+beta1` and `VX.0` tags. The reasons are, most important
21+
last:
22+
- users have better things to do, frankly
23+
- one month is short, especially with Christmas/summer holydays or conferences around
24+
- in order to test Coq you are likely to need a bunch of Coq packages, and they
25+
are typically only available after the beta period is over
26+
27+
Moreover the "beta period" is also seen by devs as a time frame where they can
28+
still change many things. As a results users are even less happy to spend time
29+
working on a moving target.
30+
31+
Finally, due to the cost of backporting breaking changes from the master
32+
branch to the release branch, this only
33+
happened very early in the release cycle (for example only 2 such changes were backported in the beta period for 8.12, 0 for 8.13).
34+
35+
## New actor: platform
36+
37+
The Coq platform is a selection of Coq packages which work well
38+
for a given Coq version. One of its objective is to disentangle the release
39+
of Coq with the release of other packages. It provides scripts that build
40+
that selection of Coq packages on Windows, Mac and Linux from sources
41+
on the user's machine, and as well binary installers (prebuilt) for users
42+
to quickly get a working environment.
43+
44+
This product is what users will test in this new model; Coq is a core
45+
component of it.
46+
47+
# Detailed design
48+
49+
The new process' timeline:
50+
```
51+
D D D D D
52+
coq --+---(1)---+------(2)----+-----(3)----+---+--+----
53+
vX branch/ | | |
54+
X+rc tag/ | |
55+
X.0 tag/ |
56+
X.1 tag/
57+
58+
I I
59+
platform -----------+----(4)------+--------(5)---------+
60+
vX branch/ | |
61+
X+beta tag/ |
62+
X.0 tag/
63+
Artifacts:
64+
- D = docker image for Coq (and opam package)
65+
- I = binary installers for Coq platform (and opam packages and docker image)
66+
```
67+
68+
## Coq
69+
70+
On time based schedule the RM branches vX.
71+
72+
1. The RM shepherds the few PR which are ready and pins projects tracked by CI (using commit hashes, not necessarily tags). Then he tags Coq. This should take 10 days. No packages are built, just a git tag. A docker image is built, so that project maintainers can use it in CI. No breaking change is allowed from now on (unless a severe problem is found).
73+
2. Doc is updated (eg. Changes file) and eventual fixes required by the platform
74+
are done. Ideally no other change is done. This should take 10 days.
75+
3. In response to a severe bug report Coq devs make an hotfix in master which is backported to vX by the RM which then tags a point release, possibly as soon as the fix is available and merged.
76+
77+
## Platform
78+
79+
When Coq X+rc is tagged, the PRM branches vX
80+
81+
4. Starting with the pins made by RM on Coq's CI all packages part of the platform (or its core) are pinned (in accordance with upstreams, which are notified about the ongoing process). Most, if not all, packages are in Coq's CI so there should be no surprises, otherwise issues are reported to Coq devs. When done a X+rc tag is done and packages made available to users. A docker image with the entire platform prebuilt should be built. This should take 20 days.
82+
5. As users pick up the platform and find severe bugs in Coq, the platform picks up point releases of Coq containing hotfixes and eventually extends packages beyond the core set.
83+
84+
## Synchronization points
85+
86+
- The end of (1) starts the release cycle of the platform.
87+
- The end of (2) and (4) don't need to be done at the same time, but if they
88+
are then the new release cycle coincides with the old one (up to the
89+
renaming of X.0 into X+beta).
90+
- Coq's X.0 tag can be made as soon as the doc is clear. This will stress the fact that upstreams can pin with no worries.
91+
92+
## Announces
93+
94+
- Coq tags are only announced to devs
95+
- Coq platform pins are communicated to upstream devs, which may tag/release.
96+
- Coq platform tags and packages are announced to the community
97+
98+
## Coq CI
99+
100+
- must test standard configurations
101+
- must test all platform projects with ML parts
102+
- must test a selection of platform scripts (to test the script themselves, not the build of platform packages)
103+
- should test platform projects with V files which are depended upon in the platform
104+
- can test anything else of course, including non standard configurations
105+
106+
## Platform CI
107+
108+
- on branch vX it should test all packages and build installers as artifacts
109+
- on branch master it should take Coq master and its pins for the subset of packages it covers and test all the packages, eventually report the failures upstream
110+
111+
### Terminology
112+
- "severe bug" is a bug which *blocks* many users with no decent workaround,
113+
or a soundness bug.
114+
- "hotfix" is a minimal patch that repairs a problem, not necessarily the nice
115+
solution which may require refactoring or cleanups. The patch should pass CI
116+
with no overlay and must be reviewable (in a strict sense, as in looking for bugs, not just as in "looks reasonable")
117+
- "RM" is the release manager of Coq
118+
- "PRM" are the release managers of the Coq platform
119+
- "standard configuration" is a version of ocaml and other tools which are agreed between Coq devs and the platform devs (dune, make, gmp, gtk...)
120+
121+
# Drawbacks
122+
123+
This new process identifies 3 groups of developers which need to talk to each others: Coq dev, platform devs, and docker devs. This is a risk, but also an
124+
advantage since the Coq release becomes more lightweight, leaving the RM
125+
more time to focus on supporting the release with hotfixes.
126+
127+
# Alternatives
128+
129+
We consider docker as *the* platform upstream projects use for testing.
130+
This may be a bit narrow, even if the docker stuff on coq-community is
131+
pretty good IMO.
132+
133+
# Unresolved questions
134+

0 commit comments

Comments
 (0)