Skip to content

Commit 2341522

Browse files
committed
sig-architecture: add provisional Receipts KEP
Signed-off-by: Nabarun Pal <[email protected]>
1 parent 65dc03a commit 2341522

File tree

2 files changed

+266
-0
lines changed

2 files changed

+266
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,245 @@
1+
# KEP-2140: Receipts process for tracking release enhancements
2+
3+
<!-- toc -->
4+
- [Release Signoff Checklist](#release-signoff-checklist)
5+
- [Summary](#summary)
6+
- [Motivation](#motivation)
7+
- [Goals](#goals)
8+
- [Non-Goals](#non-goals)
9+
- [Proposal](#proposal)
10+
- [User Stories](#user-stories)
11+
- [KEP Authors](#kep-authors)
12+
- [Proposing enhancements](#proposing-enhancements)
13+
- [Filing an exception to Enhancements/Code Freeze](#filing-an-exception-to-enhancementscode-freeze)
14+
- [API Reviewers](#api-reviewers)
15+
- [SIG Chair / TLs / PMs](#sig-chair--tls--pms)
16+
- [Enhancements Subteam](#enhancements-subteam)
17+
- [Docs Subteam](#docs-subteam)
18+
- [Notes/Constraints/Caveats](#notesconstraintscaveats)
19+
- [Risks and Mitigations](#risks-and-mitigations)
20+
- [Design Details](#design-details)
21+
- [Test Plan](#test-plan)
22+
- [Graduation Criteria](#graduation-criteria)
23+
- [Alpha](#alpha)
24+
- [Alpha -&gt; Beta Graduation](#alpha---beta-graduation)
25+
- [Future Graduations](#future-graduations)
26+
- [Implementation History](#implementation-history)
27+
<!-- /toc -->
28+
29+
## Release Signoff Checklist
30+
31+
Items marked with (R) are required *prior to targeting to a milestone / release*.
32+
33+
- [x] (R) Enhancement issue in release milestone, which links to KEP dir in [kubernetes/enhancements] (not the initial KEP PR)
34+
- [ ] (R) KEP approvers have approved the KEP status as `implementable`
35+
- [ ] (R) Design details are appropriately documented
36+
- [-] (R) Test plan is in place, giving consideration to SIG Architecture and SIG Testing input
37+
- [x] (R) Graduation criteria is in place
38+
- [-] (R) Production readiness review completed
39+
- [-] Production readiness review approved
40+
- [-] "Implementation History" section is up-to-date for milestone
41+
- [-] User-facing documentation has been created in [kubernetes/website], for publication to [kubernetes.io]
42+
- [ ] Supporting documentation—e.g., additional design documents, links to mailing list discussions/SIG meetings, relevant PRs/issues, release notes
43+
44+
[kubernetes.io]: https://kubernetes.io/
45+
[kubernetes/enhancements]: https://git.k8s.io/enhancements
46+
[kubernetes/kubernetes]: https://git.k8s.io/kubernetes
47+
[kubernetes/website]: https://git.k8s.io/website
48+
49+
## Summary
50+
51+
52+
Introduce a new Git-based artifact and supporting tooling to support automated enhancement collection and tracking processes for Kubernetes releases.
53+
54+
55+
## Motivation
56+
57+
When a Kubernetes release begins, the release team currently begins enhancement collection by:
58+
59+
* Reviewing all open Enhancement issues
60+
* Reviewing previous issue comments to determine activity
61+
* [Adding new comments and the milestone, and manually applying labels to get confirmation of inclusion in the release](https://github.com/kubernetes/enhancements/issues/1979#issuecomment-691394283)
62+
63+
This is very time-intensive for the release team and leads to many instances where notifications are missed, ultimately resulting in untracked Exceptions and rushed Exception Requests.
64+
65+
During the implementation phase of the release, more comments and back-and-forth conversation occurs on the Enhancement issue, including:
66+
67+
* tracking of kubernetes/kubernetes PRs[[1](https://github.com/kubernetes/enhancements/issues/1929#issuecomment-726228115)]
68+
* tracking kubernetes/website PRs[[2](https://github.com/kubernetes/enhancements/issues/2000#issuecomment-722752540)].
69+
70+
This is also done simply by referencing the KEP from the kubernetes/kubernetes PR.
71+
72+
When a milestone, such as enhancement freeze or code freeze occurs, the issue is updated to reflect inclusion or removal from the milestone, and we again leverage comments and manually applied labels to convey status; as an example, consider [Build-in API Types Misses Code Freeze](https://github.com/kubernetes/enhancements/issues/1929#event-3991979549).
73+
74+
Additionally, when an exception is required, this is [handled via email](https://groups.google.com/g/kubernetes-sig-release/c/eCk4Xyb58GQ/m/tjgEstjyAQAJ) and linked back to the issue via additional comments, such as [Built-in API Types Defaults Exception Granted](https://github.com/kubernetes/enhancements/issues/1929#issuecomment-727043537).
75+
76+
Over time, this process becomes harder and harder to navigate, leading to decreased process clarity, frustration by contributors, and increased toil for the release team.
77+
78+
To streamline this process and increase transparency, we will add a new Git-based artifact, hereafter referred to as a receipt. This receipt represents an opt-in promise/soft commitment from a SIG about KEPs they're submitting to a specific release and will allow all tracking to occur via Git commits rather than via issue comments, PR references, and other non-auditable mechanisms.
79+
80+
### Goals
81+
82+
* Support better KEP validation and automation through Git-based process
83+
* Reduce friction and toil early in a release cycle
84+
* Eliminate instances where Enhancements aren't tracked due to miscommunication
85+
* Encourage SIGs to update KEPs proactively and plan for release cycles
86+
* Improve the Exception process turning exception requests into a PR by the SIG with proper approvals
87+
* Increase KEP / Release transparency
88+
* Encourage better KEP implementation history updates
89+
90+
91+
### Non-Goals
92+
93+
<!--
94+
What is out of scope for this KEP? Listing non-goals helps to focus discussion
95+
and make progress.
96+
-->
97+
98+
99+
## Proposal
100+
101+
The opting-in process to a release will accept a specified file format (hereafter referred to as a `receipt`) containing metadata about the KEP being enrolled. There would be one receipt per KEP per release cycle.
102+
103+
The receipts would need to be created in the [k/enhancements][k-enhancements] repository. Once a KEP Author/Assignee creates a receipt on behalf of a SIG, it is understood that the feature has been soft opted-in to the release. The opt-in would be finalized only after the Enhancements Team verifies the laid-out acceptance criteria.
104+
105+
The Enhancements Team will continuously monitor the filed receipts during the Enhancements Collection period to verify the graduation requirements. The Enhancements Team will have the power to remove enhancements from the release if they feel they are not conforming to requirements. The team can ask the KEP Assignee to file an exception if the Enhancements Freeze deadline has been passed.
106+
107+
After the collection of Enhancements is completed, KEP Assignees will need to update their receipts with the implementation PRs and documentation PRs (if any). KEP Assignees can update the receipt with the relevant PRs before Enhancements Freeze as well. The Enhancements Team will monitor the mentioned PRs for Code Freeze completion requirements. The team will have the right to ask the assignee to file for an exception or counsel the assignee whether they want to bump the graduation of an enhancement to the next release cycle.
108+
109+
The RT Docs team will monitor the mentioned documentation PRs to see if it conforms to that release cycle's Docs deadline requirements.
110+
111+
[See below][#design-details] for the receipt format and the process.
112+
113+
### User Stories
114+
115+
TODO: Mention the personas who are benefited through the improvements listed in this KEP
116+
TODO: Should we rewrite these into user story format? i.e., "As a SIG tech lead, I want to graduate a KEP in a specific release."
117+
118+
#### KEP Authors
119+
120+
##### Proposing enhancements
121+
122+
* Specify New KEP for Release
123+
* Specify Graduation phase for existing KEP
124+
* Link / Report k/k PRs for a given Enhancement
125+
* Indicate k/w PRs for a given Enhancement
126+
127+
##### Filing an exception to Enhancements/Code Freeze
128+
129+
* Request Exception for Enhancement Freeze
130+
* Request Exception for Code Freeze
131+
132+
#### API Reviewers
133+
134+
* Review / Approve Exception Requests that need API Review
135+
* Ensure reviewer bandwidth considered
136+
* Prioritize areas for upcoming releases
137+
138+
#### SIG Chair / TLs / PMs
139+
140+
* Review Open/Proposed KEPs for my SIG
141+
* Help plan reviews / dependencies
142+
* Help identify major themes / release blogs
143+
* Review At Risk KEPS for my SIG
144+
* Help prioritize last-minute reviews
145+
* Review Exceptions for my SIG
146+
* Determine release-blocking / primary importance
147+
* Review Slipped Enhancements to support planning
148+
* Determine what phase it missed
149+
* Identify multiple slips / misses
150+
151+
#### Enhancements Subteam
152+
153+
* Pre enhancements Freeze (Enhancements Collection)
154+
* Collect intentions/plans of KEP authors to graduate a KEP
155+
* Ensure that those intents comply with the graduation requirements
156+
* Mark enhancements "At Risk" based on compliance with graduation requirements
157+
158+
* At Enhancements Freeze
159+
* Remove enhancements that do not comply with requirements
160+
161+
* Enhancements Freeze - Code Freeze
162+
* Ensure that the k/k PRs for the KEP are populated
163+
* Mark enhancements "At Risk" based on the progress of implementation
164+
* Approve/Deny exceptions for Enhancements Freeze
165+
166+
* Around Code Freeze
167+
* Ensure that the enlisted k/k are merged
168+
* Approve/Deny exceptions for Code Freeze
169+
170+
* At Code Freeze
171+
* Remove enhancements that have not completed requirements for Code Freeze
172+
173+
* Throughout the Cycle
174+
* Prepare a manifest of what's the status of enhancements at any point in time
175+
176+
#### Docs Subteam
177+
178+
* Enhancements Freeze - Open Docs PR Deadline
179+
* Ensure that the k/w PRs are populated in the KEPs
180+
* Communicate to SIG Docs about the expected review load
181+
182+
* Open Docs PR Deadline - Docs Complete
183+
* Mark enhancements "At Risk" if the following are true:
184+
* Docs PRs are not updated
185+
* The draft PRs have not been updated
186+
187+
### Notes/Constraints/Caveats
188+
189+
This KEP is based on a [high-level plan](https://docs.google.com/document/d/1qnfXjQCBrikbbu9F38hdzWEo5ZDBd57Cqi0wG0V6aGc/edit#) incorporating feedback collected from release team members and contributors over several cycles.
190+
191+
In 1.21, we'll focus on implementing much of this process manually, so there will be some burden placed on people to create the appropriate YAML structure. But ideally, these changes will free up time for people on the release team to work on automating the receipts process.
192+
193+
### Risks and Mitigations
194+
195+
* Conflicts can arise when two people update/modify the same artifact
196+
* The team needs to have Git experience
197+
* Only one person works on the artifacts at a time
198+
* Communicate with each other when making changes
199+
* Bots can eventually handle the manifest generation
200+
* Keeping KEP implementation history updated
201+
* Requires intervention from a human and trust needs to be on the same person
202+
* Preventing enhancements to slip across release cycles
203+
* Ensuring enhancements don't permanently remain in the Beta stage
204+
* This KEP doesn't talk about KEP owners keeping enhancements issues up-to-date
205+
206+
## Design Details
207+
208+
TODO: - Write the folder structure and the format of receipts.
209+
210+
### Test Plan
211+
212+
This KEP entails a process change, and hence the tooling to ease the processes will have necessary tests.
213+
214+
### Graduation Criteria
215+
216+
#### Alpha
217+
218+
- Define the process to be followed by the SIGs when proposing an enhancement for the release
219+
- Define the process to be followed by the Enhancements subteam every release cycle
220+
- Minimal tooling to perform the defined process and validation of receipts
221+
- Training/communicating the community about the changes to the process
222+
223+
#### Alpha -> Beta Graduation
224+
225+
- Automation for the processes introduced in the Alpha stage
226+
- Tooling should pull data from `kep.yaml` ensuring minimal diff between receipts and KEP metadata
227+
- Presubmit validations of receipts
228+
- Ease of use of all the proposed tooling
229+
230+
#### Future Graduations
231+
232+
- Solving woes of Docs team
233+
- Refining user experience based on feedback across release cycles
234+
235+
## Implementation History
236+
237+
- 2020-11-26: Provisional enhancement filed
238+
- 2020-MM-DD: Provisional enhancement accepted
239+
- 2020-MM-DD: Enhancement made implementable
240+
- 2020-MM-DD: Implementation started
241+
- 2020-MM-DD: Alpha criteria fulfilled
242+
- 2020-MM-DD: Rolled out for a release
243+
244+
<!-- Links -->
245+
[k-enhancements]: https://git.k8s.io/enhancements
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
title: Receipts process for tracking release enhancements
2+
kep-number: 2140
3+
authors:
4+
- "@jeremyrickard"
5+
- "@palnabarun"
6+
owning-sig: sig-architecture
7+
participating-sigs:
8+
- sig-release
9+
status: provisional
10+
creation-date: 2020-11-24
11+
reviewers:
12+
- "@justaugustus"
13+
approvers:
14+
- "@justaugustus"
15+
see-also:
16+
- "/keps/sig-architecture/617-improve-kep-implementation"
17+
- "/keps/0001-kubernetes-enhancement-proposal-process.md"
18+
stage: alpha
19+
latest-milestone: "v1.21"
20+
milestone:
21+
alpha: "v1.21"

0 commit comments

Comments
 (0)