-
Notifications
You must be signed in to change notification settings - Fork 34
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[RFC] release cycle #52
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks @gares for the writeup, I think this evolution is on the right path and in line with many of the thoughts that have been discussed over the years.
Indeed the beta should be pretty conservative IMO as you propose, I think this was not so possible before due to actually many regressions happening, but our large (even if expensive) CI has helped a lot to actually produce something that almost works out of the box in most cases.
I'll add some other thoughts inline.
There are a few points that are not clear to me:
|
@silene : A release of a package is mostly there to add features to this package, not to ensure compatibility to core Coq. This made the picking in the past very difficult, because one needed something which does build with latest Coq but does not contain unfinished features of the package. I would say finding a reasonable compromise here was at least 90% of the picking effort in the past - frequently involving putting together cherry picked patches. Since the "rounded up feature set" aspect can now be moved to the Coq platform, I would expect that from now on the picking effort for Coq's CI is much less. For Coq's own CI it doesn't matter if the version tested in CI is something with a reasonably closed feature set one would like to release to the users. All what matters is that whatever is there builds with current Coq. So I think it would be OK to simply pick something which compiles. Regarding versioning: my plan is that a Coq platform version has always one digit/component more than the Coq release. E.g. there is something like 8.13.0+beta and 8.13.0.0 and likely also a 8.13.0.1. And there might even be something like 8.13+beta.0 or 8.13+beta+beta. Increasing releases of the Coq platform with constant Coq version are e.g. useful to add new packages. |
If I understand you correctly, pinning CI on the Coq branch should not be made using tags (contrarily to what was done on the current release branch) but using random commits. If so, this should certainly be made clearer in the CEP. |
I will, and mention the (new I guess) script that does this automatically. |
I don't have a clear idea here, nor strong opinions, but I'm not in love with the idea that the platform version mentions the minor version of Coq, especially if we produce many hotfixes. Maybe it's a dream, but it would be nicer if Coq users could say "Coq 8.13 platform 7" to mean the platform version 7 for Coq 8.13 which includes some Coq 8.13.x which the platform devs see fit. After all the plan in this CEP is to hide "bare bone Coq" from users and expose only the platform. |
A common naming scheme with platforms is to use a YYYY-MM data format, so you have Coq Platform 2020-12 , etc... |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM though I haven't yet read comments from other people.
Yes, this is the idea as soon as the Windows installer in Coq CI is stripped down to building just Coq and CoqIDE (and maybe Ltac2 and Equations). Up to now using tags was required cause of the Windows installer. But the past experience showed that this approach is hard to maintain and definitely not scalable. I would say in 8.13 the goal is to make a sort of hybrid approach to have a smooth transition, that is ensure that a Coq Platform with full Windows installer can be build shortly after the release. After that Coq's CI can concentrate on its original purpose. |
text/052-platform-release-cycle.md
Outdated
|
||
When Coq X+rc is tagged, the PRM branches vX | ||
|
||
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. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It might make sense to bind the packages to a release branch of the package during the beta phase, rather than to a commit. At the end of the beta phase, this branch is tagged then. Both approaches have their advantages and disadvantages. Using branches is likely more agile and less work for the platform maintainers since changes in the release branches of the packages are immediately visible. The downside is that platform CI does not run automatically on changes, so during the beta phase one would need at least one build a day to find breaking changes. Also with commits the platform maintainers would have more control. I think it depends on the discipline of the package maintainers what works better. My guess is that we will use branches where it works well and fall back to commits for specific projects where things go wild.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It might make sense to bind the packages to a release branch of the package during the beta phase, rather than to a commit.
Yes, but for most non-plugin projects there are no release branches (releases are created from master
). So my conclusion is the same as yours.
One thing that is really important IMHO is that this CEP says explicitly what policy it sets and what it leaves up to maintainers / to be decided later. E.g., I wouldn't like the CEP to propose a versioning scheme for the platform to see that it is immediately deviated from, unless the CEP explicitly says that the proposed scheme is just a non-binding example. So, either we explicitly agree on a scheme, details of the release steps, etc., or we explicitly leave some of these items unbound. My opinion is that it would make sense to have a discussion on the versioning scheme of both Coq and the platform as part of this CEP, but I wouldn't want this to become the whole discussion and to mask other aspects that would deserve to be discussed. |
I've already expressed this before and this also seems to be the opinion of Enrico from what I read in this CEP, but I think there should be no left-over code for the Windows installer in Coq's repository and in particular that we should stop producing any kind of installers as assets with Coq's own releases. Of course, keeping a CI job that tests the (external) Coq platform installer scripts makes complete sense. |
I agree. I mentioned the installer just to explain why we did need proper tags before in Coq CI for releases and why this changed now. If one wants to have a small platform build (just Coq and CoqIDE) in Coq CI or not remains to be seen, depending on how frequently it happens that something breaks here. My guess is that it won't be needed. Running a daily master build on Coq platform and manually creating an issue if this breaks should be sufficient. |
260125d
to
74a3dcc
Compare
Thanks @gares for opening the CEP and pinging me (and sorry for the delay, I've been swamped by teaching, and on-going grading…) Indeed, this would be similar to the choice that had been done when I had discussed the versioning strategy of Some extra questions:
|
I think you are right, but before saying that "we officially generate dockers" I wanted a docker expert (eg you) to agree on the plan and eventually help implementing something like the snap job for the platform (so that a PRM does not need to know the details of docker, just how to invoke a job which builds and deploys the image). |
I see what you mean. Let me clarify. We have 2 docker images in this CEP:
To me the core image roughly corresponds to the actual images but exists just for technical reasons. In the sense that I would not advertise it to the public in the large, and we may even put in there all we have in Coq's CI (all the plugins, pinned to a commit hash). So yes, also bignums would be there, but not a released version. The platform image should be the one used for CI in the wild (if you want to CI a project already in there you can start by Maybe there is still some need for the current images for both stable and dev Coq, and/or derived images (like the ones with mathcomp.dev). I start to think docker+CI+platform should be a separate CEP/discussion. Maybe I can just mention the possibility of making a docker images in this CEP, without making it mandatory. |
I believe I've integrated all remarks and improved the text a little here and there. I think this text should be validated one last time by @silene as the nex RM and by @MSoegtropIMC as the main platform dev. |
I am fine with it. Here are a few editorial suggestions. First, since you are counting days using multiple of 5 working days, just write "weeks" instead (e.g., 2 weeks instead of 10 days, 1 month instead of 20 days). Second, I would move all the negated sentences from stage 1 to stage 2; it seems more important to say that stage 2 delivers a binary release rather than stage 1 does not deliver a binary release. |
Thanks I did push some corrections. |
fb9ae0f
to
1ae7ecb
Compare
It seems that we have converged on the Note that I've updated the release checklist accordingly in coq/coq#13823. |
I'll try to update the CEP tomorrow, thanks everybody for contributing to the discussion |
I hope my changes are OK w.r.t. the version of the platform. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
These are only typos.
I propose to merge this CEP and the related coq/coq#13823 PR at the next Coq Call. |
Co-authored-by: Théo Zimmermann <[email protected]>
Thanks! and agreed. |
we can merge now |
Approved in the Coq Call 😉 |
I've renamed the two impacted milestones in the Coq repository. |
Reviewed-by: ejgallego Ack-by: gares
@gares, I've just noticed that given the underlying feature branch of this PR does not exist anymore, the URL |
Here a draft of what I presented at the Coq call, comments welcome.
Rendered here
CC @Zimmi48 @erikmd @MSoegtropIMC