Skip to content

0001 rfc process

github-actions edited this page Jun 6, 2023 · 1 revision
  • Status: Accepted
  • Date: 2023-05-29
  • Author: @lesleyjanenorton
  • RFC PR: #6981
  • Implementation GitHub issue: Not applicable. Merging #6981 implements the proposal.

Summary

Introducing a process for proposing, reviewing, and documenting decisions with high-impact implications for our codebase.

Motivation

RFCs authored by this team are currently submitted and reviewed in a number of places, namely Confluence and Google Docs.

Several challenges have been noted with this practice:

  • Docs are accessible to Mozillians only
  • Platform constraints make asynchronous discussions difficult and impossible to reference later (Confluence)
  • Uneven awareness and ability for interested parties to participate in decisions as they're being made (Google Docs)

We need a more inclusive, more collaborative process for making decisions that impact our codebase.

Proposed Solution

RFCs will be submitted and reviewed as pull requests in this repository. If approved, they'll be stored as documentation.

Salient points in favor

  • Viewable by all, not just Mozilla-internals
  • Closer to the code, easier to find
  • In keeping with how other teams do it (TODO link evidence)

Guide-level explanation

The high-level process to create an RFC is as follows:

  • Create an RFC document (like this one, in Markdown).
  • Open a pull request for the RFC document and prefix the title of the PR with [RFC].
  • File an issue requesting feedback on the pull request.

During the lifetime of an RFC:

  • Discussions happen asynchronously on the pull request; anyone may engage.
  • Integrate feedback, build consensus, get stakeholder approval. All comments, not just those of the stakeholder, should be addressed and resolved.

After the discussion phase has concluded:

  • If consensus is reached, the RFC is considered "accepted".
  • If consensus is not reached, the RFC is considered "rejected".
  • The status of the RFC is updated accordingly and is merged into the repository for documentation purposes.

Note:

  • Consensus in the bullets above should be understood as the general support of the team and stakeholder buy-in.
  • Rejected RFC proposals may be revived should the requirements change in the future.

Authors may implement and submit the feature as a pull request once the RFC is accepted.

Drawbacks

  • I can't think of any

Questions

  • About nomenclature: Are we ok calling these 'RFCs'? Firefox Monitor and Firefox Relay refer to these as ADRs but 'RFC' strikes me as more to the point.
  • About templates: I'm in favor of including an RFC template as an example but I'd prefer we not be overly prescriptive about it, at least early on.
  • About documentation living elsewhere: What to do about design documents currently housed in Confluence, if anything? Are there documents we feel must be migrated over to GitHub and stored as RFCs? (Does not require a decision now)

Prior art

Rust RFCs - Active RFC List

Firefox Android Components RFCs

Firefox Monitor ADRs

Clone this wiki locally