Skip to content

Commit 3c7b549

Browse files
committed
add details to rfcs template
1 parent f1daf95 commit 3c7b549

File tree

1 file changed

+63
-11
lines changed

1 file changed

+63
-11
lines changed

docs/src/rfcs/0000-template.md

Lines changed: 63 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,24 +4,76 @@
44
- RFC PR: [cmu-db/optd#0000](https://github.com/cmu-db/optd/pull/0000)
55
- Tracking Issue: [cmu-db/optd#0000](https://github.com/cmu-db/optd/issues/0000)
66

7-
## Summary
7+
# Summary
88

9-
## Motivation
9+
One paragraph explanation of the feature.
1010

11-
## Non Goals (if relevant)
11+
# Motivation
1212

13-
## Impacted components (e.g. core, memo table, representation, rule engine, etc.)
13+
Why are we doing this? What features would this add? What is the expected outcome?
1414

15-
## Proposed implementation
15+
# Impacted components
1616

17-
### Reliability, failure modes and corner cases (if relevant)
17+
Which components (e.g. core, memo table, representation, rule engine, etc.) will need to be changed
18+
or will be affected by this feature?
1819

19-
### Scalability (if relevant)
20+
# Proposed implementation
2021

21-
### Unresolved questions (if relevant)
22+
This section should focus on how this feature should be implemented, and the design decisions that
23+
need to be made in order to make the feature work.
2224

23-
## Alternative implementation (if relevant)
25+
Explain the design in sufficient detail that:
2426

25-
## Pros/cons of proposed approaches (if relevant)
27+
- Its interaction with other features is clear.
28+
- It is reasonably clear how the feature would be implemented.
29+
- Corner cases are dissected by example.
2630

27-
## Definition of Done (if relevant)
31+
Include subsections on:
32+
33+
- Enginering effort: How hard will it be to implement this feature?
34+
- Reliability: What failure modes and corner cases would this feature introduce?
35+
- Scalability: How scalable is this feature?
36+
37+
# Drawbacks
38+
39+
Why should we _not_ do this?
40+
41+
# Rational and alternatives
42+
43+
- Why is this design the best in the space of possible designs?
44+
- What other designs have been considered and what is the rationale for not choosing them?
45+
- What is the impact of not doing this?
46+
47+
# Prior art
48+
49+
Discuss prior art, both the good and the bad, in relation to this proposal.
50+
51+
A few examples of what this can include are:
52+
53+
- Does this feature exist in other optimizers and what experience did the people implementing that
54+
feature have?
55+
- Are there any published papers or great posts that discuss this? If you have some relevant papers
56+
to refer to, this can serve as a more detailed theoretical background.
57+
58+
# Unresolved Questions
59+
60+
- What parts of the design do you expect to resolve through the RFC process before this gets merged?
61+
- What parts of the design do you expect to resolve through the implementation of this feature
62+
before stabilization?
63+
- What related issues do you consider out of scope for this RFC that could be addressed in the
64+
future independently of the solution that comes out of this RFC?
65+
66+
# Future possibilities
67+
68+
Think about what the natural extension and evolution of your proposal would be and how it would
69+
affect the project as a whole in a holistic way.
70+
71+
This is also a good place to "dump ideas", if they are out of scope for the RFC you are writing but
72+
otherwise related.
73+
74+
If you have tried and cannot think of any future possibilities, you may simply state that you cannot
75+
think of anything.
76+
77+
Note that having something written down in the future-possibilities section is not a reason to
78+
accept the current or a future RFC; such notes should be in the section on motivation or rationale
79+
in this or subsequent RFCs. The section merely provides additional information.

0 commit comments

Comments
 (0)