Skip to main content
hrmnjt.dev::sttp://secure_thought_transfer_protocol

introducing rfd, again

I’m a RFD fanboy! I love reading them, and I wish for a workplace which follows them. I’m a 10x engineer if I write an RFD beforehand (even a minimal one for myself). At work, I always find opportunity for applied ideas and writing specifics makes it concrete and relevant given known implicit constraints.

Secondly, getting your team to talk based on a common medium is a winner. Any common medium - RFDs, emails, “a sprint ceremony”. Hey! if it works for you, great! RFD is more productive than meetings and in absence of an existing culture, I push for RFDs (or equivalent) to share technical improvements (features or tech-debt).

Finally, I’m a huge proponent of Boring Tech Club and I strongly believe throwing new-shiny-tech is never an answer to any problem. Having RFDs as an enforced approach cuts half of the water-cooler suggestions. A log of RFDs can quickly show (in metrics) the innovation tokens spent by team and prevent team from investing time and effort into a new thing.

Following is a sanitized 001-rfd-template that I submitted to my monorepo/docs folder seeking comments and commitment from team. This is a reference for myself, and if this is inspiring, adopt below or choose from amazing content on the internet (keyword: ADR/RFD).


Summary

Introducing Requests for Discussion (RFDs) as a lightweight process for proposing and discussing significant decisions for us (TEAM NAME).

An RFD is a numbered document that describes a proposal for a significant change, decision, or initiative. The intention is to have a structured method to document ideas, gather feedback from team members, and reach consensus before implementation. Some alternate goals can be:

There are many successful inspirations in both open source and enterprise settings for RFDs:

The list of inspirations is endless.

When to Write an RFD

Write an RFD when you’re considering:

Don’t write an RFD for:

Rule of thumb: If you’d naturally discuss it with the team before implementing, consider an RFD.

RFD Lifecycle

+-------+     +------------+     +----------+
| Draft | --> | Discussion | --> | Accepted |
+-------+     +------------+     +----------+
                    |                  |
                    v                  v
              +-----------+     +------------+
              | Abandoned |     | Superseded |
              +-----------+     +------------+
StateDescription
DraftAuthor is still developing the proposal
DiscussionReady for team review and feedback
AcceptedApproved and ready for implementation
AbandonedWithdrawn or rejected (document why)
SupersededReplaced by a newer RFD (link to replacement)

Who is Involved

RoleResponsibility
Author(s)Writes the proposal, addresses feedback, drives to decision
ReviewersTeam members who provide feedback
StakeholdersAnyone affected by the decision (are kept informed)

Anyone can author an RFD. All team members are encouraged to review and comment.

Process

This section expands on the lifecycle with practical guidance for common scenarios.

Scenario: Drafting a new RFD

Scenario: Gathering feedback

Scenario: Finalizing an RFD

Note on RFD numbers: RFD numbers are assigned only when the RFD reaches a final state (Accepted or Abandoned). While in Draft or Discussion, reference your RFD by its PR link. When finalizing, pick the next available number.

Scenario: Superseding an existing RFD

Superseded is a special state for when a new RFD replaces an older one. This happens when requirements evolve significantly or a better approach emerges.