This template is a general structure for a design proposal. Feel free to add additional sections as required, or remove sections which are not needed for a specific proposal.
Summary of the following text.
The motivation behind the change, i.e. why it is needed, and by whom. Please provide references below, where available, including bug tickets, trello cards, forum or mailing list posts.
Description of the nature of the changes and how this affects the semantics of the affected API. No code; this is a higher-level description of the underlying concepts. Use diagrams or other illustrations where appropriate.
Specific details of the changes required to implement the proposal
Description of the changes in each affected package; could include milestones for complex changes (check progress, or even suspend further effort while already having something useful). For each step, who does it, and to what?
Please include sample code or pseudocode when applicable.
API additions
API changes
API deprecation
API removal
DB changes if any
Portability changes and impact
Performance changes and impact
Implications for other components; see also followup work, below
Versioning strategy of API and if necessary serialization. Include thoughts on when the component is intended to be considered stable and how it will be maintained.
Changes visible to the user (interface, tools, interactions etc.)
Possible changes to infrastructure, jobs, creation of new ansible roles, etc.
Test additions/changes/removals.
Actions required to test the code and any user interface or tools.
Follow-up actions, for example changes to documentation, updating downstream packages, integration with third-party code. Planned API removal following deprecation.
Status of the proposal, e.g.:
Being written
Under review
Open questions
Design accepted
Implementation complete
References to additional material relevant to the proposal