Framework specification: formalising the RFC process
Nobody has claimed this yet.
- Dominant language
- No language data
- Stars
- 1.8k
- Forks
- 320
- Avg merge
- 11d 15h
- Merged PRs (30d)
- 1
Description
RFC = Request For Change.
An RFC is a formal request for something to change. Even though change is arguably a fractal concept (specifying an inexistent subsystem afresh can be construed as change too), this issue is strictly concerned with the process of:
proposing an alteration of an existing spec document, recording the change in a traceable, structured, archivable manner so it can be understood decades later.
For a case study, imagine we want to modify the peer ID spec to alter the string representation, as is precisely the case of https://github.com/libp2p/go-libp2p-core/pull/41.
The Request For Change needs to be documented in a form that captures, at least:
- Context/status quo.
- Rationale/motivation for change.
- Proposed change.
- Backwards-compatibility analysis.
- Best-effort evaluation of impact on existing implementations.
- Proposed rollout strategy.
- Alternatives considered.
Options
Other approaches exist, but these are the ones that I want to weigh now:
-
Submit a PR that modifies the specification document(s), explaining the above points in the PR's description.
This has the upside of simplicity, but has many downsides, namely:
- the source of truth and archive is spread across a proprietary technology (GitHub PRs) and the repository.
- changes in PR descriptions aren’t versioned (they are traceable via GitHub's UI, but there are no guarantees of history preservation, and one can't associate a commit message to a change in a PR description).
-
Create an RFC template and a top-level
RFCfolder in this repo to archive documents of this kind, including a numbering system and a naming scheme.Each RFC PR carries (at least) two artifacts:
- An instantiation of the RFC template explaining the change.
- The changes on the specification(s) themselves that are affected.
This way, the commit history of this repo will store, archive and index of history of a spec, as it changed over time.
A spec document itself can thus be regarded as a consolidated text (like in EU legislation) that integrates the initial text + all successive amendments by way of RFCs.
I lean towards solution 2.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Review the proposed RFC process and use peer-ids/peer-ids.md plus the linked go-libp2p-core pull request as the case study. Read the comment discussion before proceeding; done means the RFC template, top-level RFC folder, numbering and naming scheme, and required change-analysis sections are agreed and documented.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- git, github
- Domain
- documentation
- Issue type
- Documentation
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 25/100