Skip to content

Commit 859b254

Browse files
authored
Merge pull request #2561 from Centril/rfc/future-work
Meta-RFC: Future possibilities
2 parents 7bf6206 + c378ab1 commit 859b254

File tree

2 files changed

+195
-0
lines changed

2 files changed

+195
-0
lines changed

0000-template.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,3 +72,24 @@ Please also take into consideration that rust sometimes intentionally diverges f
7272
- What parts of the design do you expect to resolve through the RFC process before this gets merged?
7373
- What parts of the design do you expect to resolve through the implementation of this feature before stabilization?
7474
- What related issues do you consider out of scope for this RFC that could be addressed in the future independently of the solution that comes out of this RFC?
75+
76+
# Future possibilities
77+
[future-possibilities]: #future-possibilities
78+
79+
Think about what the natural extension and evolution of your proposal would
80+
be and how it would affect the language and project as a whole in a holistic
81+
way. Try to use this section as a tool to more fully consider all possible
82+
interactions with the project and language in your proposal.
83+
Also consider how the this all fits into the roadmap for the project
84+
and of the relevant sub-team.
85+
86+
This is also a good place to "dump ideas", if they are out of scope for the
87+
RFC you are writing but otherwise related.
88+
89+
If you have tried and cannot think of any future possibilities,
90+
you may simply state that you cannot think of anything.
91+
92+
Note that having something written down in the future-possibilities section
93+
is not a reason to accept the current or a future RFC; such notes should be
94+
in the section on motivation or rationale in this or subsequent RFCs.
95+
The section merely provides additional information.

text/2561-future-possibilities.md

Lines changed: 174 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,174 @@
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

Comments
 (0)