|
| 1 | +# <Title> |
| 2 | + |
| 3 | +**Status**: Draft | Under Review | Approved | Replaced | Deferred | Rejected |
| 4 | + |
| 5 | +**Authors**: [Name/Team] |
| 6 | + |
| 7 | +**Category**: Architecture | Process | Guidelines |
| 8 | + |
| 9 | +**Replaces**: [Link of previous proposal if applicable] |
| 10 | + |
| 11 | +**Replaced By**: [Link of previous proposal if applicable] |
| 12 | + |
| 13 | +**Sponsor**: [Name of code owner or maintainer to shepard process] |
| 14 | + |
| 15 | +**Required Reviewers**: [Names of technical leads that are required for acceptance] |
| 16 | + |
| 17 | +**Review Date**: [Date for review] |
| 18 | + |
| 19 | +**Pull Request**: [Link to Pull Request of the Proposal itself] |
| 20 | + |
| 21 | +**Implementation PR / Tracking Issue**: [Link to Pull Request or Tracking Issue for Implementation] |
| 22 | + |
| 23 | +# Summary |
| 24 | + |
| 25 | +**\[Required\]** |
| 26 | + |
| 27 | +# Motivation |
| 28 | + |
| 29 | +**\[Required\]** |
| 30 | + |
| 31 | +Describe the problem that needs to be addressed with enough detail for |
| 32 | +someone familiar with the project to understand. Generally one to two |
| 33 | +short paragraphs. Additional details can be placed in the background |
| 34 | +section as needed. Cover **what** the issue is and **why** it needs to |
| 35 | +be addressed. Link to github issues if relevant. |
| 36 | + |
| 37 | +## Goals |
| 38 | + |
| 39 | +**\[Optional \- if not applicable omit\]** |
| 40 | + |
| 41 | +List out any additional goals in bullet points. Goals may be aspirational / difficult to measure but guide the proposal. |
| 42 | + |
| 43 | +* Goal |
| 44 | + |
| 45 | +* Goal |
| 46 | + |
| 47 | +* Goal |
| 48 | + |
| 49 | +### Non Goals |
| 50 | + |
| 51 | +**\[Optional \- if not applicable omit\]** |
| 52 | + |
| 53 | +List out any items which are out of scope / specifically not required in bullet points. Indicates the scope of the proposal and issue being resolved. |
| 54 | + |
| 55 | +## Requirements |
| 56 | + |
| 57 | +**\[Optional \- if not applicable omit\]** |
| 58 | + |
| 59 | +List out any additional requirements in numbered subheadings. |
| 60 | + |
| 61 | +**\<numbered subheadings\>** |
| 62 | + |
| 63 | +### REQ \<\#\> \<Title\> |
| 64 | + |
| 65 | +Describe the requirement in as much detail as necessary for others to understand it and how it applies to the DEP. Keep in mind that requirements should be measurable and will be used to determine if a DEP has been successfully implemented or not. |
| 66 | + |
| 67 | +Requirement names should be prefixed using a monotonically increasing number such as “REQ 1 \<Title\>” followed by “REQ 2 \<Title\>” and so on. Use title casing when naming requirements. Requirement names should be as descriptive as possible while remaining as terse as possible. |
| 68 | + |
| 69 | +Use all-caps, bolded terms like **MUST** and **SHOULD** when describing each requirement. See [RFC-2119](https://datatracker.ietf.org/doc/html/rfc2119) for additional information. |
| 70 | + |
| 71 | + |
| 72 | +# Proposal |
| 73 | + |
| 74 | +**\[Required\]** |
| 75 | + |
| 76 | +Describe the high level design / proposal. Use sub sections as needed, but start with an overview and then dig into the details. Try to provide images and diagrams to facilitate understanding. |
| 77 | + |
| 78 | +# Implementation Details |
| 79 | + |
| 80 | +**\[Optional \- if not applicable omit\]** |
| 81 | + |
| 82 | +Add additional detailed items here including interface signatures, etc. Add anything that is relevant but seems more of a detail than central to the proposal. Use sub sections / bullet points as needed. Try to provide images and diagrams to facilitate understanding. If applicable link to PR. |
| 83 | + |
| 84 | +## Deferred to Implementation |
| 85 | + |
| 86 | +**\[Optional \- if not applicable omit\]** |
| 87 | + |
| 88 | +List out items that are under discussion but that will be resolved only during implementation / code review. |
| 89 | + |
| 90 | +# Implementation Phases |
| 91 | + |
| 92 | +**\[Optional \- if not applicable omit\]** |
| 93 | + |
| 94 | +List out phases of implementation (can be single phase). Give each phase a monotonically increasing number; example “Phase 0” followed by “Phase 1” and so on. Give phases titles if it makes sense. |
| 95 | + |
| 96 | +## Phase \<\#\> \<Optional Title\> |
| 97 | + |
| 98 | +**Release Target**: Date |
| 99 | + |
| 100 | +**Effort Estimate**: \<estimate of time and number of engineers to complete the phase\> |
| 101 | + |
| 102 | +**Work Item(s):** \<one or more links to github issues\> |
| 103 | + |
| 104 | +**Supported API / Behavior:** |
| 105 | + |
| 106 | +* \<name and concise description of the API / behavior\> |
| 107 | + |
| 108 | +**Not Supported:** |
| 109 | + |
| 110 | +* \<name and concise description of the API / behavior\> |
| 111 | + |
| 112 | +# Related Proposals |
| 113 | + |
| 114 | +**\[Optional \- if not applicable omit\]** |
| 115 | + |
| 116 | +* File |
| 117 | + |
| 118 | +* File |
| 119 | + |
| 120 | +* File |
| 121 | + |
| 122 | +* File |
| 123 | + |
| 124 | +* File |
| 125 | + |
| 126 | +# Alternate Solutions |
| 127 | + |
| 128 | +**\[Required, if not applicable write N/A\]** |
| 129 | + |
| 130 | +List out solutions that were considered but ultimately rejected. Consider free form \- but a possible format shown below. |
| 131 | + |
| 132 | +## Alt \<\#\> \<Title\> |
| 133 | + |
| 134 | +**Pros:** |
| 135 | + |
| 136 | +\<bulleted list or pros describing the positive aspects of this solution\> |
| 137 | + |
| 138 | +**Cons:** |
| 139 | + |
| 140 | +\<bulleted list or pros describing the negative aspects of this solution\> |
| 141 | + |
| 142 | +**Reason Rejected:** |
| 143 | + |
| 144 | +\<bulleted list or pros describing why this option was not used\> |
| 145 | + |
| 146 | +**Notes:** |
| 147 | + |
| 148 | +\<optional: additional comments about this solution\> |
| 149 | + |
| 150 | +# Background |
| 151 | + |
| 152 | +**\[Optional \- if not applicable omit\]** |
| 153 | + |
| 154 | +Add additional context and references as needed to help reviewers and authors understand the context of the problem and solution being proposed. |
| 155 | + |
| 156 | +## References |
| 157 | + |
| 158 | +**\[Optional \- if not applicable omit\]** |
| 159 | + |
| 160 | +Add additional references as needed to help reviewers and authors understand the context of the problem and solution being proposed. |
| 161 | + |
| 162 | +* \<hyper-linked title of an external reference resource\> |
| 163 | + |
| 164 | +## Terminology & Definitions |
| 165 | + |
| 166 | +**\[Optional \- if not applicable omit\]** |
| 167 | + |
| 168 | +List out additional terms / definitions (lexicon). Try to keep definitions as concise as possible and use links to external resources when additional information would be useful to the reader. |
| 169 | + |
| 170 | +Keep the list of terms sorted alphabetically to ease looking up definitions by readers. |
| 171 | + |
| 172 | +| \<Term\> | \<Definition\> | |
| 173 | +| :---- | :---- | |
| 174 | +| **\<Term\>** | \<Definition\> | |
| 175 | + |
| 176 | +## Acronyms & Abbreviations |
| 177 | + |
| 178 | +**\[Optional \- if not applicable omit\]** |
| 179 | + |
| 180 | +Provide a list of frequently used acronyms and abbreviations which are uncommon or unlikely to be known by the reader. Do not include acronyms or abbreviations which the reader is likely to be familiar with. |
| 181 | + |
| 182 | +Keep the list of acronyms and abbreviations sorted alphabetically to ease looking up definitions by readers. |
| 183 | + |
| 184 | +Do not include the full definition in the expanded meaning of an abbreviation or acronym. If the reader needs the definition, please include it in the [Terminology & Definitions](#terminology--definitions) section. |
| 185 | + |
| 186 | +**\<Acronym/Abbreviation\>:** \<Expanded Meaning\> |
| 187 | + |
0 commit comments