Skip to content

Commit c8667a5

Browse files
author
Edd Wilder-James
committed
Add RFC process
Change-Id: I42e0fabbbf7eb285876d32d889109f03e92ac033
1 parent 817808c commit c8667a5

File tree

2 files changed

+136
-0
lines changed

2 files changed

+136
-0
lines changed

README.md

+1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ The `community` repository stores documents used by the developer community.
66

77
* `rfcs` - design documents used by the design review process
88
* `sigs` - documentation for each TensorFlow Special Interest group (SIG)
9+
* `governance` - operating processes for the TensorFlow project
910

1011
## Contact
1112

governance/TF-RFCs.md

+135
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,135 @@
1+
# TensorFlow Request for Comments (TF-RFC)
2+
3+
The purpose of a TensorFlow RFC is to engage the TensorFlow community in
4+
development, by getting feedback from stakeholders and experts, and
5+
communicating design changes broadly.
6+
7+
## Who is involved?
8+
9+
Any **community member** may help by providing feedback on whether the RFC will
10+
meet their needs.
11+
12+
An **RFC author** is one or more community member who writes an RFC and is
13+
committed to championing it through the process.
14+
15+
An **RFC sponsor** is any maintainer who sponsors the RFC and will shepherd it
16+
through the RFC review process.
17+
18+
A **review committee** is a group of maintainers who have the responsibility of
19+
recommending the adoption of the RFC.
20+
21+
## What is a TensorFlow RFC?
22+
23+
An RFC is a document that describes a requirement and the proposed changes that
24+
will solve it. Specifically, the RFC will:
25+
26+
* be formatted according to the RFC template
27+
* be submitted as a pull request to the community/rfcs directory
28+
* be subject to discussion and a review meeting prior to acceptance
29+
30+
## RFC process
31+
32+
Before submitting an RFC, it is a good idea to discuss your aims with project
33+
contributors and maintainers and get early feedback. Use the developer mailing
34+
list for the project concerned ([email protected], or the list for the
35+
relevant SIG). After writing the RFC draft, get feedback from these
36+
experts before submitting it.
37+
38+
1. Submit your RFC as a pull request to community/rfcs.
39+
40+
Name your RFC file using the [template](https://github.com/tensorflow/community/blob/master/rfcs/yyyymmdd-rfc-template.md) `YYYYMMDD-descriptive-name.md`, where
41+
YYYYMMDD is the date of submission, and ‘descriptive-name’ relates to the
42+
title of your RFC. For instance, if your RFC is titled “Parallel Widgets API”,
43+
you might use the filename `20180531-parallel-widgets.md`. If you have images
44+
or other auxiliary files, create a directory of the form `YYYYMMDD-descriptive-name`
45+
in which to store those files.
46+
47+
2. Recruit a sponsor from the maintainers of the project which your RFC concerns.
48+
Identify them in the PR, ideally before posting the PR. If no sponsor is found
49+
within a month of posting the PR, it will be closed.
50+
51+
3. Email the developer mailing list with a brief description, and a link to the
52+
PR and a request for review.
53+
54+
4. The sponsor will request a review committee meeting, no sooner than two weeks
55+
after the RFC PR is posted. If discussion is lively, wait until it has
56+
settled before going to review. The goal of the review meeting is to resolve
57+
minor issues; consensus should be reached on major issues beforehand.
58+
59+
5. The meeting may approve the RFC, reject it, or require changes before it
60+
can be considered again. Approved RFCs will be merged into community/rfcs, and
61+
rejected RFCs will have their PRs closed.
62+
63+
6. Implementations of a successful RFC should reference it in their
64+
documentation, and work with the sponsor to successfully land the code.
65+
66+
While implementation code is not necessary to start the RFC process, its
67+
existence in full or part may help the design discussion.
68+
69+
## Community members
70+
71+
As the purpose of RFCs is to ensure the community is well represented and served
72+
by new changes to TensorFlow, it is the responsibility of community members to
73+
participate in reviewing RFCs where they have an interest in the outcome.
74+
75+
Community members should:
76+
77+
* provide feedback as soon as possible to allow adequate time for consideration
78+
* read RFCs thoroughly before providing feedback
79+
* be civil and constructive
80+
81+
## Review committees
82+
83+
The constitution of a review committee may change according to the particular
84+
governance style and leadership of each project. For core TensorFlow, the
85+
committee will exist of contributors to the TensorFlow project, who have
86+
expertise in the domain area concerned.
87+
88+
Review committees must:
89+
90+
* ensure that substantive items of public feedback have been accounted for
91+
* add their meeting notes as comments to the PR
92+
* provide reasons for their decisions
93+
94+
If a review committee requires changes before acceptance, it is the
95+
responsibility of the sponsor to ensure these are made and seek subsequent
96+
approval from the committee members.
97+
98+
## RFC sponsors
99+
100+
A sponsor is a project maintainer responsible for ensuring the best possible
101+
outcome of the RFC process. In particular this includes:
102+
103+
* advocating for the proposed design
104+
* guiding the RFC to adhere to existing design and style conventions
105+
* guiding the review committee to come to a productive consensus
106+
* if the RFC moves to implementation:
107+
* ensuring proposed implementation adheres to the design
108+
* liaison with appropriate parties to successfully land implementation
109+
110+
## Keeping the bar high
111+
112+
While we encourage and celebrate every contributor, the bar for RFC acceptance
113+
should be kept intentionally high. A design may be rejected or need significant
114+
revision at any one of these stages:
115+
116+
* initial design conversations on the relevant mailing list
117+
* failure to recruit a sponsor
118+
* critical objections during the feedback phase
119+
* failure to achieve consensus during the design review
120+
* concerns raised during implementation (e.g., inability to achieve backwards
121+
compatibility, concerns about maintenance appearing once a partial implementation
122+
is available)
123+
124+
If this process is functioning well, RFCs are expected to fail in the earlier,
125+
rather than later, stages.
126+
127+
An approved RFC is no guarantee of a commitment to implement, and acceptance of
128+
a proposed RFC implementation is still subject to the usual code review
129+
process.
130+
131+
## RFC Template
132+
133+
Use the template [from
134+
GitHub](https://github.com/tensorflow/community/blob/master/rfcs/yyyymmdd-rfc-template.md),
135+
being sure to follow the naming conventions described above.

0 commit comments

Comments
 (0)