|
4 | 4 | - RFC PR: [cmu-db/optd#0000](https://github.com/cmu-db/optd/pull/0000)
|
5 | 5 | - Tracking Issue: [cmu-db/optd#0000](https://github.com/cmu-db/optd/issues/0000)
|
6 | 6 |
|
7 |
| -## Summary |
| 7 | +# Summary |
8 | 8 |
|
9 |
| -## Motivation |
| 9 | +One paragraph explanation of the feature. |
10 | 10 |
|
11 |
| -## Non Goals (if relevant) |
| 11 | +# Motivation |
12 | 12 |
|
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? |
14 | 14 |
|
15 |
| -## Proposed implementation |
| 15 | +# Impacted components |
16 | 16 |
|
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? |
18 | 19 |
|
19 |
| -### Scalability (if relevant) |
| 20 | +# Proposed implementation |
20 | 21 |
|
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. |
22 | 24 |
|
23 |
| -## Alternative implementation (if relevant) |
| 25 | +Explain the design in sufficient detail that: |
24 | 26 |
|
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. |
26 | 30 |
|
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