Skip to content

Commit 553d218

Browse files
committed
rfc, future-work: initial version.
1 parent cf20ff9 commit 553d218

File tree

1 file changed

+166
-0
lines changed

1 file changed

+166
-0
lines changed

text/0000-future-work.md

Lines changed: 166 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,166 @@
1+
- Feature Name: `future_work`
2+
- Start Date: 2018-10-11
3+
- RFC PR: _
4+
- Rust Issue: N/A. The RFC is self-executing.
5+
6+
# Summary
7+
[summary]: #summary
8+
9+
Adds a *"Future work"* section to the `0000-template.md` RFC template that
10+
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 work, a larger degree of introspection within the author themselves
23+
may ensue. The hope is then that they may consider what larger effects
24+
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-work
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 permantent space to idea-dump
41+
while writing an RFC.
42+
43+
## For the team
44+
45+
The holistic perspective that a future work section can offer may also
46+
help the relevant subteam 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-work 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 work"* section
65+
after the *"Unresolved questions"*. The newly introduced section is intended
66+
to help the authors, teams and readers in general reflect holistically on
67+
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 work
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 subteam.
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 work, you may simply state
91+
> that you cannot think of anything.
92+
93+
# Drawbacks
94+
[drawbacks]: #drawbacks
95+
96+
There are three main potential drawbacks:
97+
98+
## The section will be unused
99+
100+
There's some risk that the section will simply be left empty and unused.
101+
However, in the recent RFCs written by the author as noted in the [motivation],
102+
this has not been a problem. On the contrary, the very idea behind adding
103+
this section has come as a result of the experience gained by writing
104+
such future-work sections in the aforementioned RFCs.
105+
106+
However, some of the RFCs written by the this RFC's author have not had such
107+
sections. Therefore, if an RFC leaves the newly introduced section empty,
108+
it is not the end of the world. The section is inteded as encouragement and
109+
recommendation; it is not mandatory as no section in an RFC has ever really been.
110+
111+
## Higher barrier to entry
112+
113+
[RFC 2333]: https://github.com/rust-lang/rfcs/blob/master/text/2333-prior-art.md#drawbacks
114+
115+
As noted in [RFC 2333], which was the last RFC to extend the template,
116+
the longer the template becomes, the more work there is to writing an RFC.
117+
This can raise the barrier to entry somewhat.
118+
However, we argue that it is worth the minor raise in the bar since
119+
it is OK for RFCs to leave the section empty.
120+
121+
## Readers reacting negatively on the future work
122+
123+
Another potential drawback is that readers of the RFC will focus too much
124+
on what is written in the future-work section and not the actual proposal
125+
that is made in the RFC. This has not been the case in the RFCs mentioned
126+
in the [motivation].
127+
128+
# Rationale and alternatives
129+
[rationale-and-alternatives]: #rationale-and-alternatives
130+
131+
1. We could rephrase the section in various ways.
132+
It is possible to do such tweaking in the future.
133+
134+
2. We could rename it but the proposed name is customary.
135+
136+
3. We could move the section up and down and around.
137+
138+
4. We could simply not have such a section and leave it up to each author.
139+
However, we argue here that it is beneficial to hint at the possibility
140+
of providing such a section. It might otherwise not occur to the author
141+
that such a section could be written.
142+
143+
# Prior art
144+
[prior-art]: #prior-art
145+
146+
None of the languages enumerated in [RFC 2333] have such a section proposed
147+
in this RFC. However, there are plenty of academic papers published which
148+
do contain sections pertaining to future work. It is customary for such
149+
sections to be at the end of papers so as to not bore readers and keep
150+
them reading.
151+
152+
# Unresolved questions
153+
[unresolved-questions]: #unresolved-questions
154+
155+
None as of yet.
156+
157+
# Future work
158+
[future-work]: #future-work
159+
160+
[staged]: http://smallcultfollowing.com/babysteps/blog/2018/06/20/proposal-for-a-staged-rfc-process/
161+
162+
It may be the case that we would overhaul the RFC template completely if we
163+
undertake larger changes to the RFC process itself as is proposed in the
164+
[staged]-RFCs idea. However, we'll likely want to determine the answers and
165+
get the information that each section in the current template provides at
166+
some point during the lifecycle of a proposal.

0 commit comments

Comments
 (0)