diff options
| author | caleb miles <caleb.miles@coreos.com> | 2017-08-31 16:34:45 -0700 |
|---|---|---|
| committer | caleb miles <caselim@gmail.com> | 2017-09-26 01:09:17 -0700 |
| commit | e99752b8f06125ce5b9dbc6e7eba4f108ab9f32a (patch) | |
| tree | cf1b1b083a917893b7611f92cec6d28489c13fb6 | |
| parent | 2920f3430d8df517655ca9c79a89f4eb8922768e (diff) | |
Creates template for a KEP
| -rw-r--r-- | contributors/design-proposals/kep-template.md | 244 |
1 files changed, 244 insertions, 0 deletions
diff --git a/contributors/design-proposals/kep-template.md b/contributors/design-proposals/kep-template.md new file mode 100644 index 00000000..2f9c3c81 --- /dev/null +++ b/contributors/design-proposals/kep-template.md @@ -0,0 +1,244 @@ +# KEP Template + +## Metadata + +## Table of Contents + +- [KEP Template](#kep-template) + - [Metadata](#metadata) + - [Summary](#summary) + - [Motivation](#motivation) + - [Examples](#examples) + - [Detailed Design](#detailed-design) + - [How Do I Teach This?](#how-do-i-teach-this) + - [KEP Template](#kep-template-1) + - [Section: Metadata](#section-metadata) + - [Section: Table of contents](#section-table-of-contents) + - [Section: Summary](#section-summary) + - [Section: Motivation](#section-motivation) + - [Section: Examples](#section-examples) + - [Section: How Do I Teach This?](#section-how-do-i-teach-this) + - [Section: Detailed Design](#section-detailed-design) + - [Section: Graduation Criteria](#section-graduation-criteria) + - [Section: Implementation History](#section-implementation-history) + - [Section: Drawbacks](#section-drawbacks) + - [Section: Alternatives](#section-alternatives) + - [Section: Unresolved Questions](#section-unresolved-questions) + - [Section: Mentors](#section-mentors) + - [Graduation Criteria](#graduation-criteria) + - [Drawbacks](#drawbacks) + - [Alternatives](#alternatives) + - [Unresolved Questions](#unresolved-questions) + - [Mentors](#mentors) + +## Summary + +The KEP template combines our design proposals with functionality currently +provided by the [features repo][] within a flat file in source control. SIGs +will adopt and fork the KEP template to support their specific needs. + +[features repo]: https://github.com/kubernetes/features + +## Motivation + +A template for a unit of work described in a [proposal to standardize][] the +Kubernetes development process is provided. + +[proposal to standardize]: https://github.com/kubernetes/community/pull/967 + +## Examples + +- [this KEP][] +- [the KEP process][] + +[this KEP]: https://github.com/calebamiles/community/blob/propose-kep-template/contributors/design-proposals/kep-template.md +[the KEP process]: https://github.com/kubernetes/community/pull/967 + +## Detailed Design + +## How Do I Teach This? + +[The KEP process][] proposal will outline how a KEP is expected to progress +from conception to implementation in one or more pull requests to a Kubernetes +repository. This suggests that a KEP template should be used to track work +which ultimately will result in change to source control; if you find success +in modifying the KEP template please notify the [mentors](#mentors)! + +### KEP Template + +In order to implement an KEP like process the following template will be created + +``` +# Title +## Metadata +## Table of Contents +## Summary +## Motivation +## Examples [optional] +## How Do I Teach This? [optional] +## Detailed Design +## Graduation Criteria +## Implementation History +## Drawbacks [optional] +## Alternatives [optional] +## Unresolved Questions [optional] +## Mentors [optional] +``` + +where sections marked `[optional]` may be omitted by KEP authors. It is expected +that most KEPs will begin their lives in discussion with the responsible SIGs, +preferably in a mailing list so that the discussion is saved for future Kubernauts. + + +### Section: Metadata + +The `Metadata` section is intended to support the creation of tooling around the +KEP process. The precise format for `Metadata` is described in the +[metadata proposal][]. + +[metadata proposal]: https://docs.google.com/document/d/1ynmBMuDuT7yGzRscObB1KtgJj8ljYq0I5q4oshrJUCs/edit# + +### Section: Table of contents + +A table of contents is helpful for quickly jumping to sections of a KEP and for +highlighting any addtional information provided beyond the standard KEP +template. [Tools for generating][] a table of contents from markdown are +available. + +[Tools for generating]: https://github.com/ekalinin/github-markdown-toc + + +### Section: Summary + +The `Summary` section is incredibly important for producing high quality user +focused documentation such as release notes or a development road map. It should +be possible to collect this information before implementation begins in order +to avoid requiring implementors to split their attention between writing +release notes and implementing the feature itself. KEP editors, SIG Docs, and +SIG PM should help to ensure that the tone and content of the `Summary` section +is useful for a wide audience. + +### Section: Motivation + +The `Motivation` section should describe + +- why we believe this change is important +- what benefits are expected to be realized from the change +- the high level design goals + +The `Motivation` section is important for getting all responsible parties to +understand the intention behind a change. The motivation section can optionally +provide links to [experience reports][] to demonstrate the interest in a KEP +within the wider Kubernetes community. + +[experience reports]: https://github.com/golang/go/wiki/ExperienceReports + +### Section: Examples + +The `Examples` section should describe the intended user experience for an +KEP. + +### Section: How Do I Teach This? + +### Section: Detailed Design + +The `Detailed Design` section should contain enough information for someone +besides the author to begin working on an implementation of the KEP. In a +similar manner to the guidance on [implementing an RFC][] from the Rust +community, not all KEPs must be implemented immediately. A high quality +`Detailed Design` section will enable any interested contributor to begin +implementation. Associating each KEP with one or more issues filed against +Kubernetes repositories will allow interested community members to track +implementation. + +[implementing an RFC]: https://github.com/rust-lang/rfcs/blob/master/README.md#implementing-an-rfc + +### Section: Graduation Criteria + +Software development provides a unique opportunity for an iterative approach to +value delivery. Gathering user feedback is crucial for building high quality +experiences and SIGs have the important responsibility of setting milestones +for stability and feature completeness. Hopefully the content previously +contained in [umbrella issues][] will be tracked in the `Graduation Criteria` +section. + +[umbrella issues]: https://github.com/kubernetes/kubernetes/issues/42752 + +### Section: Implementation History + +Major milestones in the life cycle of a KEP should be tracked in +`Implementation History`. Major milestones might include + +- the `Summary` and `Motivation` sections being merged signaling SIG acceptance +- the `Detailed Design` section being merged signaling agreement on a proposed + design +- the date implementation started +- the first Kubernetes release where an initial version of the KEP was available +- the version of Kubneretes where the KEP graduated to general availability +- when the KEP was retired or superseded + +### Section: Drawbacks + +Making trade offs is one of the fundamental tasks of software development. The +`Drawbacks` section is to record what explicit choices have been made in the +design for a KEP. + +### Section: Alternatives + +Similar to the `Drawbacks` section the `Alternatives` section is used to +highlight and record other possible approaches to delivering the value proposed +by a KEP. + +### Section: Unresolved Questions + +The `Unresolved Questions` section is used to parking lot issues not ready to be +addressed before implementation begins. + +### Section: Mentors + +Mentors who can help a community member implement a KEP which follows its +`Detailed Design` are crucial to scaling the Kubernetes project. Potential +mentors can list their contact information using their preferred contact +information in the `Mentors` section. + +## Graduation Criteria + +The first revision of the KEP template will be considered stable once + +- SIGs adopt the KEP process and template or fork the template +- the KEP process has been used for at least two Kubernetes releases + +## Drawbacks + +- having many possible sections in a KEP may feel too much like the waterfall + approach to software development + +## Alternatives + +The KEP template is similar to the API proposal [design template][] but is +slightly more general given that it targets the subset of information likely +required for any significant change. Additionally + +- The `Overview subsequent versions` has been replaced with the + `Graduation Criteria` section of a KEP. It is intended that graduation + criteria are added incrementally as a KEP is implemented and stabilized +- The `Motivation` and `Use Cases` sections have been collapsed within + the `Motivation` section of a KEP. It is expected that experience reports + will be the primary description of use cases +- `Requirements` is replaced by `Detailed Design` within a KEP + +[design template]: https://github.com/pwittrock/community/blob/design/contributors/design-proposals/api-proposal-design-template.md + +## Unresolved Questions + +- How precisely merging portions of a KEP relate to the states of a KEP +- Formal mechanism for adopting the KEP process and template +- Automation + +## Mentors + +- caleb miles + - github: [calebamiles](https://github.com/calebamiles/) + - slack: [calebamiles](https://coreos.slack.com/team/caleb.miles) + - email: [caleb.miles@coreos.com](mailto:caleb.miles@coreos.com) + - pronoun: "he" |
