RFC 0000: <标题>
状态:Draft v0.15(社区讨论稿,非官方标准)
这份文件管什么:它是所有 RFC 的写作模板,同时规定了 RFC 的状态机。谁该读:想给标准提提案、改规范的人。
用法:复制本文件,命名为
NNNN-<短横线标题>.md(NNNN为下一个可用编号,四位数、补零),替换所有尖括号内容,删除本说明段。
RFC 讲"为什么和决定过程",规范性细节下沉到 spec/ 目录——同一条规则只在一个地方写(写作纪律第 1 条)。已 Accepted 的 RFC 不再修改正文,勘误走新 RFC。
状态机
text
Draft → Review → Accepted → Final
│ │ │
▼ ▼ ▼
Withdrawn Rejected Deprecated / Superseded| 状态 | 含义 | 进入条件 | 退出条件 |
|---|---|---|---|
| Draft | 草稿,任何人可提,不代表社区立场 | 按本模板提交 PR | 进入 Review,或被作者 Withdrawn |
| Review | 公开评审中,收集实质反馈 | 作者认为可以接受公开评审,主动申请 | 评审通过进 Accepted;未通过进 Rejected 或退回 Draft |
| Accepted | 社区已接受方向,允许按它实现与写 spec | 评审期内无未解决的实质异议 | 实现与一致性证据齐备后进 Final;被新 RFC 替代进 Superseded;被证实不可行进 Deprecated |
| Final | 有实现与一致性证据支撑的定稿 | 对应 spec、fixtures、一致性测试全部就位 | 被新 RFC 替代进 Superseded;不再推荐进 Deprecated |
| Rejected | 评审后明确拒绝 | Review 期结束仍有未解决的实质异议 | 终态;同一思路需以新编号重新提案 |
| Withdrawn | 作者主动撤回 | 作者在 Draft / Review 阶段撤回 | 终态;可以新编号重新提交 |
| Deprecated | 仍可用但不再推荐 | Accepted / Final 的 RFC 被认定过时 | 通常伴随指向替代者的 Superseded |
| Superseded | 已被更新的 RFC 取代 | 新 RFC Accepted 且声明取代本 RFC | 终态;元信息中必须注明取代者编号 |
各状态的评审期长度、决策方式、异议与申诉流程由 RFC 0000 治理文档定义;本表只定义状态语义,与 0000 冲突时以 0000 为准。
元信息
| 字段 | 内容 |
|---|---|
| 编号 | 0000 |
| 标题 | <标题> |
| 状态 | Draft(取值见上表,只允许状态机内的值) |
| 目标版本 | <如 v0.16> |
| 范围 | <本 RFC 管什么、不管什么> |
| 依赖 | <依赖的 RFC / spec / registry 条目,用仓库内相对路径> |
| 讨论方式 | <issue / discussion 链接> |
一句话摘要
<50 字以内,让外行也能看懂这个提案要做什么。>
背景
<问题是什么、为什么现在要解决、相关的反例或数据。>
目标
- <可验证的目标 1——能回答"怎么算做到了">
非目标
- <明确不做的事,防止范围蔓延>
设计
<方案本体,讲清楚"为什么这么定"。规范性细节(字段定义、"必须/应该/可以"条款)应下沉到 spec/,此处只留链接。>
被拒绝的替代方案
<每个替代方案写 3 句:是什么、为什么拒、什么条件下重新考虑。>
开放问题
- <尚未定案、需要社区反馈的问题>
变更记录
| 日期 | 变更 |
|---|---|
| YYYY-MM-DD | 初稿 |