Skip to content

Commit 1254baf

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

File tree

2 files changed

+287
-0
lines changed

2 files changed

+287
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,266 @@
1+
<!--
2+
**Note:** When your KEP is complete, all of these comment blocks should be removed.
3+
4+
To get started with this template:
5+
6+
- [ ] **Merge early and iterate.**
7+
Avoid getting hung up on specific details and instead aim to get the goals of
8+
the KEP clarified and merged quickly. The best way to do this is to just
9+
start with the high-level sections and fill out details incrementally in
10+
subsequent PRs.
11+
12+
Just because a KEP is merged does not mean it is complete or approved. Any KEP
13+
marked as `provisional` is a working document and subject to change. You can
14+
denote sections that are under active debate as follows:
15+
16+
```
17+
<<[UNRESOLVED optional short context or usernames ]>>
18+
Stuff that is being argued.
19+
<<[/UNRESOLVED]>>
20+
```
21+
-->
22+
# KEP-2140: Receipts process for tracking release enhancements
23+
24+
<!-- toc -->
25+
- [Release Signoff Checklist](#release-signoff-checklist)
26+
- [Summary](#summary)
27+
- [Motivation](#motivation)
28+
- [Goals](#goals)
29+
- [Non-Goals](#non-goals)
30+
- [Proposal](#proposal)
31+
- [User Stories](#user-stories)
32+
- [KEP Authors](#kep-authors)
33+
- [Proposing enhancements](#proposing-enhancements)
34+
- [Filing an exception to Enhancements/Code Freeze](#filing-an-exception-to-enhancementscode-freeze)
35+
- [API Reviewers](#api-reviewers)
36+
- [SIG Chair / TLs / PMS](#sig-chair--tls--pms)
37+
- [Enhancements Subteam](#enhancements-subteam)
38+
- [Docs Subteam](#docs-subteam)
39+
- [Notes/Constraints/Caveats](#notesconstraintscaveats)
40+
- [Risks and Mitigations](#risks-and-mitigations)
41+
- [Design Details](#design-details)
42+
- [Test Plan](#test-plan)
43+
- [Graduation Criteria](#graduation-criteria)
44+
- [Alpha](#alpha)
45+
- [Alpha -&gt; Beta Graduation](#alpha---beta-graduation)
46+
- [Future Graduations](#future-graduations)
47+
- [Implementation History](#implementation-history)
48+
<!-- /toc -->
49+
50+
## Release Signoff Checklist
51+
52+
Items marked with (R) are required *prior to targeting to a milestone / release*.
53+
54+
- [x] (R) Enhancement issue in release milestone, which links to KEP dir in [kubernetes/enhancements] (not the initial KEP PR)
55+
- [ ] (R) KEP approvers have approved the KEP status as `implementable`
56+
- [ ] (R) Design details are appropriately documented
57+
- [-] (R) Test plan is in place, giving consideration to SIG Architecture and SIG Testing input
58+
- [x] (R) Graduation criteria is in place
59+
- [-] (R) Production readiness review completed
60+
- [-] Production readiness review approved
61+
- [-] "Implementation History" section is up-to-date for milestone
62+
- [-] User-facing documentation has been created in [kubernetes/website], for publication to [kubernetes.io]
63+
- [ ] Supporting documentation—e.g., additional design documents, links to mailing list discussions/SIG meetings, relevant PRs/issues, release notes
64+
65+
[kubernetes.io]: https://kubernetes.io/
66+
[kubernetes/enhancements]: https://git.k8s.io/enhancements
67+
[kubernetes/kubernetes]: https://git.k8s.io/kubernetes
68+
[kubernetes/website]: https://git.k8s.io/website
69+
70+
## Summary
71+
72+
73+
Introduce a new git based artifact, and supporting tooling, to support automated enhancement collection and tracking processes for Kubernetes Releases.
74+
75+
76+
## Motivation
77+
78+
When a Kubernetes release begins, the release team currently begins enhancement collection by:
79+
80+
* Reviewing all open Enhancement issues
81+
* Reviewing previous issue comments to determine activity
82+
* [Adding new comments, milestone and manually applying labels to get confirmation of inclusion in the release](https://github.com/kubernetes/enhancements/issues/1979#issuecomment-691394283)
83+
84+
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.
85+
86+
During the implementation phase of the release, more comments and back and forth conversation occurs on the Enhancement issue, including:
87+
88+
* tracking of kubernetes/kuberentes PRs[[1](https://github.com/kubernetes/enhancements/issues/1929#issuecomment-726228115)]
89+
* tracking kubernetes/website PRs[[2](https://github.com/kubernetes/enhancements/issues/2000#issuecomment-722752540)].
90+
91+
This is also done simply by referencing the KEP from the kubernetes/kubernetes PR.
92+
93+
When a milestone, such as enhancement freeze or code freeze occur, 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).
94+
95+
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).
96+
97+
Over time, this process becomes harder and harder to navigate, leading to decreased process clarity, leading to frustration by contributors and increased toil for the release team.
98+
99+
In order 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.
100+
101+
### Goals
102+
103+
* Support better KEP validation and automation through Git based process
104+
* Reduce friction and toil early in a release cycle
105+
* Eliminate instances where Enhancements aren't tracked due to miscommunication
106+
* Encourage SIGs to proactively update KEPs and plan for release cycles
107+
* Improve Exception process turning exception requests into a PR by the SIG with proper approvals
108+
* Increase KEP / Release transparency
109+
* Encourage better KEP implementation history updates
110+
111+
112+
### Non-Goals
113+
114+
<!--
115+
What is out of scope for this KEP? Listing non-goals helps to focus discussion
116+
and make progress.
117+
-->
118+
119+
120+
## Proposal
121+
122+
The process for opting in to a release will accept a specified file format (hereafter referred to as a `receipt`) containing metadata pertaining the KEP being enrolled. There would be one receipt per KEP per release cycle.
123+
124+
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 finalised only after the Enhancements Team verifies the laid out acceptance criteria.
125+
126+
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 the team feels they are not conforming requirements. The team can ask the KEP Assignee to file an exception if Enhancements Freeze deadline has been passed.
127+
128+
After 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 graduation of an enhancement to the next release cycle.
129+
130+
The RT Docs team will monitor the mentioned documentation PRs to see if it conforms to the Docs deadline requirements of that release cycle.
131+
132+
[See below][#design-details] for the receipt format and the process.
133+
134+
### User Stories
135+
136+
TODO: Mention the personas who are benefited through the improvements listed in this KEP
137+
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"
138+
139+
#### KEP Authors
140+
141+
##### Proposing enhancements
142+
143+
* Specify New KEP for Release
144+
* Specify Graduation phase for existing KEP
145+
* Link / Report k/k PRs for a given Enhancment
146+
* Indicate k/w PRs for a given Enhancement
147+
148+
##### Filing an exception to Enhancements/Code Freeze
149+
150+
* Request Exception for Enhancement Freeze
151+
* Request Exception for Code Freeze
152+
153+
#### API Reviewers
154+
155+
* Review / Approve Exception Requests that need API Review
156+
* Ensure reviewer bandwidth considered
157+
* Priortize areas for upcoming releases
158+
159+
#### SIG Chair / TLs / PMS
160+
161+
* Review Open/Proposed KEPs for my SIG
162+
* Help plan reviews / dependencies
163+
* Help identify major themes / release blogs
164+
* Review At Risk KEPS for my SIG
165+
* Help Prioritize last minute reviews
166+
* Review Exceptions for my SIG
167+
* Determine release blocking / major importance
168+
* Review Slipped Enhancements to support planning
169+
* Determine what phase it missed
170+
* Identify multiple slips / misses
171+
172+
#### Enhancements Subteam
173+
174+
* Pre enhancements Freeze (Enhancements Collection)
175+
* Collect intents of KEP authors to graduate a KEP
176+
* Ensure that those intents comply to the graduation requirements
177+
* Mark enhancements "At Risk" based on compliance with graduation requirements
178+
179+
* At Enhancements Freeze
180+
* Remove enhancements that do not comply with requirements
181+
182+
* Enhancements Freeze - Code Freeze
183+
* Ensure that the k/k PRs for the KEP are populated
184+
* Mark enhancements "At Risk" based on progress on implementation
185+
* Approve/Deny exceptions for Enhancements Freeze
186+
187+
* Around Code Freeze
188+
* Ensure that the enlisted k/k are merged
189+
* Approve/Deny exceptions for Code Freeze
190+
191+
* At Code Freeze
192+
* Remove enhancements that have not completed requirements for Code Freeze
193+
194+
* Throughout the Cycle
195+
* Prepare a manifest of what's the status of enhancements at any point of time
196+
197+
#### Docs Subteam
198+
199+
* Enhancements Freeze - Open Docs PR Deadline
200+
* Ensure that the k/w PRs are populated in the KEPs
201+
* Communicate to SIG Docs about the expected review load
202+
203+
* Open Docs PR Deadline - Docs Complete
204+
* Mark enhancements "At Risk" if the following are true:
205+
* Docs PRs are not updated
206+
* The draft PRs have not been updated
207+
208+
### Notes/Constraints/Caveats
209+
210+
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 contribtors over several cycles.
211+
212+
In 1.21, we'll focus on implementing much of this process manually so there will be some burdon 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
213+
214+
### Risks and Mitigations
215+
216+
* Conflicts can arise when two people update/modify the same artifact
217+
* The team needs to have Git experience
218+
* Only one person works on the artifacts at a time
219+
* Communicate with each other when making changes
220+
* Bots can eventually handle manifest generation
221+
* Keeping KEP implementation history updated
222+
* Requires intervention from an human and trust needs to be on the same person
223+
* Preventing enhancements to slip across release cycles
224+
* Ensuring enhancements don't permanently remain in Beta stage
225+
* This KEP doesn't talk about KEP owners keeping enhancements issues up-to-date
226+
227+
## Design Details
228+
229+
TODO: - Write the folder structure and the format of receipts.
230+
231+
### Test Plan
232+
233+
This KEP entails a process change and hence the tooling to ease the processes will have necessary tests.
234+
235+
### Graduation Criteria
236+
237+
#### Alpha
238+
239+
- Define the process to be followed by the SIGs when proposing an enhancent for the release
240+
- Define the process to be followed by the Enhancements subteam every release cycle
241+
- Minimal tooling to perform the defined process and validation of receipts
242+
- Training/communicating the community about the changes to the process
243+
244+
#### Alpha -> Beta Graduation
245+
246+
- Automation for the processes introduced in Alpha stage
247+
- Tooling should pull data from `kep.yaml` ensuring minimal diff between receipts and KEP metadata
248+
- Presubmit validations of receipts
249+
- Ease of use of all the proposed tooling
250+
251+
#### Future Graduations
252+
253+
- Solving woes of Docs team
254+
- Refining user experience based on feedback across release cycles
255+
256+
## Implementation History
257+
258+
- 2020-11-26: Provisional enhancement filed
259+
- 2020-MM-DD: Provisional enhancement accepted
260+
- 2020-MM-DD: Enhancement made implementable
261+
- 2020-MM-DD: Implementation started
262+
- 2020-MM-DD: Alpha criterion fulfilled
263+
- 2020-MM-DD: Rolled out for a release
264+
265+
<!-- Links -->
266+
[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)