microsoft/openvmm

Public

mirrored from https://github.com/microsoft/openvmmAvailable

CodeCommitsIssuesPull requestsActionsInsightsSecurity
9a4e9aa40a5fd024b2cafb6e4fbc2fab9f8b583b

Branches

Tags

  • No tags available.
0Branches0Tags
Go to file
Add file
Code

Clone

HTTPS

Download ZIP

Guide/src/dev_guide/contrib/release.md

77lines · modecode

1# Release Management
2
3Occasionally, the OpenVMM project will declare upcoming release milestones. We
4stabilize the code base in a `release/YYMM` branch, typically named for the
5YYMM when the branch was forked. We expect a high quality bar for all code that
6goes in to the OpenVMM main branch, we ask developers to hold these
7`release/YYMM` to the highest quality standards. The OpenVMM maintainers will
8gradually slow the rate of churn into these branches as we get closer to a
9close date.
10
11This process should not impact your typical workflow; all new work should go
12into the `main` branch. But, to ease the cherry-picks, we may ask that you hold
13off from making breaking or large refactoring changes at points in this
14process.
15
16## Marking, Approval Process, Code Flow
17
18The OpenVMM maintainers will publish various dates for the upcoming releases.
19Currently, these dates are driven by a Microsoft-internal process and can, and
20do, often change. Microsoft does not mean to convey any new product launches by
21choices of these dates.
22
23Releases naturally fall into several phases:
24
25| Phase | Meaning |
26|-------------------|-------------------------------------------------------------------------|
27| Active Development| Regular development phase where new features and fixes are added. |
28| Stabilization | Phase focused on stabilizing the release by fixing bugs. |
29| Ask Mode | Changes are scrutinized and only critical fixes are allowed. No new features are accepted. This is the last phase before a release is closed. |
30| Servicing | Only essential fixes are made to support the release. a.k.a. maintenance mode |
31| Out of service | A previous release, which is no longer receiving updates. |
32
33### Release branch process
34
35We track the state of candidates for a given release by tagging the PRs with the following labels:
36
37* `backport_YYMM`: This PR (to `main`) is a candidate to be included in the
38 `YYMM` release.
39 * N.B.: A maintainer will _remove_ this tag if the fix is not accepted into
40 the release.
41* `backported_YYMM`: This PR (to `main`) has been cherry-picked to the `YYMM`
42 release.
43
44#### Seeking Approval for Backport
45
46To seek approval to include a change in a release branch, follow these steps:
47
48* Tag your PR to `main` PR with the `backport_YYMM` label.
49* Cherry-pick the change to the appropriate `release/YYMM` branch in your fork
50 and stage a PR to that same branch in the main repository.
51
52Please reach out to the maintainers before staging that PR if you have any
53doubts.
54
55#### Backport PR Best Practices
56
57When creating a backport PR to a `release/YYMM` branch:
58
59* **Clean cherry-picks are strongly preferred.** A clean cherry-pick minimizes
60 reviewer effort and reduces the risk of introducing regressions.
61* **If the backport is not a clean cherry-pick** (e.g., requires conflict
62 resolution or additional modifications), clearly indicate this in the PR
63 description. This signals to the reviewer that extra care is needed during
64 the review process.
65
66## Existing Release Branches
67
68| Release | Phase | Notes |
69|--------|-------|-------|
70| release/2411 | Out of service | |
71| release/2505 | Servicing | Supports runtime servicing from release/2411. |
72| _tbd, in main_ | Active Development | Supports runtime servicing from release/2411 and release/2505. |
73
74## Taking a Dependency on a Release
75
76We welcome feedback, especially if you would like to depend on a reliable
77release process. Please reach out!
78