Skip to content

Commit 3d72a4f

Browse files
authored
Merge pull request kubernetes#2 from derekwaynecarr/templates
Add initial enhancement templates
2 parents 0142e3c + 881dbb7 commit 3d72a4f

File tree

3 files changed

+332
-0
lines changed

3 files changed

+332
-0
lines changed

README.md

+69
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
# Enhancements Tracking and Backlog
2+
3+
Enhancement tracking repository for OKD.
4+
5+
Inspired by [Kubernetes
6+
enhancements](https://github.com/kubernetes/enhancements) process.
7+
8+
This repository provides a rally point to discuss, debate, and reach consensus
9+
for how OKD [enhancements](./enhancements) are introduced. OKD combines
10+
Kubernetes container orchestration services with a broad set of ecosystem
11+
components in order to provide an enterprise ready Kubernetes distribution built
12+
for extension. OKD assembles innovation across a wide array of repositories and
13+
upstream communities. Given the breadth of the distribution, it is useful to
14+
have a centralized place to describe OKD enhancements via an actionable design
15+
proposal.
16+
17+
Enhancements may take multiple releases to ultimately complete. Enhancements
18+
may be filed from anyone in the community, but require consensus from domain
19+
specific project maintainers in order to implement and accept into the release.
20+
21+
## Is My Thing an Enhancement?
22+
23+
A rough heuristic for an enhancement is anything that:
24+
25+
- impacts how a cluster is operated
26+
- impacts upgrade/downgrade
27+
- needs significant effort to complete
28+
- requires consensus/code across multiple domains/repositories
29+
- has phases of maturity (Dev Preview, Tech Preview, GA)
30+
- demands formal documentation to utilize
31+
32+
It is unlikely to require an enhancement if it:
33+
34+
- fixes a bug
35+
- adds more testing
36+
- internally refactors a code or component only visible to that components
37+
domain
38+
- minimal impact to distribution as a whole
39+
40+
If you are not sure if the proposed work requires an enhancement, file an issue
41+
and ask!
42+
43+
## When to Create a New Enhancement
44+
45+
Create an enhancement here once you:
46+
47+
- have circulated your idea to see if there is interest
48+
- (optionally) have done a prototype in your own fork
49+
- have identified people who agree to work on and maintain the enhancement
50+
- many enhancements will take several releases to complete
51+
52+
## Why are Enhancements Tracked
53+
54+
As the project evolves, its important that the OKD community understands how we
55+
build, test, and document our work. Individually it is hard to understand how
56+
all parts of the system interact, but as a community we can lean on each other
57+
to build the right design and approach before getting too deep into an
58+
implementation.
59+
60+
## When to Comment on an Enhancement Issue
61+
62+
Please comment on the enhancement issue to:
63+
- request a review or clarification on the process
64+
- update status of the enhancement effort
65+
- link to relevant issues in other repos
66+
67+
Please do not comment on the enhancement issue to:
68+
- discuss a detail of the design, code or docs. Use a linked-to-issue or PR
69+
design for that

enhancements/README.md

+39
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
# OKD Enhancement Proposals
2+
3+
An OKD Enhancement Proposal is a way to propose, communicate, and coordinate on
4+
new efforts for the OKD project.
5+
6+
It is inspired from our experience with the Kubernetes Enhancement process where
7+
many of our community participants collaborate each day.
8+
9+
This process is evolving, but is mandatory for all enhancements beginning with
10+
release-4.3.
11+
12+
## Quick start
13+
14+
1. Socialize an idea with others. Make sure others think the work is worth
15+
doing, and are willing to review design and code changes required.
16+
2. Follow the process outlined in the [enhancement
17+
template](enhancement-template.md)
18+
19+
## FAQs
20+
21+
### Do I have to use the process?
22+
23+
If the enhancement has broad scope, yes. It helps everyone track why, when,
24+
how, and by whom work is done.
25+
26+
### Why would I want to use the process?
27+
28+
Provide a mechanism to communicate design and implementation strategies across
29+
the OKD community.
30+
31+
### Do I put design in a particular directory?
32+
33+
If it has broad impact, place it in the root of this directory. If it's
34+
localized to a particular domain, find the appropriate directory.
35+
36+
### My FAQ isn't answered here!
37+
38+
Open an issue and ask or even better open a PR with a question and proposed
39+
answer.

enhancements/enhancements-template.md

+224
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,224 @@
1+
---
2+
title: Neat-Enhancement-Idea
3+
authors:
4+
- "@janedoe"
5+
reviewers:
6+
- TBD
7+
- "@alicedoe"
8+
approvers:
9+
- TBD
10+
- "@oscardoe"
11+
creation-date: yyyy-mm-dd
12+
last-updated: yyyy-mm-dd
13+
status: provisional|implementable|implemented|deferred|rejected|withdrawn|replaced
14+
see-also:
15+
- "/enhancements/this-other-neat-thing.md"
16+
replaces:
17+
- "/enhancements/that-less-than-great-idea.md"
18+
superseded-by:
19+
- "/enhancements/our-past-effort.md"
20+
---
21+
22+
# Title
23+
24+
This is the title of the enhancement. Keep it simple and descriptive. A good
25+
title can help communicate what the enhancement is and should be considered as
26+
part of any review.
27+
28+
The title should be lowercased and spaces/punctuation should be replaced with
29+
`-`.
30+
31+
To get started with this template:
32+
1. **Pick a domain.** Find the appropriate domain to discuss your enhancement.
33+
1. **Make a copy of this template.** Copy this template into the directory for
34+
the domain.
35+
1. **Fill out the "overview" sections.** This includes the Summary and
36+
Motivation sections. These should be easy and explain why the community
37+
should desire this enhancement.
38+
1. **Create a PR.** Assign it to folks with expertise in that domain to help
39+
sponsor the process.
40+
1. **Merge at each milestone.** Merge when the design is able to transition to a
41+
new status (provisional, implementable, implemented, etc.). View anything
42+
marked as `provisional` as an idea worth exploring in the future, but not
43+
accepted as ready to execute. Anything marked as `implementable` should
44+
clearly communicate how an enhancement is coded up and delivered. If an
45+
enhancement describes a new deployment topology or platform, include a
46+
logical description for the deployment, and how it handles the unique aspects
47+
of the platform. Aim for single topic PRs to keep discussions focused. If you
48+
disagree with what is already in a document, open a new PR with suggested
49+
changes.
50+
51+
The `Metadata` section above is intended to support the creation of tooling
52+
around the enhancement process.
53+
54+
## Release Signoff Checklist
55+
56+
- [ ] Enhancement is `implementable`
57+
- [ ] Design details are appropriately documented from clear requirements
58+
- [ ] Test plan is defined
59+
- [ ] Graduation criteria for dev preview, tech preview, GA
60+
- [ ] User-facing documentation is created in [openshift/docs]
61+
62+
## Summary
63+
64+
The `Summary` section is incredibly important for producing high quality
65+
user-focused documentation such as release notes or a development roadmap. It
66+
should be possible to collect this information before implementation begins in
67+
order to avoid requiring implementors to split their attention between writing
68+
release notes and implementing the feature itself.
69+
70+
A good summary is probably at least a paragraph in length.
71+
72+
## Motivation
73+
74+
This section is for explicitly listing the motivation, goals and non-goals of
75+
this proposal. Describe why the change is important and the benefits to users.
76+
77+
### Goals
78+
79+
List the specific goals of the proposal. How will we know that this has succeeded?
80+
81+
### Non-Goals
82+
83+
What is out of scope for this proposal? Listing non-goals helps to focus discussion
84+
and make progress.
85+
86+
## Proposal
87+
88+
This is where we get down to the nitty gritty of what the proposal actually is.
89+
90+
### User Stories [optional]
91+
92+
Detail the things that people will be able to do if this is implemented.
93+
Include as much detail as possible so that people can understand the "how" of
94+
the system. The goal here is to make this feel real for users without getting
95+
bogged down.
96+
97+
#### Story 1
98+
99+
#### Story 2
100+
101+
### Implementation Details/Notes/Constraints [optional]
102+
103+
What are the caveats to the implementation? What are some important details that
104+
didn't come across above. Go in to as much detail as necessary here. This might
105+
be a good place to talk about core concepts and how they releate.
106+
107+
### Risks and Mitigations
108+
109+
What are the risks of this proposal and how do we mitigate. Think broadly. For
110+
example, consider both security and how this will impact the larger OKD
111+
ecosystem.
112+
113+
How will security be reviewed and by whom? How will UX be reviewed and by whom?
114+
115+
Consider including folks that also work outside your immediate sub-project.
116+
117+
## Design Details
118+
119+
### Test Plan
120+
121+
**Note:** *Section not required until targeted at a release.*
122+
123+
Consider the following in developing a test plan for this enhancement:
124+
- Will there be e2e and integration tests, in addition to unit tests?
125+
- How will it be tested in isolation vs with other components?
126+
127+
No need to outline all of the test cases, just the general strategy. Anything
128+
that would count as tricky in the implementation and anything particularly
129+
challenging to test should be called out.
130+
131+
All code is expected to have adequate tests (eventually with coverage
132+
expectations).
133+
134+
### Graduation Criteria
135+
136+
**Note:** *Section not required until targeted at a release.*
137+
138+
Define graduation milestones.
139+
140+
These may be defined in terms of API maturity, or as something else. Initial proposal
141+
should keep this high-level with a focus on what signals will be looked at to
142+
determine graduation.
143+
144+
Consider the following in developing the graduation criteria for this
145+
enhancement:
146+
- Maturity levels - `Dev Preview`, `Tech Preview`, `GA`
147+
- Deprecation
148+
149+
Clearly define what graduation means.
150+
151+
#### Examples
152+
153+
These are generalized examples to consider, in addition to the aforementioned
154+
[maturity levels][maturity-levels].
155+
156+
##### Dev Preview -> Tech Preview
157+
158+
- Ability to utilize the enhancement end to end
159+
- End user documentation, relative API stability
160+
- Sufficient test coverage
161+
- Gather feedback from users rather than just developers
162+
163+
##### Tech Preview -> GA
164+
165+
- More testing (upgrade, downgrade, scale)
166+
- Sufficient time for feedback
167+
- Available by default
168+
169+
**For non-optional features moving to GA, the graduation criteria must include
170+
end to end tests.**
171+
172+
##### Removing a deprecated feature
173+
174+
- Announce deprecation and support policy of the existing feature
175+
- Deprecate the feature
176+
177+
### Upgrade / Downgrade Strategy
178+
179+
If applicable, how will the component be upgraded and downgraded? Make sure this
180+
is in the test plan.
181+
182+
Consider the following in developing an upgrade/downgrade strategy for this
183+
enhancement:
184+
- What changes (in invocations, configurations, API use, etc.) is an existing
185+
cluster required to make on upgrade in order to keep previous behavior?
186+
- What changes (in invocations, configurations, API use, etc.) is an existing
187+
cluster required to make on upgrade in order to make use of the enhancement?
188+
189+
### Version Skew Strategy
190+
191+
How will the component handle version skew with other components?
192+
What are the guarantees? Make sure this is in the test plan.
193+
194+
Consider the following in developing a version skew strategy for this
195+
enhancement:
196+
- During an upgrade, we will always have skew among components, how will this impact your work?
197+
- Does this enhancement involve coordinating behavior in the control plane and
198+
in the kubelet? How does an n-2 kubelet without this feature available behave
199+
when this feature is used?
200+
- Will any other components on the node change? For example, changes to CSI, CRI
201+
or CNI may require updating that component before the kubelet.
202+
203+
## Implementation History
204+
205+
Major milestones in the life cycle of a proposal should be tracked in `Implementation
206+
History`.
207+
208+
## Drawbacks
209+
210+
The idea is to find the best form of an argument why this enhancement should _not_ be implemented.
211+
212+
## Alternatives
213+
214+
Similar to the `Drawbacks` section the `Alternatives` section is used to
215+
highlight and record other possible approaches to delivering the value proposed
216+
by an enhancement.
217+
218+
## Infrastructure Needed [optional]
219+
220+
Use this section if you need things from the project. Examples include a new
221+
subproject, repos requested, github details, and/or testing infrastructure.
222+
223+
Listing these here allows the community to get the process for these resources
224+
started right away.

0 commit comments

Comments
 (0)