|
1 |
| -- **Feature Name:** *Fill me with pretty name and a unique ident. E.g: New Feature (`new_feature`)* |
| 1 | +- **Feature Name:** *Fill me with pretty name and a unique ident [^unstable_feature]. Example: New Feature (`new_feature`)* |
2 | 2 | - **Feature Request Issue:** *Link to issue*
|
3 | 3 | - **RFC PR:** *Link to original PR*
|
4 | 4 | - **Status:** *One of the following: [Under Review | Unstable | Stable | Cancelled]*
|
|
10 | 10 |
|
11 | 11 | ## Summary
|
12 | 12 |
|
13 |
| -Short description of the feature, i.e.: the elevator pitch. What is this feature about? |
| 13 | +Short (1-2 sentences) description of the feature. What is this feature about? |
14 | 14 |
|
15 | 15 | ## User Impact
|
16 | 16 |
|
17 |
| -Why are we doing this? How will this benefit the final user? |
| 17 | +Imagine this as your elevator pitch directed to users as well as Kani developers. |
| 18 | +- Why are we doing this? |
| 19 | +- Why should users care about this feature? |
| 20 | +- How will this benefit them? |
| 21 | +- What is the downside? |
18 | 22 |
|
19 |
| - - If this is an API change, how will that impact current users? |
20 |
| - - For deprecation or breaking changes, how will the transition look like? |
21 |
| - - If this RFC is related to change in the architecture without major user impact, think about the long term |
22 |
| -impact for user. I.e.: what future work will this enable. |
| 23 | +If this RFC is related to change in the architecture without major user impact, |
| 24 | +think about the long term impact for user. |
| 25 | +I.e.: what future work will this enable. |
| 26 | + - If you are unsure you need an RFC, please create a feature request issue and discuss the need with other Kani developers. |
23 | 27 |
|
24 | 28 | ## User Experience
|
25 | 29 |
|
26 |
| -What is the scope of this RFC? Which use cases do you have in mind? Explain how users will interact with it. Also |
27 |
| -please include: |
| 30 | +This should be a description on how users will interact with the feature. |
| 31 | +Users should be able to read this section and understand how to use the feature. |
| 32 | +**Do not include implementation details in this section, neither discuss the rationale behind the chosen UX.** |
28 | 33 |
|
29 |
| -- How would you teach this feature to users? What changes will be required to the user documentation? |
30 |
| -- If the RFC is related to architectural changes and there are no visible changes to UX, please state so. |
| 34 | +Please include: |
| 35 | + - High level user flow description. |
| 36 | + - Any new major functions or attributes that will be added to Kani library. |
| 37 | + - New command line options or subcommands (no need to mention the unstable flag). |
| 38 | + - List failure scenarios and how are they presented (e.g., compilation errors, verification failures, and possible failed user iterations). |
| 39 | + - Substantial changes to existing functionality or Kani output. |
31 | 40 |
|
32 |
| -## Detailed Design |
| 41 | +If the RFC is related to architectural changes and there are no visible changes to UX, please state so. |
| 42 | +No further explanation is needed. |
33 | 43 |
|
34 |
| -This is the technical portion of the RFC. Please provide high level details of the implementation you have in mind: |
| 44 | +## Software Design |
35 | 45 |
|
36 |
| -- What are the main components that will be modified? (E.g.: changes to `kani-compiler`, `kani-driver`, metadata, |
37 |
| - installation...) |
38 |
| -- How will they be modified? Any changes to how these components communicate? |
39 |
| -- Will this require any new dependency? |
| 46 | +This is the beginning of the technical portion of the RFC. |
| 47 | +From now on, your main audience is Kani developers, so it's OK to assume readers know Kani architecture. |
| 48 | + |
| 49 | +Please provide a high level description your design. |
| 50 | + |
| 51 | +- What are the main components that will be modified? (E.g.: changes to `kani-compiler`, `kani-driver`, metadata, proc-macros, installation...) |
| 52 | +- Will there be changes to the components interface? |
| 53 | +- Any changes to how these components communicate? |
40 | 54 | - What corner cases do you anticipate?
|
41 | 55 |
|
| 56 | +**We recommend you to leave this empty for the first version of your RFC**. |
| 57 | + |
42 | 58 | ## Rationale and alternatives
|
43 | 59 |
|
44 |
| -- What are the pros and cons of this design? |
| 60 | +This is the section where you discuss the decisions you made. |
| 61 | + |
| 62 | +- What are the pros and cons of the UX? What would be the alternatives? |
45 | 63 | - What is the impact of not doing this?
|
46 |
| -- What other designs have you considered? Why didn't you choose them? |
| 64 | +- Any pros / cons on how you designed this? |
47 | 65 |
|
48 | 66 | ## Open questions
|
49 | 67 |
|
50 |
| -- Is there any part of the design that you expect to resolve through the RFC process? |
51 |
| -- What kind of user feedback do you expect to gather before stabilization? How will this impact your design? |
| 68 | +List of open questions + an optional link to an issue that captures the work required to address the open question. |
| 69 | +Capture the details of each open question in their respective issue, not here. |
| 70 | + |
| 71 | +Example: |
| 72 | +- Is there any use case that isn't handled yet? |
| 73 | +- Is there any part of the UX that still needs some improvement? |
| 74 | + |
| 75 | +Make sure all open questions are addressed before stabilization. |
| 76 | + |
| 77 | +## Out of scope / Future Improvements |
| 78 | + |
| 79 | +*Optional Section*: List of extensions and possible improvements that you predict for this feature that is out of |
| 80 | +the scope of this RFC. |
52 | 81 |
|
53 |
| -## Future possibilities |
| 82 | +Feel free to add as many items as you want, but please refrain from adding too much detail. |
| 83 | +If you want to capture your thoughts or start a discussion, please create a feature request. |
| 84 | +You are welcome to add a link to the new issue here. |
54 | 85 |
|
55 |
| -What are natural extensions and possible improvements that you predict for this feature that is out of the |
56 |
| -scope of this RFC? Feel free to brainstorm here. |
| 86 | +[^unstable_feature]: This unique ident should be used to enable features proposed in the RFC using `-Z <ident>` until the feature has been stabilized. |
0 commit comments