docs(rfc): add RFC 000.0002 Flutter RFC Review & Decision Process - #4
Conversation
|
TODO: make sure to have wording around "no pocket vetos" |
Piinks
left a comment
There was a problem hiding this comment.
Big fan.
Note to follow up on:
- Current design doc page: https://github.com/flutter/flutter/blob/master/docs/contributing/Design-Documents.md
- Current design doc template: flutter.dev/go/template
- Breaking changes docs: https://github.com/flutter/flutter/blob/master/docs/contributing/Tree-hygiene.md#handling-breaking-changes
- Mentions getting fcontrib accounts for design docs: https://github.com/flutter/flutter/blob/master/docs/contributing/Contributor-access.md
| * **Subsystem Tech Leads (TLs)**: The technical leads overseeing the domains touched by the proposal. | ||
| * Flutter TLs **SHOULD** know about designs touching their systems. | ||
| * Formal sign-off requires approval from the primary Subsystem TL (or an appointed member) and affected secondary domain TLs (or their appointed members). | ||
| * **Flutter TLs Group**: The collective body of Flutter Tech Leads (`flutter-tls`). Serves as the first-line escalation path for deadlocks. |
There was a problem hiding this comment.
We could make flutter-tls a GitHub team that is taggable, assignable for reviews?
There was a problem hiding this comment.
Caveat: the members of this team would be visible.
There was a problem hiding this comment.
But not their email - just their github account? That seems "fine" given you could figure that out from PRs, comments, and social media?
| 1. **Required Approvals**: | ||
| * The proposal **MUST** receive a formal GitHub PR **Approve** from the Shepherd. | ||
| * The proposal **MUST** receive a formal GitHub PR **Approve** from at least one Subsystem TL representing each secondary subsystem listed under `tags:`. | ||
| 2. **Sequential Number Allocation (Pre-Merge Requirement)**: |
There was a problem hiding this comment.
I imagine folks will deviate from this in all sorts of ways. Any linting we could do?
There was a problem hiding this comment.
I think we'll write a github action.
| * **Two-Pagers**: Projects with broader scope that consume other teams' APIs or subsystems in new ways without altering their public API/ABI contracts. These **SHOULD** be handled via GitHub Discussions or lightweight design docs with informal alignment between team TLs. Authors **MAY** optionally author these as lightweight RFCs if they seek broader community feedback, but a formal RFC is not required unless system boundaries or contracts change. | ||
|
|
||
| ### 2. MUST Require an RFC (Full Design Docs) | ||
| A proposal **MUST** go through the RFC process if it meets any of the following criteria: |
There was a problem hiding this comment.
Are there any changes to infrastructure or Flutter contributor workflows that would need an RFC?
There was a problem hiding this comment.
Yes. E.g. external embedders would be a GREAT rfc.
| * **Subsystem Tech Leads (TLs)**: The technical leads overseeing the domains touched by the proposal. | ||
| * Flutter TLs **SHOULD** know about designs touching their systems. | ||
| * Formal sign-off requires approval from the primary Subsystem TL (or an appointed member) and affected secondary domain TLs (or their appointed members). | ||
| * **Flutter TLs Group**: The collective body of Flutter Tech Leads (`flutter-tls`). Serves as the first-line escalation path for deadlocks. |
This is a non-blocking note right? As in "land this, and then we update all these other places"? |
Establish the review, socialization, and decision-making lifecycle for
Flutter Requests for Comments (RFCs) to disentangle high-level
architectural decision-making from code review across Flutter-owned
repositories.
Key elements established:
- Self-contained threshold criteria distinguishing One-Pagers, Two-Pagers,
and mandatory Full Design Docs / RFCs.
- Clear roles for Author, Shepherd, Subsystem Tech Leads (TLs), the Flutter
TLs group, and Flutter Leads.
- 3-stage review lifecycle: Proposal & Draft PR (AAA.000), Socialization
& The Dash Forum, and Asynchronous Approvals.
- Optional Final Comment Period (FCP) for cooling off without stalling
uncontroversial consensus.
- Pre-merge sequential numbering constraint guaranteeing that AAA.000
never lands in main and rejected designs never burn sequential numbers.
- Federated escalation path to the Flutter TLs group for deadlock resolution.
Fixes: #3
|
Updated to latest requests. Note: this repo current has a requirement for 2-approvals before submitting. |
|
|
||
| 1. **Required Approvals**: | ||
| * The proposal **MUST** receive formal GitHub PR **Approve** reviews from the primary Subsystem TL (the Shepherd) and at least one Subsystem TL representing each secondary subsystem listed under `tags:`, ensuring that someone from each affected area reviews and approves. | ||
| * **No Pocket Vetos**: Tagged reviewers **MUST** respond with an approval, a change request with technical rationale, or a designated alternate within **7 calendar days total** following the design review meeting (or within 7 calendar days of being tagged for review if no synchronous design review is held). If no response is received within that time, the missing vote is overruled as an abstention, allowing the Shepherd to proceed without blocking the proposal. |
There was a problem hiding this comment.
Can the Shepherd do a pocket veto? Should we include something to prevent that?
There was a problem hiding this comment.
That's an escalation and falls under:
- Flutter TLs Group: The collective body of Flutter Tech Leads (
flutter-tls). Serves as the first-line escalation path for deadlocks.
The role-play here is:
- a PR makes it through the review meeting and gets approvals from others
- for some reason the shepherd drops the ball (no blame; I expect a shepherd that doesn't support a proposal to outright say no)
- Anyone can request an escalation.
- TLs review the case and handle accordingly.
There is probably room for attempted gamesmanship - I expect the TLs and Shepherd to act in the best interests of the project.
Pull Request is not mergeable
Pull Request is not mergeable
FYI - I'm looking at these now. |
Establish the review, socialization, and decision-making lifecycle for
Flutter Requests for Comments (RFCs) to disentangle high-level
architectural decision-making from code review across Flutter-owned
repositories.
Key elements established:
and mandatory Full Design Docs / RFCs.
TLs group, and Flutter Leads.
& The Dash Forum, and Asynchronous Approvals.
uncontroversial consensus.
never lands in main and rejected designs never burn sequential numbers.
Fixes: #3
Stack created with GitHub Stacks CLI • Give Feedback 💬