-
Notifications
You must be signed in to change notification settings - Fork 5.2k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add provisional KEP-1a: Meta KEP Implementation
Signed-off-by: Stephen Augustus <foo@agst.us>
- Loading branch information
1 parent
7f3692c
commit a988ac2
Showing
1 changed file
with
213 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,213 @@ | ||
--- | ||
kep-number: 1a | ||
title: Meta KEP Implementation | ||
authors: | ||
- "@justaugustus" | ||
- "@calebamiles" | ||
- "@jdumars" | ||
owning-sig: sig-pm | ||
participating-sigs: | ||
- sig-architecture | ||
reviewers: | ||
- "@idvoretskyi" | ||
- "@timothysc" | ||
approvers: | ||
- "@bgrant0607" | ||
- "@jbeda" | ||
editor: | ||
creation-date: 2018-09-08 | ||
last-updated: 2018-09-18 | ||
status: provisional | ||
see-also: | ||
- KEP-1 | ||
replaces: | ||
superseded-by: | ||
--- | ||
|
||
# Meta KEP Implementation | ||
|
||
## Table of Contents | ||
|
||
- [Table of Contents](#table-of-contents) | ||
- [Summary](#summary) | ||
- [Motivation](#motivation) | ||
- [Why another KEP?](#why-another-kep) | ||
- [Non-Goals](#non-goals) | ||
- [Proposal](#proposal) | ||
- [Implementation Details / Notes / Constraints](#implementation-details--notes--constraints) | ||
- [Define](#define) | ||
- [Organize](#organize) | ||
- [Visibility and Automation](#visibility-and-automation) | ||
- [Constraints](#constraints) | ||
- [Graduation Criteria](#graduation-criteria) | ||
- [Implementation History](#implementation-history) | ||
|
||
## Summary | ||
|
||
Drive KEP adoption through improved process, documentation, visibility, and automation. | ||
|
||
## Motivation | ||
|
||
The KEP process is the standardized structure for proposing changes to the Kubernetes project. | ||
|
||
In order to graduate KEPs to GA, we must iterate over the implementation details. | ||
|
||
This KEP seeks to define actionable / delegable items to move the process forward. | ||
|
||
Finally, by submitting a KEP, we gain an opportunity to dogfood the process and further identify areas for improvement. | ||
|
||
### Why another KEP? | ||
|
||
As [KEP-1] is currently de facto for the project, we must be careful to make changes to it in an iterative and atomic fashion. | ||
|
||
When proposing a KEP, we action over some unit of work, usually some area of code. | ||
|
||
In this instance, we treat [KEP-1] as the unit of work. That said, this would be considered a meta-KEP of the meta-KEP. | ||
|
||
### Non-Goals | ||
|
||
- API Review process | ||
- Feature request triage | ||
- Developer guide | ||
|
||
## Proposal | ||
|
||
### Implementation Details / Notes / Constraints | ||
|
||
#### Define | ||
|
||
- Refine existing KEP documentation | ||
- Define KEP [DACI] | ||
- Glossary of terms (enhancement, KEP, feature, etc.) | ||
- KEP Workflow | ||
- KEP states | ||
- Entry / exit criteria | ||
|
||
#### Organize | ||
|
||
- Move KEPs from flat-files to a directory structure: | ||
``` | ||
├── keps # top-level directory | ||
│ ├── sig-beard # SIG directory | ||
| | ├── 9000-beard-implementation-api # KEP directory | ||
| | | ├── kep.md (required) # KEP (multi-release work) | ||
| | | ├── experience_reports (required) # user feedback | ||
| | | │ ├── alpha-feedback.md | ||
| | | │ └── beta-feedback.md | ||
| | | ├── features # units of work that span approximately one release cycle | ||
| | | │ ├── feature-01.md | ||
| | | │ ├── ... | ||
| | | │ └── feature-n.md | ||
| | | ├── guides | ||
| | | | ├── guide-for-developers.md (required) | ||
| | | | ├── guide-for-teachers.md (required) | ||
| | | | ├── guide-for-operators.md (required) | ||
| | | | └── guide-for-project-maintainers.md | ||
| | | ├── index.json (required) # used for site generation e.g., Hugo | ||
| | | ├── metadata.yaml (required) # used for automation / project tracking | ||
| | └── └── OWNERS | ||
│ ├── sig-foo | ||
| ├── ... | ||
| └── sig-n | ||
``` | ||
|
||
metadata.yaml would contain information that was previously in a KEP's YAML front-matter: | ||
|
||
``` | ||
--- | ||
authors: # required | ||
- "calebamiles" # just a GitHub handle for now | ||
- "jbeda" | ||
title: "Kubernetes Enhancement Proposal process" | ||
number: 42 # required | ||
owning-sig: "sig-pm" # required | ||
participating-sigs: | ||
- "sig-architecture" | ||
- "sig-contributor-experience" | ||
approvers: # required | ||
- "bgrant0607" # just a GitHub handle for now | ||
reviewers: | ||
- "justaugustus" # just a GitHub handle for now | ||
- "jdumars" | ||
editors: | ||
- null # generally omit empty/null fields | ||
status: "active" # required | ||
github: | ||
issues: | ||
- null # GitHub url | ||
pull_requests: | ||
- null # GitHub url | ||
projects: | ||
- project_id: null | ||
card_id: null | ||
releases: # required | ||
- k8s_version: v1.9 | ||
kep_status: "active" | ||
k8s_status: "alpha" # one of alpha|beta|GA | ||
- k8s_version: v1.10 | ||
kep_status: "active" | ||
k8s_status: "alpha" | ||
replaces: | ||
- kep_location: null | ||
superseded-by: | ||
- kep_location: null | ||
created: 2018-01-22 # in YYYY-MM-DD | ||
updated: 2018-09-04 | ||
``` | ||
|
||
- Move existing KEPs into [k/features] | ||
- Create a `kind/kep` label for [k/community] and [k/features] | ||
- For `k/community`: | ||
- Label incoming KEPs as `kind/kep` | ||
- Enable searches of `org:kubernetes label:kind/kep`, so we can identify active PRs to `k/community` and reroute the PR authors to `k/enhancements` (depending on the state) | ||
- For `k/enhancements` (fka `k/features`): | ||
- Label incoming KEPs as `kind/kep` | ||
- Classify KEP submissions / tracking issues as `kind/kep`, differentiating them from `kind/feature` | ||
- Move existing design proposals into [k/features] | ||
- Move existing architectural documents into [k/features] (process TBD) | ||
- Deprecate design proposals | ||
- Rename [k/features] to [k/enhancements] | ||
- Create tombstones / redirects to [k/enhancements] | ||
- Prevent new KEPs and design proposals from landing in [k/community] | ||
- Remove `kind/kep` from [k/community] once KEP migration is complete | ||
- Correlate existing Feature tracking issues with links to KEPs | ||
- Fix [KEP numbering races] by using the GitHub issue number of the KEP tracking issue | ||
- Coordination of existing KEPs to use new directory structure (with SIG PM guidance per SIG) | ||
|
||
#### Visibility and Automation | ||
|
||
- Create tooling to present: | ||
- KEPs, through some easy to use mechanism e.g., https://enhancements.k8s.io | ||
- Project tracking across SIGs | ||
|
||
#### Constraints | ||
|
||
- Preserve git history | ||
- Preserve issues | ||
- Preserve PRs | ||
|
||
## Graduation Criteria | ||
|
||
Throughout implementation, we will be reaching out across the project to SIG leadership, approvers, and reviewers to capture feedback. | ||
|
||
While graduation criteria has not strictly been defined at this stage, we will define it in future updates to this KEP. | ||
|
||
## Implementation History | ||
|
||
- 2018-08-20: (@timothysc) Issue filed about repo separation: https://github.com/kubernetes/community/issues/2565 | ||
- 2018-08-30: SIG Architecture meeting mentioning the need for a clearer KEP process - https://youtu.be/MMJ-zAR_GbI | ||
- 2018-09-06: SIG Architecture meeting agreeing to move forward with a KEP process improvement effort to be co-led with SIG PM (@justaugustus / @jdumars) - https://youtu.be/fmlXkN4DJy0 | ||
- 2018-09-10: KEP-1a submitted for review | ||
- YYYY-MM-DD: the `Summary` and `Motivation` sections being merged signaling SIG acceptance | ||
- YYYY-MM-DD: the `Proposal` section being merged signaling agreement on a proposed design | ||
- YYYY-MM-DD: the date implementation started | ||
- YYYY-MM-DD: the first Kubernetes release where an initial version of the KEP was available | ||
- YYYY-MM-DD: the version of Kubernetes where the KEP graduated to general availability | ||
|
||
|
||
[DACI]: https://www.atlassian.com/team-playbook/plays/daci | ||
[KEP-1]: 0001-kubernetes-enhancement-proposal-process.md | ||
[KEP numbering races]: https://github.com/kubernetes/community/issues/2245 | ||
[k/community]: http://git.k8s.io/community | ||
[k/enhancements]: http://git.k8s.io/enhancements | ||
[k/features]: http://git.k8s.io/features |