Skip to content

Commit d44caa2

Browse files
author
Kubernetes Submit Queue
authored
Merge pull request #1135 from jbeda/kep-metadata
Automatic merge from submit-queue. KEP metadata Markdownify KEP metadata proposal that was discussed in https://docs.google.com/document/d/1ynmBMuDuT7yGzRscObB1KtgJj8ljYq0I5q4oshrJUCs/edit?ts=59c1b868#. Also moved files around so that we are following some of the suggestions here. Merged the KEP template and the template instructions to reduce the number of files we need to manage.
2 parents d34ec3e + 6c5c226 commit d44caa2

File tree

3 files changed

+281
-193
lines changed

3 files changed

+281
-193
lines changed
+167-22
Original file line numberDiff line numberDiff line change
@@ -1,46 +1,191 @@
1-
[//]: # ( thank you for creating a KEP! )
2-
[//]: # ( read the suggested section content: https://github.com/calebamiles/community/blob/propose-kep-template/contributors/design-proposals/architecture/kep-template-instructions.md )
3-
[//]: # ( replace `Title` with the KEP title )
4-
[//]: # ( replace section content with your amazing proposal )
5-
[//]: # ( KEP filename should match title, replace spaces with `- `)
6-
[//]: # ( update table of contents before merge )
7-
[//]: # ( remove comments before merge )
8-
[//]: # ( profit )
9-
101
# Title
112

3+
This is the title of the KEP. Keep it simple and descriptive. A good title can
4+
help communicate what the KEP is and should be considered as part of any review.
5+
6+
The *filename* for the KEP should include the KEP number along with the title.
7+
The title should be lowercased and spaces/punctuation should be replaced with
8+
`-`. As the KEP is approved and an official KEP number is allocated, the file
9+
should be renamed.
10+
11+
To get started with this template:
12+
* Make a copy in the appropriate directory. Name it `draft-YYYYMMDD-my-title.md`.
13+
* Create a PR in the
14+
[`kubernetes/community`](https://github.com/kubernetes/community) repo.
15+
* Check in early. Do this once the document holds together and general
16+
direction is understood by many in the sponsoring SIG. View anything marked as
17+
a draft as a working document. Aim for single topic PRs to keep discussions
18+
focused. If you disagree with what is already in a document, open a new PR
19+
with suggested changes.
20+
* As a KEP is approved, rename the file yet again with the final KEP number.
21+
22+
The canonical place for the latest set of instructions (and the likely source of
23+
this file) is
24+
[here](https://github.com/kubernetes/community/blob/master/contributors/design-proposals/architecture/0000-kep-template.md).
25+
1226
## Metadata
1327

28+
The `Metadata` section is intended to support the creation of tooling around the
29+
KEP process. This will be a YAML section that is fenced as a code block.
30+
31+
See the KEP process for details on each of these items. This is here for easy
32+
copy/pasting.
33+
34+
TODO(jbeda): Do we want to move this to the front the doc with a delimiter
35+
(`---`) so it is easier to parse. Many static site generators use this and call
36+
it "front matter".
37+
38+
TODO(jbeda): Do we want to have a "people database" to reduce the amount of
39+
duplication on naming people here? This would be a simple map of github ID to
40+
name and contact info.
41+
42+
```yaml
43+
kep-number: draft-XXX
44+
title: My First KEP
45+
authors:
46+
- name: Jane Doe
47+
github: janedoe
48+
49+
owning-sig: sig-xxx
50+
participating-sigs:
51+
- sig-aaa
52+
- sig-bbb
53+
reviewers:
54+
- name: TBD
55+
# - name: Alice Doe
56+
# github: alicedoe
57+
58+
approvers:
59+
- name: TBD
60+
# - name: Oscar Doe
61+
# github: oscardoe
62+
63+
editor:
64+
name: TBD
65+
creation-date: yyyy-mm-dd
66+
last-updated: yyyy-mm-dd
67+
status: draft
68+
see-also:
69+
- KEP-1
70+
- KEP-2
71+
replaces:
72+
- KEP-3
73+
superseded-by:
74+
- KEP-100
75+
```
76+
1477
## Table of Contents
1578
16-
- [Title](#title)
17-
- [Metadata](#metadata)
18-
- [Table of Contents](#table-of-contents)
19-
- [Summary](#summary)
20-
- [Motivation](#motivation)
21-
- [Guide-level Explanation](#guide-level-explanation-optional)
22-
- [Reference-level explanation](#reference-level-explanation)
23-
- [Graduation Criteria](#graduation-criteria)
24-
- [Implementation History](#implementation-history)
25-
- [Drawbacks](#drawbacks-optional)
26-
- [Alternatives](#alternatives-optional)
27-
- [Unresolved Questions](#unresolved-questions-optional)
28-
- [Mentors](#mentors-optional)
79+
A table of contents is helpful for quickly jumping to sections of a KEP and for
80+
highlighting any addtional information provided beyond the standard KEP
81+
template. [Tools for generating][] a table of contents from markdown are
82+
available.
83+
84+
[Tools for generating]: https://github.com/ekalinin/github-markdown-toc
2985
3086
## Summary
3187
88+
The `Summary` section is incredibly important for producing high quality user
89+
focused documentation such as release notes or a development road map. It should
90+
be possible to collect this information before implementation begins in order
91+
to avoid requiring implementors to split their attention between writing
92+
release notes and implementing the feature itself. KEP editors, SIG Docs, and
93+
SIG PM should help to ensure that the tone and content of the `Summary` section
94+
is useful for a wide audience.
95+
96+
A good summary is probably at least a paragraph in length.
97+
3298
## Motivation
3399

100+
The `Motivation` section should describe
101+
102+
- why we believe this change is important
103+
- what benefits are expected to be realized from the change
104+
- the high level design goals
105+
106+
The `Motivation` section is important for getting all responsible parties to
107+
understand the intention behind a change. The motivation section can optionally
108+
provide links to [experience reports][] to demonstrate the interest in a KEP
109+
within the wider Kubernetes community.
110+
111+
[experience reports]: https://github.com/golang/go/wiki/ExperienceReports
112+
34113
## Guide-level Explanation [optional]
35114

115+
Merging a change to source control is a crucial, but not final, milestone in
116+
the implementation of a KEP. Enhancements need to be explained to the Kubernetes
117+
community. The `Guide-level Explaination` section should be used to explain a
118+
KEP to another Kubernaut after implementation. Excellent guidance can be
119+
found in the Rust RFC [guide-level explanation][] instructions.
120+
121+
122+
[guide-level explanation]: https://github.com/rust-lang/rfcs/blob/master/0000-template.md#guide-level-explanation
123+
124+
36125
## Reference-level explanation
37126

127+
Before submitting a detailed implementation plan, a KEP author might begin the
128+
`Reference-level Explaination` by sketching high level design goals and any
129+
mandatory requirements.
130+
131+
Communicating dependencies across multiple SIGs is an important use for KEPs.
132+
Explaining how a KEP interacts with other KEPs and existing Kubernetes
133+
functionality should be included in this section.
134+
135+
The `Reference-level explaination` section should ideally contain enough
136+
information for someone besides the author to begin working on an implementation
137+
of the KEP. In a similar manner to the guidance on [implementing an RFC][] from
138+
the Rust community, not all KEPs must be implemented immediately. Associating
139+
each KEP with one or more issues filed against Kubernetes repositories allows
140+
interested community members to track implementation.
141+
142+
Excellent guidance can be found in the Rust RFC [reference-level explanation][]
143+
instructions.
144+
145+
[reference-level explaination]: https://github.com/rust-lang/rfcs/blob/master/0000-template.md#reference-level-explanation
146+
147+
[implementing an RFC]: https://github.com/rust-lang/rfcs/blob/master/README.md#implementing-an-rfc
148+
38149
## Graduation Criteria
39150

151+
Gathering user feedback is crucial for building high quality experiences and
152+
SIGs have the important responsibility of setting milestones for stability
153+
and completeness. Hopefully the content previously contained in
154+
[umbrella issues][] will be tracked in the `Graduation Criteria` section.
155+
156+
[umbrella issues]: https://github.com/kubernetes/kubernetes/issues/42752
157+
158+
## Implementation History
159+
160+
Major milestones in the life cycle of a KEP should be tracked in
161+
`Implementation History`. Major milestones might include
162+
163+
- the `Summary` and `Motivation` sections being merged signaling SIG acceptance
164+
- the `Detailed Design` section being merged signaling agreement on a proposed
165+
design
166+
- the date implementation started
167+
- the first Kubernetes release where an initial version of the KEP was available
168+
- the version of Kubneretes where the KEP graduated to general availability
169+
- when the KEP was retired or superseded
170+
40171
## Drawbacks [optional]
41172

173+
Why should this KEP _not_ be implemented.
174+
42175
## Alternatives [optional]
43176

177+
Similar to the `Drawbacks` section the `Alternatives` section is used to
178+
highlight and record other possible approaches to delivering the value proposed
179+
by a KEP.
180+
44181
## Unresolved Questions [optional]
45182

183+
The `Unresolved Questions` section is used to parking lot issues not ready to be
184+
addressed before implementation begins.
185+
46186
## Mentors [optional]
187+
188+
Mentors who can help a community member implement a KEP which follows its
189+
`Detailed Design` are crucial to scaling the Kubernetes project. Potential
190+
mentors can list their contact information using their preferred contact
191+
information in the `Mentors` section.

Diff for: contributors/design-proposals/architecture/kubernetes-enhancement-proposal-process.md renamed to contributors/design-proposals/architecture/1-kubernetes-enhancement-proposal-process.md

+114-43
Original file line numberDiff line numberDiff line change
@@ -3,53 +3,50 @@
33
## Metadata
44
```
55
---
6-
metadata:
7-
number: 0001
8-
state: opened
9-
authors:
10-
- author:
11-
name: caleb miles
12-
github: @calebamiles
13-
slack: @calebamiles
14-
owners:
15-
- sig-release
16-
- sig-pm
17-
- sig-architecture
18-
- sig-testing
19-
- steering-committee
20-
links:
21-
issues:
22-
- [someIssueURL]()
23-
prs:
24-
- https://github.com/kubernetes/community/pull/967
25-
discussions:
26-
- https://groups.google.com/forum/#!topic/kubernetes-dev/65A-3ULYPB0
27-
- https://groups.google.com/forum/#!topic/kubernetes-sig-architecture/t-1EqeEoLPA
28-
documentation:
29-
- [someDocsLinkURL]()
30-
related:
31-
- [KEP template](https://github.com/kubernetes/community/pull/1124)
6+
kep-number: 1
7+
title: Kubernetes Enhancement Proposal Process
8+
authors:
9+
- name: Caleb Miles
10+
github: calebamiles
11+
slack: calebamiles
12+
- name: Joe Beda
13+
github: jbeda
14+
15+
slack: jbeda
16+
owning-sig: sig-architecture
17+
participating-sigs:
18+
- `kubernetes-wide`
19+
reviewers:
20+
- name: TBD
21+
approvers:
22+
- name: TBD
23+
editor:
24+
name: TBD
25+
creation-date: 2017-08-22
26+
status: draft
3227
```
3328

3429
## Table of Contents
3530

36-
- [Kubernetes Enhancement Proposal Process](#kubernetes-enhancement-proposal-process)
37-
- [Metadata](#metadata)
38-
- [Summary](#summary)
39-
- [Motivation](#motivation)
40-
- [Reference-level explanation](#reference-level-explanation)
41-
- [What type of work should be tracked by a KEP](#what-type-of-work-should-be-tracked-by-a-kep)
42-
- [KEP Template](#kep-template)
43-
- [KEP Workflow](#kep-workflow)
44-
- [Git and GitHub Implementation](#git-and-github-implementation)
45-
- [KEP Editor Role](#kep-editor-role)
46-
- [Important Metrics](#important-metrics)
47-
- [Prior Art](#prior-art)
48-
- [Graduation Criteria](#graduation-criteria)
49-
- [Drawbacks](#drawbacks)
50-
- [Alternatives](#alternatives)
51-
- [Unresolved Questions](#unresolved-questions)
52-
- [Mentors](#mentors)
31+
* [Kubernetes Enhancement Proposal Process](#kubernetes-enhancement-proposal-process)
32+
* [Metadata](#metadata)
33+
* [Table of Contents](#table-of-contents)
34+
* [Summary](#summary)
35+
* [Motivation](#motivation)
36+
* [Reference-level explanation](#reference-level-explanation)
37+
* [What type of work should be tracked by a KEP](#what-type-of-work-should-be-tracked-by-a-kep)
38+
* [KEP Template](#kep-template)
39+
* [KEP Metadata](#kep-metadata)
40+
* [KEP Workflow](#kep-workflow)
41+
* [Git and GitHub Implementation](#git-and-github-implementation)
42+
* [KEP Editor Role](#kep-editor-role)
43+
* [Important Metrics](#important-metrics)
44+
* [Prior Art](#prior-art)
45+
* [Graduation Criteria](#graduation-criteria)
46+
* [Drawbacks](#drawbacks)
47+
* [Alternatives](#alternatives)
48+
* [Unresolved Questions](#unresolved-questions)
49+
* [Mentors](#mentors)
5350

5451
## Summary
5552

@@ -158,8 +155,82 @@ The template for a KEP is precisely defined in the [template proposal][]
158155

159156
[template proposal]: https://github.com/kubernetes/community/pull/1124
160157

158+
### KEP Metadata
159+
160+
There is a place in each KEP for a YAML document that has standard metadata.
161+
This will be used to support tooling around filtering and display. It is also
162+
critical to clearly communicate the status of a KEP.
163+
164+
Metadata items:
165+
* **kep-number** Required
166+
* Each proposal has a number. This is to make all references to proposals as
167+
clear as possible. This is especially important as we create a network
168+
cross references between proposals.
169+
* Before having the `Approved` status, the number for the KEP will be in the
170+
form of `draft-YYYYMMDD`. The `YYYYMMDD` is replaced with the current date
171+
when first creating the KEP. The goal is to enable fast parallel merges of
172+
pre-acceptance KEPs.
173+
* On acceptance a sequential dense number will be assigned. This will be done
174+
by the editor and will be done in such a way as to minimize the chances of
175+
conficts. The final number for a KEP will have no prefix.
176+
* **title** Required
177+
* The title of the KEP in plain language. The title will also be used in the
178+
KEP filename. See the template for instructions and details.
179+
* **status** Required
180+
* The current state of the KEP.
181+
* Must be one of `Draft`, `Deferred`, `Approved`, `Rejected`, `Withdrawn`,
182+
`Final`, `Replaced`.
183+
* **authors** Required
184+
* A list of authors for the KEP. We require a name (which can be a psuedonym)
185+
along with a github ID. Other ways to contact the author is strongly
186+
encouraged. This is a list of maps. Subkeys of each item: `name`,
187+
`github`, `email` (optional), `slack` (optional).
188+
* **owning-sig** Required
189+
* The SIG that is most closely associated with this KEP. If there is code or
190+
other artifacts that will result from this KEP, then it is expected that
191+
this SIG will take responsiblity for the bulk of those artificats.
192+
* Sigs are listed as `sig-abc-def` where the name matches up with the
193+
directory in the `kubernetes/community` repo.
194+
* **participating-sigs** Optional
195+
* A list of SIGs that are involved or impacted by this KEP.
196+
* A special value of `kubernetes-wide` will indicate that this KEP has impact
197+
across the entire project.
198+
* **reviewers** Required
199+
* Reviewer(s) chosen after triage according to proposal process
200+
* If not yet chosen replace with `TBD`
201+
* Same name/contact scheme as `authors`
202+
* **approvers** Required
203+
* Approver(s) chosen after triage according to proposal process
204+
* If not yet chosen replace with `TBD`
205+
* Same name/contact scheme as `authors`
206+
* **editor** Required
207+
* Someone to keep things moving forward.
208+
* If not yet chosen replace with `TBD`
209+
* Same name/contact scheme as `authors`
210+
* **creation-date** Required
211+
* The date that the KEP was first submitted in a PR.
212+
* In the form `yyyy-mm-dd`
213+
* While this info will also be in source control, it is helpful to have the set of KEP files stand on their own.
214+
* **last-updated** Optional
215+
* The date that the KEP was last changed significantly.
216+
* In the form `yyyy-mm-dd`
217+
* **see-also** Optional
218+
* A list of other KEPs that are relevant to this KEP.
219+
* In the form `KEP-123`
220+
* **replaces** Optional
221+
* A list of KEPs that this KEP replaces. Those KEPs should list this KEP in
222+
their `superceded-by`.
223+
* In the form `KEP-123`
224+
* **superseded-by**
225+
* A list of KEPs that superced this KEP. Use of this should be paired with
226+
this KEP moving into the `Replaced` status.
227+
* In the form `KEP-123`
228+
229+
161230
### KEP Workflow
162231

232+
TODO(jbeda) Rationalize this with status entires in the Metadata above.
233+
163234
A KEP is proposed to have the following states
164235

165236
- **opened**: a new KEP has been filed but not triaged by the responsible SIG or

0 commit comments

Comments
 (0)