Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit b08ce74

Browse files
committedJan 22, 2021
Add proposal requirements and template
1 parent ba75a30 commit b08ce74

File tree

6 files changed

+281
-39
lines changed

6 files changed

+281
-39
lines changed
 

‎.requirements

+1
Original file line numberDiff line numberDiff line change
@@ -13,3 +13,4 @@ k8s.io/code-generator/cmd/deepcopy-gen
1313
k8s.io/code-generator/cmd/defaulter-gen
1414
k8s.io/code-generator/cmd/informer-gen
1515
k8s.io/code-generator/cmd/lister-gen
16+
sigs.k8s.io/mdtoc

‎CONTRIBUTING.md

+32-39
Original file line numberDiff line numberDiff line change
@@ -636,74 +636,67 @@ should also feel free to keep an eye on things and provide their own thoughts an
636636
For chunky features which require Serious Thought™, the first step is the submission
637637
of a design proposal to the [docs](docs/) folder through the standard PR process.
638638

639-
Proposal PRs should be shared with the core team and with the community in [slack](https://weave-community.slack.com/messages/CAYBZBWGL/).
639+
### Process
640640

641-
Before a PR is merged the author should do a "last call" in public channels to
642-
ensure all interested voices are heard. A proposal can only be merged and work begun
643-
when all core team members have signed off.
641+
A template can be found in [`docs/proposal-000-template.md`](/docs/proposal-000-template.md). Simply create a copy
642+
of the file (replacing the number with the next in the sequence, and 'template'
643+
with your feature name), and fill in the required fields. When ready, open a PR.
644+
645+
For the initial PR, we can try to avoid getting hung up on specific details
646+
and instead aim to get the motivation and the goals/non-goals sections of the
647+
proposal clarified and merged quickly.
648+
The best way to do this is to just start with the high-level sections and
649+
fill out details incrementally in subsequent PRs.
650+
651+
Initial bare-bones merging does not mean that the proposal is approved, the Status
652+
section will convey whether the proposal has been accepted and work has begun.
653+
Any proposals not marked as 'approved' is a working document and subject to change.
654+
655+
When editing proposals, aim for tightly-scoped, single-topic PRs to keep discussions
656+
focused. If you disagree with what is already in a document, open a new PR
657+
with suggested changes.
644658

645659
A proposal which has been accepted should become a living document. Even the best-laid
646660
plans rarely work out, so as things are learned during implementation the doc
647661
should be updated to accurately reflect the state of the world.
648662

649663
### Sections
650664

651-
Each proposal/design doc should cover the following:
665+
Each proposal/design doc should cover the following _at a minimum_:
652666

653667
- **The author(s).** So that people know where to direct questions at any point in time.
654668

655669
- **Status.** Proposals serve as documentation on the design of our codebase.
656670
It is useful to indicate whether what is documented reflects the state of the project.
657-
Current status options are: `Design ongoing`, `Final: ready for implementation`,
658-
`Final: implementation complete`.
659671

660-
- **High level overview** of the problem that needs to be solved and a summary of the solution
661-
about to be detailed in the doc. This should be written in a way that anyone can
662-
understand what the proposal is for.
672+
- **Summary** A TLDR of everything that is discussed in the doc.This should be
673+
written in a way that anyone can come by and quickly understand what the proposal is for.
663674

664-
- **Further context** on why the proposed solution is necessary, how it fits into
665-
the project's goals and how it will help users in the long term.
675+
- **Motivation** for why we should do this, how it fits into
676+
the project's goals and how it will help users in the long term. What is the
677+
problem this proposal aims to solve? (Includes clear-cut Goals and Non-Goals,
678+
and all possible Context.)
666679

667-
- **Goals.** The clear objectives of this solution.
680+
- **Proposal** of the solution to the above problem. This can be high-level, detail
681+
comes later. (This includes User Stories as well as Risks and Mitigations.)
668682

669-
- **Non-Goals.** Equally important things which will be dealt with one day but
670-
are not in the scope of this work. This helps make sure everyone is crystal clear
671-
on the outcomes.
683+
- **Design details.** How the proposal should be implemented. (Includes Test Plans,
684+
and Graduation Criteria.)
672685

673-
- **Walkthrough of the existing solution** (if applicable). Describe the current
674-
implementation. Providing user stories or flow diagrams can be useful here.
675-
676-
- **Walkthrough of the Proposed solution.** Similar to the above, describe the new
677-
implementation, giving user stories and flow diagrams to guide reviewers along code
678-
paths.
679-
680-
- **Alternative solutions.** List the pros and cons of each solution considered,
686+
- **Alternatives.** List the pros and cons of each solution considered,
681687
illustrating why the final one was chosen.
682688

683-
- **Risks.** What could get in the way of this solution being implemented the way
684-
you want? (This is technical stuff: do not count natural disasters or pandemics.)
685-
686689
- **Known unknowns or open questions.** The author should list any questions for things they are unsure about
687690
or to direct reviewers to particular areas where their expertise is needed.
688691

689-
- **Implementation stages.** These can end up being transcribed to issues, or broken
690-
down further into multiple issues. These milestones are useful to understand when
691-
the feature is "done", as well as helping all members of the community understand
692-
all the moving parts.
693-
694-
- **Success metrics.** A little hard to do with a CLI tool, but it is always nice
695-
to plan how you will learn about the success of a feature in the wild.
696-
697-
- (Optional) Future extensibility.
698-
699-
- (Optional) How this feature influences other features.
700-
701692
### Writing tips
702693

703694
1. Write simply and keep your language accessible. The easier it is to understand,
704695
the more input you will get from a wider range of sources. Bear in mind that your target audience
705696
is anyone who comes into contact with eksctl: maintainers, contributors and end users.
706697

698+
1. Refer to the [Kubernetes documentation style guide](https://github.com/kubernetes/community/blob/master/contributors/guide/style-guide.md).
699+
707700
1. Don't assume too much knowledge. Make sure terms have explanations or links for
708701
the same reason as the last point.
709702

‎docs/proposal-000-template.md

+228
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,228 @@
1+
<!--
2+
How to use this template:
3+
4+
- Make a copy of this file in the docs/ directory
5+
- Set the name of the file to contain the next logical number and the name of the feature
6+
- Fill out at least the Status, Motivation and Goals/Non-Goals fields.
7+
- Open a PR to eksctl
8+
- Merge early and iterate
9+
10+
For more tips see the Contributing docs: https://github.com/weaveworks/eksctl/blob/master/CONTRIBUTING.md#proposals
11+
-->
12+
13+
# Short, descriptive title
14+
15+
<!--
16+
Keep the title short, simple, and descriptive. A good
17+
title can help communicate what the proposal is and should be considered as part of
18+
any review.
19+
-->
20+
21+
## Authors
22+
23+
<!--
24+
Who is responsible for this proposal? Who can answer questions?
25+
-->
26+
27+
## Status
28+
29+
<!--
30+
Can be just one word to help anyone understand where the proposal is in the process.
31+
-->
32+
33+
34+
<!--
35+
The headings here are just starting points, add more as makes sense in what you
36+
are proposing.
37+
-->
38+
## Table of Contents
39+
<!-- toc -->
40+
- [Summary](#summary)
41+
- [Motivation](#motivation)
42+
- [Goals](#goals)
43+
- [Non-Goals](#non-goals)
44+
- [Linked Docs](#linked-docs)
45+
- [Proposal](#proposal)
46+
- [User Stories (Optional)](#user-stories-optional)
47+
- [Story 1](#story-1)
48+
- [Story 2](#story-2)
49+
- [Notes/Constraints/Caveats (Optional)](#notesconstraintscaveats-optional)
50+
- [Risks and Mitigations](#risks-and-mitigations)
51+
- [Design Details](#design-details)
52+
- [Test Plan](#test-plan)
53+
- [Graduation Criteria (Optional)](#graduation-criteria-optional)
54+
- [Migration Strategy (Optional)](#migration-strategy-optional)
55+
- [Drawbacks (Optional)](#drawbacks-optional)
56+
- [Alternatives](#alternatives)
57+
- [Open Questions / Known Unknowns](#open-questions--known-unknowns)
58+
- [Implementation Stages (Optional)](#implementation-stages-optional)
59+
- [Success Metrics (Optional)](#success-metrics-optional)
60+
<!-- /toc -->
61+
62+
<!--
63+
Ensure the TOC is wrapped with
64+
<!-- toc --> and <!-- /toc -->
65+
tags, and then generate with mdtoc https://github.com/kubernetes-sigs/mdtoc.
66+
-->
67+
68+
## Summary
69+
70+
<!--
71+
A good summary is at least a paragraph in length and should be written with a wide audience
72+
in mind.
73+
74+
This TLDR should encompass the entire document, and serve as both future documentation
75+
and as a quick reference for people coming by to learn the proposal's purpose
76+
without reading the entire thing.
77+
-->
78+
79+
## Motivation
80+
81+
<!--
82+
This section is for explicitly listing the motivation, goals and non-goals of
83+
this proposal. Describe why the change is important, how it fits into the project's
84+
goals and the benefits to users.
85+
86+
It is helpful to frame this to answer the question: "What is the problem this proposal
87+
is trying to solve?"
88+
-->
89+
90+
### Goals
91+
92+
<!--
93+
List the specific goals of the proposal. What is it trying to achieve? How will we
94+
know that this has succeeded?
95+
-->
96+
97+
### Non-Goals
98+
99+
<!--
100+
What is out of scope for this proposal? Listing non-goals helps to focus discussion
101+
and make progress.
102+
103+
It is important to remember that non-goals are still equally important things
104+
which will be dealt with one day but are not things which need to be dealt with immediately
105+
within the scope of this work. This helps make sure everyone is crystal clear on the outcomes.
106+
-->
107+
108+
### Linked Docs
109+
110+
<!--
111+
Provide links to previous discussions/threads, motivation issues or any other document
112+
with context. It is really helpful to provide a "source of truth" for the work
113+
so that people aren't searching all over the place for lost context.
114+
-->
115+
116+
## Proposal
117+
118+
<!--
119+
This is where we get down to the specifics of what the proposal actually is:
120+
outlining your solution to the problem described in the Motivation section.
121+
This should have enough detail that reviewers can understand exactly what
122+
you're proposing, but should not include things like API designs or
123+
implementation. The "Design Details" section below is for the real
124+
nitty-gritty.
125+
-->
126+
127+
### User Stories (Optional)
128+
129+
<!--
130+
Detail the things that people will be able to do if this proposal is implemented.
131+
Include as much detail as possible so that people can understand the "how" of
132+
the system. The goal here is to make this feel real for users without getting
133+
bogged down. Including CLI/config etc examples is a good was to illustrate this.
134+
-->
135+
136+
#### Story 1
137+
138+
#### Story 2
139+
140+
### Notes/Constraints/Caveats (Optional)
141+
142+
<!--
143+
What are the caveats to the proposal?
144+
What are some important details that didn't come across above?
145+
Go in to as much detail as necessary here.
146+
This might be a good place to talk about core concepts and how they relate.
147+
-->
148+
149+
### Risks and Mitigations
150+
151+
<!--
152+
What are the risks of this proposal, and how do we mitigate?
153+
What could get in the way of this solution being implemented the way we want?
154+
(This is technical stuff: do not count natural disasters or pandemics.)
155+
Think broadly. For example, consider how this will impact or be impacted by other
156+
things within the project as well as other components/APIs it interacts with.
157+
-->
158+
159+
## Design Details
160+
161+
<!--
162+
This section should contain enough information that the specifics of your
163+
change are understandable. This may include API specs (though not always
164+
required) or even code snippets. If there's any ambiguity about HOW your
165+
proposal will be implemented, this is the place to discuss them.
166+
-->
167+
168+
### Test Plan
169+
170+
<!--
171+
This will almost always say "Everything covered by unit tests, main uses cases
172+
covered by integration tests", but it is good to be very clear on goals.
173+
-->
174+
175+
### Graduation Criteria (Optional)
176+
177+
<!--
178+
List criteria which would allow progression from one maturity level to another.
179+
eg. What needs to have been accomplished/demonstrated to move from Alpha to Beta.
180+
181+
If applicable, what is the milestone marker which will allow deprecation of the
182+
replaced capability?
183+
-->
184+
185+
### Migration Strategy (Optional)
186+
187+
<!--
188+
How will this new implementation play with existing features?
189+
How can we mitigate issues?
190+
-->
191+
192+
## Drawbacks (Optional)
193+
194+
<!--
195+
Why should the proposal NOT be implemented?
196+
This is not to say we won't do it, but to acknowledge the "cons" of the argument.
197+
Aka: devil's advocate.
198+
-->
199+
200+
## Alternatives
201+
202+
<!--
203+
What other approaches did you consider, and why did you rule them out? These do
204+
not need to be as detailed as the proposal (pros and cons are fine),
205+
but should include enough information to express the idea and why it was not acceptable
206+
as well as illustrate why the final solution was selected.
207+
-->
208+
209+
## Open Questions / Known Unknowns
210+
211+
<!--
212+
List any questions for things you unsure about or to
213+
direct reviewers to particular areas where their expertise is needed.
214+
-->
215+
216+
## Implementation Stages (Optional)
217+
218+
<!--
219+
This will usually be filled in when the work is broken down into Issues/tickets
220+
and work can begin.
221+
-->
222+
223+
## Success Metrics (Optional)
224+
225+
<!--
226+
A little hard to do with a CLI tool, but it is always nice
227+
to plan how you will learn about the success of a feature in the wild.
228+
-->

‎go.mod

+1
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ require (
6262
k8s.io/kubernetes v1.19.4
6363
k8s.io/legacy-cloud-providers v0.19.4
6464
sigs.k8s.io/aws-iam-authenticator v0.5.2
65+
sigs.k8s.io/mdtoc v1.0.1 // indirect
6566
sigs.k8s.io/yaml v1.2.0
6667
)
6768

There was a problem loading the remainder of the diff.

0 commit comments

Comments
 (0)
Please sign in to comment.