Join GitHub today
GitHub is home to over 31 million developers working together to host and review code, manage projects, and build software together.
Sign upUpdate the RFC process with sub-teams, amongst other things. #1224
Conversation
nrc
added
T-lang
T-libs
T-compiler
labels
Jul 27, 2015
eddyb
reviewed
Jul 27, 2015
|
|
||
| ## Changes which need an RFC | ||
|
|
||
| * Large refactorings or redesigns of the compiler |
This comment has been minimized.
This comment has been minimized.
nrc
self-assigned this
Jul 27, 2015
This comment has been minimized.
This comment has been minimized.
|
lgtm |
aturon
reviewed
Aug 10, 2015
| and the RFC seems to be in a steady state, the shepherd and/or sub-team leader | ||
| will announce an FCP. In general, the idea here is to "front-load" as much of | ||
| the feedback as possible before the point where we actually reach a decision - | ||
| by the end of the FCP, the decision on whether or not to accept the RFC should |
This comment has been minimized.
This comment has been minimized.
aturon
Aug 10, 2015
Member
by the end of the FCP, the decision on whether or not to accept the RFC should be obvious from the RFC discussion thread.
That seems a bit strong -- there have been and will be cases where there isn't an on-thread consensus, but the arguments on both sides have been exhausted and we just need to make a decision.
aturon
reviewed
Aug 10, 2015
| A sub-team makes final decisions about RFCs after the benefits and drawbacks are | ||
| well understood. These decisions can be made at any time, but the sub-team will | ||
| regularly issue decisions. When a decision is made, the RFC PR will either be | ||
| merged or closed, in either case with a comment describing the rationale for the |
This comment has been minimized.
This comment has been minimized.
aturon
Aug 10, 2015
Member
On the libs team at least, we haven't been great at re-iterating the rationale in a separate comment, usually because we have been good about commenting on thread. Not sure if we want to keep this requirement.
aturon
reviewed
Aug 10, 2015
| non-trivial ways | ||
| * Adding, removing, or changing a stable compiler flag | ||
| * The implementation of new language features where there is significant change | ||
| or addition to the compiler |
This comment has been minimized.
This comment has been minimized.
aturon
Aug 10, 2015
Member
The implementation of new language features where there is significant change or addition to the compiler
This seems pretty broad -- is the intent that most language features will require two RFCs (lang and compiler)?
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
nrc
Sep 1, 2015
Author
Member
Yes, the intention is that most significant language features have two RFCs. Not sure how that will play out in practice, but it seemed popular amongst the compiler team when we were forming the teams up. I'll add some examples to the text.
aturon
reviewed
Aug 10, 2015
| however. | ||
| * HOWEVER: Big PRs can be a lot of work to make only to have that work rejected for | ||
| details that could have been hashed out first. *This is the motivation for | ||
| having RFCs*. |
This comment has been minimized.
This comment has been minimized.
aturon
Aug 10, 2015
Member
This is one of the motivations for RFCs, but not the only one: actually spelling out and motivating a significant design and its implications is really useful, as is the broad discussion RFCs tend to produce. In short: RFCs often make for better designs.
aturon
reviewed
Aug 10, 2015
| * Once something has been merged as unstable, a shepherd should be assigned | ||
| to promote and obtain feedback on the design. | ||
|
|
||
| * Once the API has been unstable for at least one full cycle (6 weeks), |
This comment has been minimized.
This comment has been minimized.
aturon
Aug 10, 2015
Member
I like the idea of an FCP that lasts for a whole cycle (after all, stabilization doesn't matter until the cycle ends, anyway), but am unclear on the logistics here.
One plausible, slightly less conservative approach:
- Every time a release cycle ends, the libs teams assesses the current unstable APIs and selects some number of them for potential stabilization during the next cycle. These are announced for FCP at the beginning of the cycle, and (possibly) stabilized just before the beta is cut.
The main change here is eliminating the full cycle prior to FCP, which in practice is going to be hard to track at the feature granularity. Whereas holding a big meeting at the start and end of each cycle to determine Which APIs Will Live Be Promoted seems pretty doable.
(In principle the core team is supposed to r+ stabilizations, but in practice it's been driven by subteams and the FCP is a good enough venue for core team member visibility and potential veto.)
@rust-lang/libs Thoughts on this?
This comment has been minimized.
This comment has been minimized.
Gankro
Aug 10, 2015
Contributor
Sounds good to me -- though meeting deadlines is not our forte, historically speaking.
This comment has been minimized.
This comment has been minimized.
alexcrichton
Aug 11, 2015
Member
This sounds pretty ok, I'd only worry about what this means for our large number of existing unstable APIs in terms of timing. If we had to select a small set every 6 weeks we might never actually get through the whole backlog!
At least for the first few releases we're going to have to make sure that the rate at which we process unstable APIs is higher than the rate they're coming in.
This comment has been minimized.
This comment has been minimized.
aturon
Aug 11, 2015
Member
Sounds good to me -- though meeting deadlines is not our forte, historically speaking.
I'm not sure what you have in mind here, but in any case I think the change I'm proposing will make it a lot easier to track/manage these details:
- Week before release: Go/no-go meeting for items under FCP
- Week of release:
🎊 - Week after release: Triage for next cycle's stabilization FCP
@alexcrichton Note that I said "some number" not a "small number" ;-)
It's true that we have a backlog at the moment, and I think it's probably fair to grandfather in our existing unstable APIs which have been shipping since 1.0. Still, the main point here is that there's no reason for a stabilization FCP to be a single-week thing; it may as well last until the end of the cycle.
(On a separate note: I'd like to make progress this week moving forward on our remaining unstable APIs, and as part of that perhaps we can propose a bulk stabilization for this cycle.)
This comment has been minimized.
This comment has been minimized.
|
@nrc Looks good! I left a few, mostly minor, questions/nits. |
steveklabnik
reviewed
Aug 11, 2015
| @@ -75,19 +75,21 @@ the direction the language is evolving in. | |||
| * [RFC Postponement] | |||
| * [Help this is all too informal!] | |||
|
|
|||
|
|
|||
This comment has been minimized.
This comment has been minimized.
steveklabnik
reviewed
Aug 11, 2015
| * [library changes](libs_changes.md), | ||
| * [compiler changes](compiler_changes.md). | ||
|
|
||
|
|
This comment has been minimized.
This comment has been minimized.
steveklabnik
reviewed
Aug 11, 2015
| (corresponding to the pull request number), at which point the RFC is 'active', | ||
| or reject it by closing the pull request. How exactly the sub-team decide on an | ||
| RFC is up to the sub-team. | ||
|
|
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
|
Comments addressed. Not sure which team this falls under. In any case, @nikomatsakis or @aturon can we FCP this? |
This comment has been minimized.
This comment has been minimized.
|
Hear ye, hear ye. This RFC is entering final comment period. |
nikomatsakis
added
the
final-comment-period
label
Sep 4, 2015
This comment has been minimized.
This comment has been minimized.
|
This libs team discussed this during triage today and the conclusion was |
This comment has been minimized.
This comment has been minimized.
|
Let's merge this thing! |
nikomatsakis
added a commit
that referenced
this pull request
Sep 18, 2015
nikomatsakis
merged commit 2ab5a50
into
rust-lang:master
Sep 18, 2015
This comment has been minimized.
This comment has been minimized.
|
To make that clearer, language design team is also on board, though it's not clear whose "jurisdiction" this falls under, precisely. |
nrc commentedJul 27, 2015
The libs section was authored by @Gankro, see #1213 and this discuss thread for previous discussion.
We're currently missing guideline for the tools sub-team. I just didn't have anything to hand, hopefully we can remedy that in a followup PR.