Skip to content
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

sig-release: Add release cadence KEP #2567

Merged
merged 34 commits into from
Apr 23, 2021
Merged
Show file tree
Hide file tree
Changes from 27 commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
cfe59ef
sig-release/2572-release-cadence: Initial commit
justaugustus Jan 21, 2021
31da696
2572-release-cadence: Move raw discussion notes under KEP headers
justaugustus Mar 15, 2021
5f121c9
2572-release-cadence: Start distilling user stories and requirements
justaugustus Mar 15, 2021
4c0f38c
2572-release-cadence: Move leads feedback into KEP sections
justaugustus Mar 15, 2021
ef250f7
2572-release-cadence: Create section about concentrated risk
justaugustus Mar 15, 2021
be9f769
2572-release-cadence: Categorizing schedule preferences/requirements
justaugustus Mar 15, 2021
4de2c8c
2572-release-cadence: Add TODOs for proposal alternatives
justaugustus Mar 15, 2021
52a8280
2572-release-cadence: Move remaining FIXMEs to the appropriate headings
justaugustus Mar 15, 2021
e02b8dd
2572-release-cadence: Move feature graduation data to correct heading
justaugustus Mar 15, 2021
9ef45b6
2572-release-cadence: Fixup heading for leads meeting feedback session
justaugustus Mar 15, 2021
233c2cc
2572-release-cadence: Mark Release Team shadow selection as out-of-scope
justaugustus Mar 15, 2021
b668922
2572-release-cadence: Mark maintenance/stability releases out-of-scope
justaugustus Mar 15, 2021
f625168
2572-release-cadence: Mark accelerated release cycles out-of-scope
justaugustus Mar 15, 2021
15a626a
2572-release-cadence: Mark LTS as out-of-scope
justaugustus Mar 17, 2021
e2d5d96
2572-release-cadence: Group cleanup from the leadership team
justaugustus Mar 24, 2021
92c1c2d
2572-release-cadence: Add Lauri edits
justaugustus Mar 24, 2021
854ffb5
2572-release-cadence: Line-wrap at 80-char
justaugustus Mar 25, 2021
0502c94
2572-release-cadence: Mark as implementable w/ fake PRR
justaugustus Mar 25, 2021
03fe45e
2572-release-cadence: Add initial details about feedback survey
justaugustus Mar 26, 2021
b527823
2572-release-cadence: Drop instructional comments
justaugustus Mar 26, 2021
d4f878a
Apply review comments and fixups
saschagrunert Apr 7, 2021
995ab88
Add note about feature graduation
saschagrunert Apr 8, 2021
90bc266
Apply additional suggestions and review feedback
jeremyrickard Apr 9, 2021
3fc92e1
Update TOC
jeremyrickard Apr 9, 2021
0183839
Add tabular representation of before and after proposed
jeremyrickard Apr 9, 2021
9d65c63
Apply suggestions from code review
saschagrunert Apr 12, 2021
7e1b190
Move sig-testing and sig-arch chairs to approvers
jeremyrickard Apr 14, 2021
3a1e6c4
Update with review feedback and clarify alpha/beta/stable and officia…
jeremyrickard Apr 14, 2021
43b1908
Add increased enhancements lifecycle risk
saschagrunert Apr 15, 2021
1d9d76f
Update KEP with 15 week release for 1.22
jeremyrickard Apr 15, 2021
0def15c
Update authors, review feedback, clarifications
jeremyrickard Apr 15, 2021
d696d32
Fix formatting of survey paragraph
saschagrunert Apr 19, 2021
41d22d3
Amend 2022 dates
jeremyrickard Apr 20, 2021
2887453
review comment cleanup
jeremyrickard Apr 20, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions keps/prod-readiness/sig-release/2572.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
kep-number: 2572
kikisdeliveryservice marked this conversation as resolved.
Show resolved Hide resolved
jeremyrickard marked this conversation as resolved.
Show resolved Hide resolved
alpha:
approver: "@johnbelamaric"
jeremyrickard marked this conversation as resolved.
Show resolved Hide resolved
389 changes: 389 additions & 0 deletions keps/sig-release/2572-release-cadence/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,389 @@
# KEP-2572: Defining the Kubernetes Release Cadence

<!-- toc -->
- [Release Signoff Checklist](#release-signoff-checklist)
- [Summary](#summary)
- [Motivation](#motivation)
- [Goals](#goals)
- [Enhance determinism](#enhance-determinism)
- [Reduce risk](#reduce-risk)
- [Collecting data](#collecting-data)
- [Creating a policy](#creating-a-policy)
- [Non-Goals](#non-goals)
- [Long-term support (LTS) releases](#long-term-support-lts-releases)
- [Changing enhancements graduation](#changing-enhancements-graduation)
- [Architecture changes](#architecture-changes)
- [Modifying SIG Architecture policies](#modifying-sig-architecture-policies)
- [Accelerated release cycles](#accelerated-release-cycles)
- [Establishing maintenance/stability releases](#establishing-maintenancestability-releases)
- [Determining an upper bound for Release Team shadows](#determining-an-upper-bound-for-release-team-shadows)
- [Proposal](#proposal)
- [User Stories](#user-stories)
- [End User](#end-user)
- [Distributors and downstream projects](#distributors-and-downstream-projects)
- [Contributors](#contributors)
- [SIG Release members](#sig-release-members)
- [Risks and Mitigations](#risks-and-mitigations)
kikisdeliveryservice marked this conversation as resolved.
Show resolved Hide resolved
- [Concentrating risk](#concentrating-risk)
- [Attention to tests](#attention-to-tests)
- [Attention to dependencies](#attention-to-dependencies)
- [Feature graduation](#feature-graduation)
- [Design Details](#design-details)
- [Schedule Policy](#schedule-policy)
- [Feedback survey](#feedback-survey)
- [Implementation History](#implementation-history)
- [GitHub Discussion](#github-discussion)
- [Leads meeting feedback session](#leads-meeting-feedback-session)
- [Drawbacks](#drawbacks)
- [Alternatives](#alternatives)
<!-- /toc -->

## Release Signoff Checklist

- [ ] (R) Enhancement issue in release milestone, which links to KEP dir in [kubernetes/enhancements] (not the initial KEP PR)
- [ ] (R) KEP approvers have approved the KEP status as `implementable`
- [ ] (R) Design details are appropriately documented
- [ ] (R) Test plan is in place, giving consideration to SIG Architecture and SIG Testing input (including test refactors)
- [ ] (R) Graduation criteria is in place
- [ ] (R) Production readiness review completed
- [ ] (R) Production readiness review approved
- [ ] "Implementation History" section is up-to-date for milestone
- [ ] User-facing documentation has been created in [kubernetes/website], for publication to [kubernetes.io]
- [ ] Supporting documentation—e.g., additional design documents, links to mailing list discussions/SIG meetings, relevant PRs/issues, release notes

[kubernetes.io]: https://kubernetes.io/
[kubernetes/enhancements]: https://git.k8s.io/enhancements
[kubernetes/kubernetes]: https://git.k8s.io/kubernetes
[kubernetes/website]: https://git.k8s.io/website

## Summary

With this KEP, SIG Release proposes to change the current Kubernetes release
cadence from 4 down to 3 releases per year. This would start with the
Kubernetes 1.22 release cycle.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Where was the starting release decided? I don't see that in the linked GitHub discussion.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Based on the discussions from Leads/TL meeting, sig-release leads assumed this date and the KEP is written to reflect this, with later commits adding more language around this.

The "decision" would be the KEP merging. At this point, it seems like we need a more formal process for deciding this date/identifying who can be the final source of approval. Is this something steering can assist with?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@jeremyrickard wearing my steering hat, sig-arch, sig-release, sig-testing chairs should sign off, please add them as approvers.

( cc @kubernetes/steering-committee in case any other steering folks have other suggestions )

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @dims, I will update the approvers section tomorrow.


## Motivation

Discussions around changing the release cadence for Kubernetes, which currently
releases 4 times per year, are ongoing in the community.

The extended release schedule for 1.19 resulted in only three minor Kubernetes
releases for 2020. As a result, SIG Release received several questions across a
variety of platforms and communication channels about whether the project
intends to only have three minor releases/year.
dims marked this conversation as resolved.
Show resolved Hide resolved

### Goals

#### Enhance determinism

With the current release cadence we already achieve a deterministic schedule
for every year. The goal of this KEP is to increase this even further by
providing a lightweight policy around creating the release schedule. Going
down to 3 releases provides additional room for triage, development, conference
and release cycle preparations, which should result in better overall planning
and more predictability.

#### Reduce risk

With higher predictability we can reduce the overall risk of changing the
release schedule. The planning overhead of SIG Release gets reduced, while
users of Kubernetes gain more time to adapt to the latest release.

The current Kubernetes release cadence is so fast that most organizations
cannot keep up with regularly making a minor version update every 3 months or
saschagrunert marked this conversation as resolved.
Show resolved Hide resolved
going out of security support in a year. While releasing more frequently
saschagrunert marked this conversation as resolved.
Show resolved Hide resolved
theoretically reduces the churn and risk of each release, this is only true if
end users are actually able to apply the upgrades.
saschagrunert marked this conversation as resolved.
Show resolved Hide resolved

#### Collecting data

After this KEP is in place and the first three minor (`1.x.0`) versions have
been released, SIG Release will follow up with a survey to collect feedback

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

who will be surveyed? and specifically when? If we wait until the 3rd release is finished to do a survey and people aren't happy, that doesn't leave a lot of time to properly announce that the next cycle may be changed and we end up back in a 2 week discussion/notification predicament again.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm torn on the survey now, because of the points you have raised (and some others).

Does the community even have an effective way to conduct such a survey that would be fully inclusive and not leave out end users and contributors who are not plugged in?

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not that I know of, but could definitely survey all SIGs/SIG leads and send survey to k-dev at a min?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

On top of those issues - many end-users won't be caught up, so the overall quality-of-life impact may not yet be known.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we can drop the survey stuff from this KEP, it is for setting up a Schedule Policy so let's leave it at that please

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@jeremyrickard Do we want to pick one way or another and resolve this discussion please?

about the new release cadence.

#### Creating a policy

kikisdeliveryservice marked this conversation as resolved.
Show resolved Hide resolved
The outcome of this KEP is a policy for creating release schedules for
Kubernetes.
This allows the release team, as well as users, to follow a set of simple rules
when it comes to knowing when and how Kubernetes releases will be scheduled.

### Non-Goals

#### Long-term support (LTS) releases

The LTS Working Group was
[disbanded](https://github.com/kubernetes/community/pull/5240) on October 20, 2020.

The outcome of their conversations was the proposal which established a
[yearly support period](/keps/sig-release/1498-kubernetes-yearly-support-period/readme.md)
for minor releases of the project.

While we may revisit the idea in the future, for now we trust the 2+ years of
thoughtful deliberation by the working group enough to conclude that the
project is not currently in a place to support long-term support releases.

#### Changing enhancements graduation

This KEP will not change the way that enhancements are being graduated. It's
the responsibility of SIGs to keep track of their enhancements and graduate
them in the provided constraints of SIG Architecture.

The new release schedule will add room for only a few more weeks of
development.
SIGs should focus on using those additional weeks to enhance documentation and
testing (stability) - not on adding more features. These decisions are not part
of any SIG Release planning and will therefore be considered out of scope.

#### Architecture changes

Changing any architecture of Kubernetes—for example, decoupling its core
components from the k/k repository—is outside the scope of this KEP.

#### Modifying SIG Architecture policies

Any policy change made by SIG Architecture is out of scope of this KEP. This
non-goal corresponds partially to the [Changing enhancements
graduation](#changing-enhancements-graduation) section.

#### Accelerated release cycles

The intent of this proposal is to create more opportunities to provide a
high-value experience for Kubernetes consumers.

The Kubernetes community faces a reasonable amount of tech debt across
infrastructure, testing, policy, and documentation. This KEP proposes that we
spend more time paying down that debt.
saschagrunert marked this conversation as resolved.
Show resolved Hide resolved

SIG Release currently produces releases at the following cadence:

- patch releases (`x.y.Z`): [monthly](https://git.k8s.io/sig-release/releases/patch-releases.md)
- minor releases (`x.Y.z`): [every four months](https://git.k8s.io/sig-release/release-engineering/versioning.md)
- pre-releases (`x.y.0-(alpha|beta|rc).N`): every 1-3 weeks during active
development cycles ([example](https://git.k8s.io/sig-release/releases/release-1.21/README.md#timeline))

At the time of writing, SIG Release considers these to be reasonable cadences
for patch and pre-releases.

If you'd like to provide suggestions on longer-term improvements that could
potentially accelerate production of releases, please join the discussion
[here](https://github.com/kubernetes/sig-release/discussions/1495).

#### Establishing maintenance/stability releases

Establishing a shorter maintenance/stability release at the end of the year has
been casually discussed at several points in the project, with the most recent
(at the time of writing) occurrence being
[here](https://github.com/kubernetes/sig-release/issues/809).

Nothing compelling has emerged from previous conversations to give cause to
establish maintenance/stability releases.

Fixing bugs, stabilizing components, adding/deflaking tests, improving
documentation, and graduating features are activities that can and should
happen in a reasonably consistent manner throughout the year.

#### Determining an upper bound for Release Team shadows

It was noted that fewer releases for the year would lead to fewer opportunities
to participate on the Release Team.

This will be discussed and addressed in
https://github.com/kubernetes/sig-release/issues/1494.

## Proposal

The following tables detail a notional timeline for the remainder of 2021 and
for 2022, leveraging the historical *4-releases-per-year cadence*. Generally,
code freeze remains in effect until the last week of the release, so
development for the next release generally starts prior to the official release
team kickoff. A minimum of 1 week is needed between releases to fully form the
release team and to facilitate on-boarding of shadows. The fourth release of
the year has traditionally been compressed and limited in scope, overlapping
with end of year holidays and vacation for many contributors. Additionally,
KubeCon normally occurs during at least one release, eliminating a week of
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think that counting Kubecons as only one work of working time spent is a bit low, because of the extent to which very active contribtors to the project are probably very active Kubecon participants.

There's the week before of "get everything ready for the big show", and the week after of "integrate everything you learned while you were there into your todo list", where people probably aren't as productive as they normally would be.

That's really important for the timing calculations below.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Indeed, the policy states:

Events like KubeCon will be considered as blocked from development or decision-making from the SIG release perspective. SIG Release will also consider the week before and after the event in the same way.

I'll add language to state that the release team will not meet during that blocked week and clarify the other two weeks. In the past we didn't break, and I think this change has been beneficial but it consumes time.

Thanks @youngnick I'll fold this in.

working time.

*Kubernetes Release Sechedule 2021 (Existing 4 Release Cadence)*

| Year Week Number | Release Number | Release Week | Note |
| -------- | -------- | -------- | -------- |
| 2 | 1 | 1 (January 11) | |
| 14 | 1 | 13 (April 8) | |
| 16 | 2 | 1 (April 19) | |
| 27 | 2 | 11 (July 06) | One week break for KubeCon EU - 10 weeks of working |
| 29 | 3 | 1 (July 20) | |
| 40 | 3 | 11 (October 5) | |
| 42 | 4 | 1 (October 18) | |
| 52 | 4 | 10 (December 28) | End of Year Holidays |

*Kubernetes Release Sechedule 2022 (Existing 4 Release Cadence)*

| Year Week Number | Release Number | Release Week | Note |
| -------- | -------- | -------- | -------- |
| 1 | 1 | 1 (January 3) | |
| 12 | 1 | 12 (March 15) | |
| 14 | 2 | 1 (March 28) | Probable KubeCon EU |
| 26 | 2 | 12 (June 28) | |
| 28 | 3 | 1 (July 11) | |
| 40 | 3 | 12 (October 4) | |
| 42 | 4 | 1 (October 17) | Probably KubeCon NA |
| 52 | 4 | 10 (Dec 28) | |

This KEP proposes a transition to a *3-releases-per-year cadence*, beginning
with the Kubernetes 1.22 Release. This would result in a *15* week release
cycle, with *2* weeks between release cycles.

*Kubernetes Release Schedule 2021 (Proposed 3 Release Cadence)*

| Year Week Number | Release Number | Release Week | Note |
| -------- | -------- | -------- | -------- |
| 2 | 1 | 1 (January 11) | |
| 14 | 1 | 13 (April 8) | |
| 17 | 2 | 1 (April 26) | |
| 32 | 2 | 15 (August 10) | KubeCon EU - 14 weeks of actual work|
| 35 | 3 | 1 (August 31) | |
| 50 | 3 | 15 (December 14) | Kubecon NA - 14 weeks of actual work |

*Kubernetes Release Sechedule 2022 (Proposed 3 Release Cadence)*

| Year Week Number | Release Number | Release Week | Note |
| -------- | -------- | -------- | -------- |
| 1 | 1 | 1 (January 3) | |
| 15 | 1 | 15 (April 12) | |
| 18 | 2 | 1 (May 2) | Probably KubeCon EU |
| 33 | 2 | 15 (August 15) | |
| 36 | 3 | 1 (September 6 | Probably KubeCon NA |
| 51 | 3 | 15 (December 20) |
jeremyrickard marked this conversation as resolved.
Show resolved Hide resolved

### User Stories

Kubernetes releases are made by real people. The technical aspects—for example,
the release automation—reflects only a tiny part of the complete cycle. This
means we will mainly focus on the human aspects and their corresponding roles
when deciding to move to a 3-releases-per-year cadence.

#### End User

Most end user organizations find it difficult to match Kubernetes release
cadence - only 3 releases per year will relax this situation.

#### Distributors and downstream projects

Downstream projects assemble their solution from different projects. Having
fewer upgrades helps them to reduce complexity. For example, cloud providers
will gain more room for upgrading their infrastructure.

#### Contributors

With a lower release cadence, contributors will gain more time for project
enhancements, feature development, planning, and testing. It will provide more
room for maintaining their mental health, prepare for events like KubeCon or
work on the downstream integration.

Through this proposal SIG Release's aim is to give contributors more
flexibility to decide how to invest their time. It is explicitly _not_ to push
contributors in doing more.
saschagrunert marked this conversation as resolved.
Show resolved Hide resolved

#### SIG Release members

By applying a cadence of 3 releases per year, SIG Release members will gain a
reduced management overhead. There are also only 3 patch releases to maintain,
which right now can overlap up to 4. SIG Release will gain more time to ensure
a seamless transition from the previous release team to the next one. It is
also possible to include more shadows if the role leads conclude that this is
appropriate.

### Risks and Mitigations
saschagrunert marked this conversation as resolved.
Show resolved Hide resolved

kikisdeliveryservice marked this conversation as resolved.
Show resolved Hide resolved
#### Concentrating risk

In theory a reduced release cadence will cause more changes for every release.
This means that there will be an increased risk, which would usually be split
up into 4 dedicated milestones rather than 3.

SIG Release cannot mitigate this risk directly, but is able to track and
influence it during each release cycle. It's the responsibility of SIG Release,
together with SIG Testing and SIG Architecture, to identify new gaps and issues
in the release cadence and mitigate them on a case-by-case basis.

#### Attention to tests

This KEP does not propose any change to the release cycle itself and assumes
that the same periods for Code and Test Freeze. Assuming that, there is an
increased risk for flakes and test failures. It will be the responsibility of
SIG Release to mitigate this, together with the CI signal role. If we speak
saschagrunert marked this conversation as resolved.
Show resolved Hide resolved
dims marked this conversation as resolved.
Show resolved Hide resolved
about an overall release cycle enhancement of 3-4 weeks, then we believe that
SIG Release is able to mitigate this risk over multiple releases.

#### Attention to dependencies

Having fewer releases will introduce the risk of missing dependencies — for
example, Golang upgrades. This has to be mitigated on a case-by-case basis, in
the same way as it is being done right now.
saschagrunert marked this conversation as resolved.
Show resolved Hide resolved
saschagrunert marked this conversation as resolved.
Show resolved Hide resolved

#### Feature graduation

Research discovered that only 5% of Kubernetes features advanced from Alpha to
GA in the minimum 3 releases. However, the same research showed that reminders
from the Release Team played a critical role in advancement of more than 50% of
features. With a longer release cycle, this reminder activity can be
expected to slow down. As such, advancement will need to be mitigated by making
sure that SIGs keep track of their feature enhancement in more detail.

## Design Details

### Schedule Policy

The exact details of the release schedule are created by the team leads before
the actual cycle begins. SIG Release only provides a lightweight policy, which
is defined as:

1. The first Kubernetes release of a year should start at the second or third
week of January to provide people more room after coming back from the
Christmas holidays.
jeremyrickard marked this conversation as resolved.
Show resolved Hide resolved

2. The last Kubernetes release of a year should be finished by the middle of
December.
saschagrunert marked this conversation as resolved.
Show resolved Hide resolved
Comment on lines +403 to +404
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In regards to comments from @jberkus and @liggitt (#2567 (comment)), I think that this should be defined more precisely. I think that choosing something like December 10th (as proposed by @liggitt) makes sense.


3. A Kubernetes release cycle has a length of of ~15 weeks.

4. Events like KubeCon will be considered as blocked from development or
decision-making from the SIG release perspective. SIG Release will also
consider the week before and after the event in the same way.

5. An explicit SIG release break of at least two weeks between each cycle will
be enforced.

This does not mean that zero development can happen during that time.
Rather, SIG Release will use this time to do the release retrospective and
plan for the next cycle.

dims marked this conversation as resolved.
Show resolved Hide resolved
### Feedback survey

SIG Release will draft an experience survey after the first three releases from
which the new cadence has been applied. This survey which will include questions

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As noted above I think the timing of the feedback survey needs to be fleshed out a bit. I worry about it happening between releases (does that mean it's going to affect the next one? or the one after for a notice period?).

Also if the new cadence begins with 1.22, that would mean we'd potentially be changing cadence back in mid 2022? Feels like in that case taking stock towards the end of 1.23 (EOY release) would make more sense to move forward in 2023 with a solid plan for the entire year?

around the release cadence and how it impacted end users.

Survey contents are to be determined, but we welcome content suggestions to
continually improve the process.
saschagrunert marked this conversation as resolved.
Show resolved Hide resolved

## Implementation History

jeremyrickard marked this conversation as resolved.
Show resolved Hide resolved
### GitHub Discussion

Prior to opening this KEP, a [Github Discussion](https://github.com/kubernetes/sig-release/discussions/1290) was opened to solicit community feedback, which was used as the basis for this KEP.

### Leads meeting feedback session

Already captured above, but you can find meeting notes [here](https://docs.google.com/document/d/1Jio9rEtYxlBbntF8mRGmj6Q1JAdzZ9fTDo3ru1HK_LI/edit#bookmark=id.val5alfdahlr).

## Drawbacks

The main drawbacks of this KEP have been covered in the [Risks and
Mitigations](#risks-and-mitigations) section.

## Alternatives

The alternative approaches have been discussed in the [Non-goals](#non-goals)
section.
Loading