|
| 1 | +- Feature Name: `future_possibilities` |
| 2 | +- Start Date: 2018-10-11 |
| 3 | +- RFC PR: [rust-lang/rfcs#2561](https://github.com/rust-lang/rfcs/pull/2561) |
| 4 | +- Rust Issue: N/A. The RFC is self-executing. |
| 5 | + |
| 6 | +# Summary |
| 7 | +[summary]: #summary |
| 8 | + |
| 9 | +Adds a *"Future possibilities"* section to the `0000-template.md` RFC template |
| 10 | +that asks authors to elaborate on what natural extensions there might to their |
| 11 | +RFC and what future directions this may take the project into. |
| 12 | +This section asks authors to think *holistically*. |
| 13 | + |
| 14 | +# Motivation |
| 15 | +[motivation]: #motivation |
| 16 | + |
| 17 | +## The benefit for the author |
| 18 | + |
| 19 | +Often times, when an RFC is written, the only thing an author considers |
| 20 | +may be the feature or change proposal itself but not the larger picture |
| 21 | +and context in which the RFC operates in. By asking the author to reflect |
| 22 | +on future possibilities, a larger degree of introspection within the author |
| 23 | +themselves may ensue. The hope is then that they may consider what larger |
| 24 | +effects their proposal may have and what subsequent proposals may be. |
| 25 | + |
| 26 | +[#2532]: https://github.com/Centril/rfcs/blob/rfc/assoc-default-groups/text/0000-assoc-default-groups.md#future-work |
| 27 | +[#2529]: https://github.com/Centril/rfcs/blob/rfc/hidden-impls/text/0000-hidden-impls.md#future-work-1 |
| 28 | +[#2524]: https://github.com/Centril/rfcs/blob/rfc/inferred-type-aliases/text/0000-inferred-type-aliases.md#possible-future-work |
| 29 | +[#2523]: https://github.com/Centril/rfcs/blob/rfc/cfg-path-version/text/0000-cfg-path-version.md#possible-future-work |
| 30 | +[#2522]: https://github.com/Centril/rfcs/blob/rfc/generalized-type-ascription/text/0000-generalized-type-ascription.md#possible-future-work |
| 31 | +[#2401]: https://github.com/Centril/rfcs/blob/rfc/mut-pattern-shorthand/text/0000-mut-pattern-shorthand.md#future-work |
| 32 | +[#2421]: https://github.com/rust-lang/rfcs/blob/master/text/2421-unreservations-2018.md#possible-future-unreservations |
| 33 | +[#2385]: https://github.com/Centril/rfcs/blob/rfc/implied-derive/text/0000-implied-derive.md#future-work |
| 34 | +[#2306]: https://github.com/rust-lang/rfcs/blob/master/text/2306-convert-id.md#possible-future-work |
| 35 | + |
| 36 | +The author of this RFC has benefitted personally from writing future-possibilities |
| 37 | +sections ([#2532], [#2529], [#2524], [#2523], [#2522], [#2401], [#2421], |
| 38 | +[#2385], and [#2306]). Said written sections have also caused the current |
| 39 | +author to think more clearly about interactions in each of the written RFCs. |
| 40 | +If for no other reason, these sections offer a permanent space to idea-dump |
| 41 | +while writing an RFC. |
| 42 | + |
| 43 | +## For the team |
| 44 | + |
| 45 | +The holistic perspective that a future-possibilities section can offer may also |
| 46 | +help the relevant sub-team to understand: |
| 47 | + |
| 48 | +1. why something is proposed, |
| 49 | +2. what the long term effects of said proposal is, |
| 50 | +4. how said proposals fit with the product vision and roadmap that the team |
| 51 | + currently has. |
| 52 | + |
| 53 | +## For readers in general |
| 54 | + |
| 55 | +More generally, the benefits for the teams described above also hold for |
| 56 | +all readers. In particular, a reader can better infer what sort of language |
| 57 | +Rust is turning into given the information in a future-possibilities section. |
| 58 | +Having such a section may also help generate interest in subsequent proposals |
| 59 | +which a different author may then write. |
| 60 | + |
| 61 | +# Guide-level explanation |
| 62 | +[guide-level-explanation]: #guide-level-explanation |
| 63 | + |
| 64 | +This Meta-RFC modifies the RFC template by adding a *"Future possibilities"* |
| 65 | +section after the *"Unresolved questions"*. The newly introduced section is |
| 66 | +intended to help the authors, teams and readers in general reflect holistically |
| 67 | +on the big picture effects that a specific RFC proposal has. |
| 68 | + |
| 69 | +Please read the [reference-level-explanation] for exact details of what an |
| 70 | +RFC author will see in the changed template. |
| 71 | + |
| 72 | +# Reference-level explanation |
| 73 | +[reference-level-explanation]: #reference-level-explanation |
| 74 | + |
| 75 | +The implementation of this RFC consists of inserting the following text to the |
| 76 | +RFC template *after* the section *Unresolved questions*: |
| 77 | + |
| 78 | +> # Future possibilities |
| 79 | +> |
| 80 | +> Think about what the natural extension and evolution of your proposal would |
| 81 | +> be and how it would affect the language and project as a whole in a holistic |
| 82 | +> way. Try to use this section as a tool to more fully consider all possible |
| 83 | +> interactions with the project and language in your proposal. |
| 84 | +> Also consider how the this all fits into the roadmap for the project |
| 85 | +> and of the relevant sub-team. |
| 86 | +> |
| 87 | +> This is also a good place to "dump ideas", if they are out of scope for the |
| 88 | +> RFC you are writing but otherwise related. |
| 89 | +> |
| 90 | +> If you have tried and cannot think of any future possibilities, |
| 91 | +> you may simply state that you cannot think of anything. |
| 92 | +> |
| 93 | +> Note that having something written down in the future-possibilities section |
| 94 | +> is not a reason to accept the current or a future RFC; such notes should be |
| 95 | +> in the section on motivation or rationale in this or subsequent RFCs. |
| 96 | +> The section merely provides additional information. |
| 97 | +
|
| 98 | +# Drawbacks |
| 99 | +[drawbacks]: #drawbacks |
| 100 | + |
| 101 | +There are three main potential drawbacks: |
| 102 | + |
| 103 | +## The section will be unused |
| 104 | + |
| 105 | +There's some risk that the section will simply be left empty and unused. |
| 106 | +However, in the recent RFCs written by the author as noted in the [motivation], |
| 107 | +this has not been a problem. On the contrary, the very idea behind adding |
| 108 | +this section has come as a result of the experience gained by writing |
| 109 | +such future-possibilities sections in the aforementioned RFCs. |
| 110 | + |
| 111 | +However, some of the RFCs written by the this RFC's author have not had such |
| 112 | +sections. Therefore, if an RFC leaves the newly introduced section empty, |
| 113 | +it is not the end of the world. The section is intended as encouragement and |
| 114 | +recommendation; it is not mandatory as no section in an RFC has ever really been. |
| 115 | + |
| 116 | +## Higher barrier to entry |
| 117 | + |
| 118 | +[RFC 2333]: https://github.com/rust-lang/rfcs/blob/master/text/2333-prior-art.md#drawbacks |
| 119 | + |
| 120 | +As noted in [RFC 2333], which was the last RFC to extend the template, |
| 121 | +the longer the template becomes, the more work there is to writing an RFC. |
| 122 | +This can raise the barrier to entry somewhat. |
| 123 | +However, we argue that it is worth the minor raise in the bar since |
| 124 | +it is OK for RFCs to leave the section empty. |
| 125 | + |
| 126 | +## Readers reacting negatively on the future possibilities |
| 127 | + |
| 128 | +Another potential drawback is that readers of the RFC will focus too much |
| 129 | +on what is written in the future-possibilities section and not the actual proposal |
| 130 | +that is made in the RFC. This has not been the case in the RFCs mentioned |
| 131 | +in the [motivation]. |
| 132 | + |
| 133 | +# Rationale and alternatives |
| 134 | +[rationale-and-alternatives]: #rationale-and-alternatives |
| 135 | + |
| 136 | +1. We could rephrase the section in various ways. |
| 137 | + It is possible to do such tweaking in the future. |
| 138 | + |
| 139 | +2. We could rename it to "possible future work" or "future work" where the latter |
| 140 | + is more customary, but we have opted to use a section title that makes it more |
| 141 | + clear that the contents of the section are not what is accepted but only |
| 142 | + *possibilities*. |
| 143 | + |
| 144 | +3. We could move the section up and down and around. |
| 145 | + |
| 146 | +4. We could simply not have such a section and leave it up to each author. |
| 147 | + However, we argue here that it is beneficial to hint at the possibility |
| 148 | + of providing such a section. It might otherwise not occur to the author |
| 149 | + that such a section could be written. |
| 150 | + |
| 151 | +# Prior art |
| 152 | +[prior-art]: #prior-art |
| 153 | + |
| 154 | +None of the languages enumerated in [RFC 2333] have such a section proposed |
| 155 | +in this RFC. However, there are plenty of academic papers published which |
| 156 | +do contain sections pertaining to future possibilities. It is customary for |
| 157 | +such sections to be at the end of papers so as to not bore readers and keep |
| 158 | +them reading. |
| 159 | + |
| 160 | +# Unresolved questions |
| 161 | +[unresolved-questions]: #unresolved-questions |
| 162 | + |
| 163 | +None as of yet. |
| 164 | + |
| 165 | +# Future possibilities |
| 166 | +[future-possibilities]: #future-possibilities |
| 167 | + |
| 168 | +[staged]: http://smallcultfollowing.com/babysteps/blog/2018/06/20/proposal-for-a-staged-rfc-process/ |
| 169 | + |
| 170 | +It may be the case that we would overhaul the RFC template completely if we |
| 171 | +undertake larger changes to the RFC process itself as is proposed in the |
| 172 | +[staged]-RFCs idea. However, we'll likely want to determine the answers and |
| 173 | +get the information that each section in the current template provides at |
| 174 | +some point during the lifecycle of a proposal. |
0 commit comments