docs/rfcs/README.md
This directory contains Request for Comments documents, or RFCs, for features or concepts that have been proposed. Alternative names: technical design doc, ERD, one-pager
To make a new proposal, create a new text file in this directory and open a Pull Request with it. That gives others a chance and a forum to comment and discuss the design.
When a feature is implemented and the code changes are committed, also include the corresponding RFC in this directory.
Some of the RFCs in this directory have been implemented in some form or another, while others are on the roadmap, while still others are just obsolete and forgotten about. So read them with a grain of salt, but hopefully even the ones that don't reflect reality give useful context information.
We use Tech Design RFC’s to summarize what we are planning to implement in our system. These RFCs should be created for large or not obvious technical tasks, e.g. changes of the architecture or bigger tasks that could take over a week, changes that touch multiple components or their interaction. RFCs should fit into a couple of pages, but could be longer on occasion.
We’re using RFCs to enable early review and collaboration, reduce uncertainties, risk and save time during the implementation phase that follows the Tech Design RFC.
Tech Design RFCs also aim to avoid bus factor and are an additional measure to keep more peers up to date & familiar with our design and architecture.
This is a crucial part for ensuring collaboration across timezones and setting up for success a distributed team that works on complex topics.
RFC lifecycle:
Use template with YYYY-MM-DD-copy-me.md as a starting point. Timestamp prefix helps to avoid awkward 'id' collisions.
cp docs/rfcs/YYYY-MM-DD-copy-me.md docs/rfcs/$(date +"%Y-%m-%d")-<name>.md
Note, a lot of the sections are marked as ‘if relevant’. They are included into the template as a reminder and to help inspiration.