Skip to content

Commit fcc715d

Browse files
Add new template for proposals and update the old ones with their current status.
Update the template in order to use the OCP one. Update the status for the current one and add the ref links
1 parent a3645e3 commit fcc715d

12 files changed

+340
-59
lines changed

doc/proposals/TEMPLATE.md

Lines changed: 216 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,229 @@
1-
# <Title of Proposal>
1+
---
2+
title: Neat-proposals-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+
- "/proposals/this-other-neat-thing.md"
16+
replaces:
17+
- "/proposals/that-less-than-great-idea.md"
18+
superseded-by:
19+
- "/proposals/our-past-effort.md"
20+
---
221

3-
Implementation Owner: < github username >
4-
Status: Draft
22+
# Title
523

6-
[Background](#Background)
7-
[Goals](#Goals)
8-
[Design overview](#Design_overview)
9-
[User facing usage](#User_facing_usage)
10-
[Observations and open questions](#Observations_and_open_questions)
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.
1127

12-
## Background
28+
To get started with this template:
29+
1. **Pick a domain.** Find the appropriate domain to discuss your enhancement.
30+
1. **Make a copy of this template.** Copy this template into the directory for
31+
the domain.
32+
1. **Fill out the "overview" sections.** This includes the Summary and
33+
Motivation sections. These should be easy and explain why the community
34+
should desire this enhancement.
35+
1. **Create a PR.** Assign it to folks with expertise in that domain to help
36+
sponsor the process.
37+
1. **Merge at each milestone.** Merge when the design is able to transition to a
38+
new status (provisional, implementable, implemented, etc.). View anything
39+
marked as `provisional` as an idea worth exploring in the future, but not
40+
accepted as ready to execute. Anything marked as `implementable` should
41+
clearly communicate how an enhancement is coded up and delivered. If an
42+
enhancement describes a new deployment topology or platform, include a
43+
logical description for the deployment, and how it handles the unique aspects
44+
of the platform. Aim for single topic PRs to keep discussions focused. If you
45+
disagree with what is already in a document, open a new PR with suggested
46+
changes.
1347

14-
< A paragraph or two on the background problem or missing feature on why this is needed. >
48+
The `Metadata` section above is intended to support the creation of tooling
49+
around the enhancement process.
50+
51+
## Release Signoff Checklist
52+
53+
- \[ \] Enhancement is `implementable`
54+
- \[ \] Design details are appropriately documented from clear requirements
55+
- \[ \] Test plan is defined
56+
- \[ \] Graduation criteria for dev preview, tech preview, GA
57+
- \[ \] User-facing documentation is created in [operator-sdk/doc][operator-sdk-doc]
58+
59+
## Open Questions (optional)
60+
61+
This is where to call out areas of the design that require closure before deciding
62+
to implement the design. For instance,
63+
> 1. This requires exposing previously private resources which contain sensitive
64+
information. Can we do this?
65+
66+
## Summary
67+
68+
The `Summary` section is incredibly important for producing high quality
69+
user-focused documentation such as release notes or a development roadmap. It
70+
should be possible to collect this information before implementation begins in
71+
order to avoid requiring implementors to split their attention between writing
72+
release notes and implementing the feature itself.
73+
74+
A good summary is probably at least a paragraph in length.
75+
76+
## Motivation
77+
78+
This section is for explicitly listing the motivation, goals and non-goals of
79+
this proposal. Describe why the change is important and the benefits to users.
1580

1681
## Goals
1782

18-
< Short list of goals of this proposal >
83+
List the specific goals of the proposal. How will we know that this has succeeded?
84+
85+
### Non-Goals
86+
87+
What is out of scope for this proposal? Listing non-goals helps to focus discussion
88+
and make progress.
89+
90+
## Proposal
91+
92+
This is where we get down to the nitty gritty of what the proposal actually is.
93+
94+
### User Stories (optional)
95+
96+
Detail the things that people will be able to do if this is implemented.
97+
Include as much detail as possible so that people can understand the "how" of
98+
the system. The goal here is to make this feel real for users without getting
99+
bogged down.
100+
101+
#### Story 1
102+
103+
#### Story 2
104+
105+
### Implementation Details/Notes/Constraints (optional)
106+
107+
What are the caveats to the implementation? What are some important details that
108+
didn't come across above. Go in to as much detail as necessary here. This might
109+
be a good place to talk about core concepts and how they releate.
110+
111+
### Risks and Mitigations
112+
113+
What are the risks of this proposal and how do we mitigate. Think broadly. For
114+
example, consider both security and how this will impact the larger OKD
115+
ecosystem.
116+
117+
How will security be reviewed and by whom? How will UX be reviewed and by whom?
118+
119+
Consider including folks that also work outside your immediate sub-project.
120+
121+
## Design Details
122+
123+
### Test Plan
124+
125+
**Note:** *Section not required until targeted at a release.*
126+
127+
Consider the following in developing a test plan for this enhancement:
128+
- Will there be e2e and integration tests, in addition to unit tests?
129+
- How will it be tested in isolation vs with other components?
130+
131+
No need to outline all of the test cases, just the general strategy. Anything
132+
that would count as tricky in the implementation and anything particularly
133+
challenging to test should be called out.
134+
135+
All code is expected to have adequate tests (eventually with coverage
136+
expectations).
137+
138+
### Graduation Criteria
139+
140+
**Note:** *Section not required until targeted at a release.*
141+
142+
Define graduation milestones.
143+
144+
These may be defined in terms of API maturity, or as something else. Initial proposal
145+
should keep this high-level with a focus on what signals will be looked at to
146+
determine graduation.
147+
148+
Consider the following in developing the graduation criteria for this
149+
enhancement:
150+
- Maturity levels - `Dev Preview`, `Tech Preview`, `GA`
151+
- Deprecation
152+
153+
Clearly define what graduation means.
154+
155+
#### Examples
156+
157+
These are generalized examples to consider, in addition to the aforementioned maturity levels(`Dev Preview`, `Tech Preview`, `GA`).
158+
159+
##### Dev Preview -> Tech Preview
160+
161+
- Ability to utilize the enhancement end to end
162+
- End user documentation, relative API stability
163+
- Sufficient test coverage
164+
- Gather feedback from users rather than just developers
165+
166+
##### Tech Preview -> GA
167+
168+
- More testing (upgrade, downgrade, scale)
169+
- Sufficient time for feedback
170+
- Available by default
171+
172+
**For non-optional features moving to GA, the graduation criteria must include
173+
end to end tests.**
174+
175+
##### Removing a deprecated feature
176+
177+
- Announce deprecation and support policy of the existing feature
178+
- Deprecate the feature
179+
180+
### Upgrade / Downgrade Strategy
181+
182+
If applicable, how will the component be upgraded and downgraded? Make sure this
183+
is in the test plan.
184+
185+
Consider the following in developing an upgrade/downgrade strategy for this
186+
enhancement:
187+
- What changes (in invocations, configurations, API use, etc.) is an existing
188+
cluster required to make on upgrade in order to keep previous behavior?
189+
- What changes (in invocations, configurations, API use, etc.) is an existing
190+
cluster required to make on upgrade in order to make use of the enhancement?
191+
192+
### Version Skew Strategy
193+
194+
How will the component handle version skew with other components?
195+
What are the guarantees? Make sure this is in the test plan.
196+
197+
Consider the following in developing a version skew strategy for this
198+
enhancement:
199+
- During an upgrade, we will always have skew among components, how will this impact your work?
200+
- Does this enhancement involve coordinating behavior in the control plane and
201+
in the kubelet? How does an n-2 kubelet without this feature available behave
202+
when this feature is used?
203+
- Will any other components on the node change? For example, changes to CSI, CRI
204+
or CNI may require updating that component before the kubelet.
205+
206+
## Implementation History
207+
208+
Major milestones in the life cycle of a proposal should be tracked in `Implementation
209+
History`.
210+
211+
## Drawbacks
212+
213+
The idea is to find the best form of an argument why this enhancement should _not_ be implemented.
19214

20-
## Design overview
215+
## Alternatives
21216

22-
< Design of how the proposal architecture implementation would look like. >
217+
Similar to the `Drawbacks` section the `Alternatives` section is used to
218+
highlight and record other possible approaches to delivering the value proposed
219+
by an enhancement.
23220

24-
## User facing usage (if needed)
221+
## Infrastructure Needed (optional)
25222

26-
< If the user needs to interact with this feature, how would it look like from their point of view. >
223+
Use this section if you need things from the project. Examples include a new
224+
subproject, repos requested, github details, and/or testing infrastructure.
27225

28-
## Observations and open questions
226+
Listing these here allows the community to get the process for these resources
227+
started right away.
29228

30-
< Any open questions that need solving or implementation details should go here. These can be removed at the end of the proposal if they are resolved. >
229+
[operator-sdk-doc]: ../../doc

doc/proposals/ansible-operator-status.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
11
# Ansible-based Operator Status Proposal for Operator SDK
22

3-
> Status: **completed**
3+
> Status: **implemented**
44
>
55
> The operator can surface basic information from the Ansible code in a generic fashion - it can set the conditions and it can surface a failure message if the run failed. See documentation in the Developer Guide: [Custom Resource Status Management](../ansible/dev/developer_guide.md#custom-resource-status-management).
66
7+
- [Problem](#problem)
8+
- [Proposal](#proposal)
9+
- [Complications / Further Discussion](#complications--further-discussion)
10+
711
## Problem
812

913
There is currently no way to intentionally surface information to the status object from Ansible. If users want to surface custom information in their Custom Resource’s status field, they would need to change the Go code for the operator.

doc/proposals/ansible-operator-testing.md

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,15 @@
11
# Ansible based-Operator Testing Proposal for Operator SDK
22

3-
> Status: **completed**
3+
> Status: **implemented**
44
>
55
> Ansible-based operators can be tested with Molecule. Please see the testing documentation: [Testing Ansible Operators with Molecule](../ansible/dev/testing_guide.md).
66
7+
- [Background](#background)
8+
- [Goals](#goals)
9+
- [Non-Goals](#non-goals)
10+
- [Solution](#solution)
11+
- [Discussion / Further Investigation](#discussion--further-investigation)
12+
713
## Background
814
All operators should fit into the e2e testing framework used by operator-sdk, including Ansible Operator.
915

doc/proposals/ansible-operator.md

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,14 @@
11
# Ansible based-Operator Proposal for Operator SDK
22

3-
> Status: **completed**
3+
> Status: **implemented**
44
>
5-
> This proposal has been completed, please see the [Ansible User Guide for Operator SDK](../ansible/user-guide.md) for current documentation.
5+
> This proposal has been implemented, please see the [Ansible User Guide for Operator SDK](../ansible/user-guide.md) for current documentation.
6+
7+
- [Background](#background)
8+
- [Goals](#goals)
9+
- [New Operator Type](#new-operator-type)
10+
- [Package Structure](#package-structure)
11+
- [Commands](#commands)
612

713
## Background
814

doc/proposals/cli-ux-phase1.md

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,25 @@
22

33
Implementation Owner: @joelanford
44

5-
Status: Draft
6-
7-
[Background](#Background)
8-
9-
[Goal](#Goal)
10-
11-
[Use cases](#Use_cases)
12-
13-
[Proposed CLI commands](#Proposed_CLI_commands)
14-
15-
[References](#References)
5+
> Status: **implementable**
6+
7+
- [Background](#background)
8+
- [Goal](#goal)
9+
- [Use cases](#use-cases)
10+
- [Proposed CLI commands](#proposed-cli-commands)
11+
- [`operator-sdk alpha`](#operator-sdk-alpha)
12+
- [`operator-sdk alpha olm init`](#operator-sdk-alpha-olm-init)
13+
- [OCP/OKD](#ocpokd)
14+
- [Upstream Kubernetes](#upstream-kubernetes)
15+
- [Flags for `olm init`](#flags-for-olm-init)
16+
- [`operator-sdk alpha olm up`](#operator-sdk-alpha-olm-up)
17+
- [Prerequisites](#prerequisites)
18+
- [Flags for `olm up`](#flags-for-olm-up)
19+
- [Resources](#resources)
20+
- [References](#references)
21+
- [Operator SDK](#operator-sdk)
22+
- [Operator Registry](#operator-registry)
23+
- [Operator Lifecycle Manager](#operator-lifecycle-manager)
1624

1725
## Background
1826

doc/proposals/helm-operator.md

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,23 @@
11
# Helm based-Operator Proposal for Operator SDK
22

3-
## Background
3+
> Status: **implemented**
4+
>
5+
> See user documentation in the [User Guide][helm_user_guide] and developer documentation in the [Developer Guide][helm_dev_guide].
6+
7+
- [Background](#background)
8+
- [Goals](#goals)
9+
- [New Operator Type](#new-operator-type)
10+
- [Package Structure](#package-structure)
11+
- [Commands](#commands)
12+
- [New](#new)
13+
- [Add](#add)
14+
- [Up](#up)
15+
- [Build](#build)
16+
- [Test](#test)
17+
- [Base Image](#base-image)
18+
- [Observations and open questions](#observations-and-open-questions)
19+
20+
### Background
421

522
As was mentioned in the [Ansible Operator Proposal](./ansible-operator.md), not everyone is a golang developer, so the SDK needs to support other types of operators to gain adoption across a wider community of users.
623

@@ -145,3 +162,6 @@ The base image repository will be `quay.io/water-hole/helm-operator`.
145162
* There will be a large amount of overlap in the `operator-sdk` commands for the Ansible and Helm operators. We should take care to extract the reusable features of the Ansible operator commands into a shared library, usable by both Helm and Ansible commands.
146163

147164
* There is a moderate amount of complexity already related to how operator types are handled between the `go` and `ansible` types. With the addition of a third type, there may need to be a larger design proposal for operator types. For example, do we need to define an `Operator` interface that each of the operator types can implement for flag verification, scaffolding, project detection, etc.?
165+
166+
[helm_user_guide]:./../helm/user-guide.md
167+
[helm_dev_guide]:./../helm/dev/developer_guide.md

doc/proposals/improved-scorecard-config.md

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
# Improved Scorecard Config Proposal for Operator SDK
22

33
Implementation Owner: AlexNPavel
4-
Status: Draft
5-
6-
- [Background](#Background)
7-
- [Goals](#Goals)
8-
- [Design overview](#Design-overview)
9-
- [User facing usage](#User-facing-usage)
4+
> Status: **implemented**
5+
>
6+
> See the [scorecard documentation](../test-framework/scorecard.md) for up-to-date information.
7+
8+
- [Background](#background)
9+
- [Goals](#goals)
10+
- [Design overview](#design-overview)
11+
- [User facing usage](#user-facing-usage)
1012

1113
## Background
1214

0 commit comments

Comments
 (0)