Skip to content

RFC 0000: <Title>

Status: Draft v0.15 (community draft — not an official dsh standard)

What this file governs: it is the writing template for all RFCs, and it also defines the RFC state machine. Who should read it: anyone who wants to propose a change to the standard.

Usage: copy this file, name it NNNN-<kebab-title>.md (NNNN is the next available number, four digits, zero-padded), replace all angle-bracket content, and delete this note.

An RFC tells "why, and how the decision was made"; normative details sink into the spec/ directory — each rule is written in exactly one place (writing discipline #1). An Accepted RFC's body is never modified again; errata go through a new RFC.

State machine

text
Draft → Review → Accepted → Final
  │        │         │
  ▼        ▼         ▼
Withdrawn Rejected  Deprecated / Superseded
StateMeaningEntry conditionExit condition
DraftDraft; anyone may propose one; it does not represent a community positionPR submitted following this templateEnters Review, or Withdrawn by the author
ReviewPublic review in progress; collecting substantive feedbackThe author considers it ready for public review and requests itPassed → Accepted; failed → Rejected or back to Draft
AcceptedThe community has accepted the direction; implementation and spec writing may proceed against itNo unresolved substantive objections during the review periodImplementation and conformance evidence complete → Final; replaced by a new RFC → Superseded; proven infeasible → Deprecated
FinalFinalized, backed by implementation and conformance evidenceThe corresponding spec, fixtures, and conformance tests are all in placeReplaced by a new RFC → Superseded; no longer recommended → Deprecated
RejectedExplicitly refused after reviewUnresolved substantive objections remain at the end of ReviewTerminal; the same idea needs a new number to be re-proposed
WithdrawnWithdrawn by the authorThe author withdraws during Draft / ReviewTerminal; may be resubmitted under a new number
DeprecatedStill usable but no longer recommendedAn Accepted / Final RFC is deemed outdatedUsually accompanied by a Superseded pointer to its replacement
SupersededReplaced by a newer RFCThe new RFC is Accepted and declares that it replaces this oneTerminal; the replacement's number must be noted in the metadata

Review-period lengths, decision-making, and objection/appeal processes for each state are defined by the RFC 0000 governance document; this table defines only state semantics, and 0000 wins in case of conflict.

Metadata

FieldValue
Number0000
Title<Title>
StatusDraft (values per the table above; only values from the state machine are allowed)
Target version<e.g. v0.16>
Scope<what this RFC governs and what it does not>
Depends on<dependent RFCs / specs / registry entries, as repo-relative paths>
Discussion<issue / discussion link>

One-sentence summary

<Under 50 words, understandable to a layperson: what this proposal does.>>

Background

<What the problem is, why it must be solved now, relevant counterexamples or data.>>

Goals

  • <A verifiable goal — one that can answer "how do we know it is done">>

Non-goals

  • <Things explicitly not done, to prevent scope creep>>

Design

<The proposal body; explain "why it is decided this way". Normative details (field definitions, "must/should/may" clauses) should sink into spec/; leave only links here.>>

Rejected alternatives

<Three sentences per alternative: what it is, why rejected, under what conditions to reconsider.>>

Open questions

  • <Undecided questions that need community feedback>>

Changelog

DateChange
YYYY-MM-DDInitial draft

Community Draft — not an official dsh standard | MIT License