|
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 |
| - |
10 | 1 | # Title
|
11 | 2 |
|
| 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 | + |
12 | 26 | ## Metadata
|
13 | 27 |
|
| 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 | +
|
14 | 77 | ## Table of Contents
|
15 | 78 |
|
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 |
29 | 85 |
|
30 | 86 | ## Summary
|
31 | 87 |
|
| 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 | + |
32 | 98 | ## Motivation
|
33 | 99 |
|
| 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 | + |
34 | 113 | ## Guide-level Explanation [optional]
|
35 | 114 |
|
| 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 | + |
36 | 125 | ## Reference-level explanation
|
37 | 126 |
|
| 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 | + |
38 | 149 | ## Graduation Criteria
|
39 | 150 |
|
| 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 | + |
40 | 171 | ## Drawbacks [optional]
|
41 | 172 |
|
| 173 | +Why should this KEP _not_ be implemented. |
| 174 | + |
42 | 175 | ## Alternatives [optional]
|
43 | 176 |
|
| 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 | + |
44 | 181 | ## Unresolved Questions [optional]
|
45 | 182 |
|
| 183 | +The `Unresolved Questions` section is used to parking lot issues not ready to be |
| 184 | +addressed before implementation begins. |
| 185 | + |
46 | 186 | ## 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. |
0 commit comments