|
| 1 | +# Explainer for the TODO API |
| 2 | + |
| 3 | +**Instructions for the explainer author: Search for "todo" in this repository and update all the |
| 4 | +instances as appropriate. For the instances in `index.bs`, update the repository name, but you can |
| 5 | +leave the rest until you start the specification. Then delete the TODOs and this block of text.** |
| 6 | + |
| 7 | +This proposal is an early design sketch by [TODO: team] to describe the problem below and solicit |
| 8 | +feedback on the proposed solution. It has not been approved to ship in Chrome. |
| 9 | + |
| 10 | +TODO: Fill in the whole explainer template below using https://tag.w3.org/explainers/ as a |
| 11 | +reference. Look for [brackets]. |
| 12 | + |
| 13 | +## Proponents |
| 14 | + |
| 15 | +- [Proponent team 1] |
| 16 | +- [Proponent team 2] |
| 17 | +- [etc.] |
| 18 | + |
| 19 | +## Participate |
| 20 | +- https://github.com/explainers-by-googlers/[your-repository-name]/issues |
| 21 | +- [Discussion forum] |
| 22 | + |
| 23 | +## Table of Contents [if the explainer is longer than one printed page] |
| 24 | + |
| 25 | +<!-- Update this table of contents by running `npx doctoc README.md` --> |
| 26 | +<!-- START doctoc generated TOC please keep comment here to allow auto update --> |
| 27 | +<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE --> |
| 28 | + |
| 29 | +- [Introduction](#introduction) |
| 30 | +- [Goals](#goals) |
| 31 | +- [Non-goals](#non-goals) |
| 32 | +- [User research](#user-research) |
| 33 | +- [Use cases](#use-cases) |
| 34 | + - [Use case 1](#use-case-1) |
| 35 | + - [Use case 2](#use-case-2) |
| 36 | +- [[Potential Solution]](#potential-solution) |
| 37 | + - [How this solution would solve the use cases](#how-this-solution-would-solve-the-use-cases) |
| 38 | + - [Use case 1](#use-case-1-1) |
| 39 | + - [Use case 2](#use-case-2-1) |
| 40 | +- [Detailed design discussion](#detailed-design-discussion) |
| 41 | + - [[Tricky design choice #1]](#tricky-design-choice-1) |
| 42 | + - [[Tricky design choice 2]](#tricky-design-choice-2) |
| 43 | +- [Considered alternatives](#considered-alternatives) |
| 44 | + - [[Alternative 1]](#alternative-1) |
| 45 | + - [[Alternative 2]](#alternative-2) |
| 46 | +- [Stakeholder Feedback / Opposition](#stakeholder-feedback--opposition) |
| 47 | +- [References & acknowledgements](#references--acknowledgements) |
| 48 | + |
| 49 | +<!-- END doctoc generated TOC please keep comment here to allow auto update --> |
| 50 | + |
| 51 | +## Introduction |
| 52 | + |
| 53 | +[The "executive summary" or "abstract". |
| 54 | +Explain in a few sentences what the goals of the project are, |
| 55 | +and a brief overview of how the solution works. |
| 56 | +This should be no more than 1-2 paragraphs.] |
| 57 | + |
| 58 | +## Goals |
| 59 | + |
| 60 | +[What is the **end-user need** which this project aims to address? Make this section short, and |
| 61 | +elaborate in the Use cases section.] |
| 62 | + |
| 63 | +## Non-goals |
| 64 | + |
| 65 | +[If there are "adjacent" goals which may appear to be in scope but aren't, |
| 66 | +enumerate them here. This section may be fleshed out as your design progresses and you encounter necessary technical and other trade-offs.] |
| 67 | + |
| 68 | +## User research |
| 69 | + |
| 70 | +[If any user research has been conducted to inform your design choices, |
| 71 | +discuss the process and findings. User research should be more common than it is.] |
| 72 | + |
| 73 | +## Use cases |
| 74 | + |
| 75 | +[Describe in detail what problems end-users are facing, which this project is trying to solve. A |
| 76 | +common mistake in this section is to take a web developer's or server operator's perspective, which |
| 77 | +makes reviewers worry that the proposal will violate [RFC 8890, The Internet is for End |
| 78 | +Users](https://www.rfc-editor.org/rfc/rfc8890).] |
| 79 | + |
| 80 | +### Use case 1 |
| 81 | + |
| 82 | +### Use case 2 |
| 83 | + |
| 84 | +<!-- In your initial explainer, you shouldn't be attached or appear attached to any of the potential |
| 85 | +solutions you describe below this. --> |
| 86 | + |
| 87 | +## [Potential Solution] |
| 88 | + |
| 89 | +[For each related element of the proposed solution - be it an additional JS method, a new object, a new element, a new concept etc., create a section which briefly describes it.] |
| 90 | + |
| 91 | +```js |
| 92 | +// Provide example code - not IDL - demonstrating the design of the feature. |
| 93 | + |
| 94 | +// If this API can be used on its own to address a user need, |
| 95 | +// link it back to one of the scenarios in the goals section. |
| 96 | + |
| 97 | +// If you need to show how to get the feature set up |
| 98 | +// (initialized, or using permissions, etc.), include that too. |
| 99 | +``` |
| 100 | + |
| 101 | +[Where necessary, provide links to longer explanations of the relevant pre-existing concepts and API. |
| 102 | +If there is no suitable external documentation, you might like to provide supplementary information as an appendix in this document, and provide an internal link where appropriate.] |
| 103 | + |
| 104 | +[If this is already specced, link to the relevant section of the spec.] |
| 105 | + |
| 106 | +[If spec work is in progress, link to the PR or draft of the spec.] |
| 107 | + |
| 108 | +[If you have more potential solutions in mind, add ## Potential Solution 2, 3, etc. sections.] |
| 109 | + |
| 110 | +### How this solution would solve the use cases |
| 111 | + |
| 112 | +[If there are a suite of interacting APIs, show how they work together to solve the use cases described.] |
| 113 | + |
| 114 | +#### Use case 1 |
| 115 | + |
| 116 | +[Description of the end-user scenario] |
| 117 | + |
| 118 | +```js |
| 119 | +// Sample code demonstrating how to use these APIs to address that scenario. |
| 120 | +``` |
| 121 | + |
| 122 | +#### Use case 2 |
| 123 | + |
| 124 | +[etc.] |
| 125 | + |
| 126 | +## Detailed design discussion |
| 127 | + |
| 128 | +### [Tricky design choice #1] |
| 129 | + |
| 130 | +[Talk through the tradeoffs in coming to the specific design point you want to make.] |
| 131 | + |
| 132 | +```js |
| 133 | +// Illustrated with example code. |
| 134 | +``` |
| 135 | + |
| 136 | +[This may be an open question, |
| 137 | +in which case you should link to any active discussion threads.] |
| 138 | + |
| 139 | +### [Tricky design choice 2] |
| 140 | + |
| 141 | +[etc.] |
| 142 | + |
| 143 | +## Considered alternatives |
| 144 | + |
| 145 | +[This should include as many alternatives as you can, |
| 146 | +from high level architectural decisions down to alternative naming choices.] |
| 147 | + |
| 148 | +### [Alternative 1] |
| 149 | + |
| 150 | +[Describe an alternative which was considered, |
| 151 | +and why you decided against it.] |
| 152 | + |
| 153 | +### [Alternative 2] |
| 154 | + |
| 155 | +[etc.] |
| 156 | + |
| 157 | +## Stakeholder Feedback / Opposition |
| 158 | + |
| 159 | +[Implementors and other stakeholders may already have publicly stated positions on this work. If you can, list them here with links to evidence as appropriate.] |
| 160 | + |
| 161 | +- [Implementor A] : Positive |
| 162 | +- [Stakeholder B] : No signals |
| 163 | +- [Implementor C] : Negative |
| 164 | + |
| 165 | +[If appropriate, explain the reasons given by other implementors for their concerns.] |
| 166 | + |
| 167 | +## References & acknowledgements |
| 168 | + |
| 169 | +[Your design will change and be informed by many people; acknowledge them in an ongoing way! It helps build community and, as we only get by through the contributions of many, is only fair.] |
| 170 | + |
| 171 | +[Unless you have a specific reason not to, these should be in alphabetical order.] |
| 172 | + |
| 173 | +Many thanks for valuable feedback and advice from: |
| 174 | + |
| 175 | +- [Person 1] |
| 176 | +- [Person 2] |
| 177 | +- [etc.] |
0 commit comments