This repository contains explainer and spec templates that can be used by folks working on proposals and work items in the Federated Identity CG.
This file is the sample explainer, which begins after this section. The sample explainer text itself comes from the TAG's excellent explainer explainer.
There is also sample work item spec source (in
Bikeshed), and a Makefile that can be used for testing
explainer and spec changes locally. Don't forget to rename
work-item.bs
to shortname.bs
!
[Keep one of these sentences:]
A Proposal of the Federated Identity Community Group.
A Work Item of the Federated Identity Community Group.
- [Author 1]
- [Author 2]
- [etc.]
[You can generate a Table of Contents for markdown documents using a tool like doctoc.]
- Introduction
- Goals [or Motivating Use Cases, or Scenarios]
- Non-goals
- [API 1]
- [API 2]
- Key scenarios
- Detailed design discussion
- Considered alternatives
- Stakeholder Feedback / Opposition
- References & acknowledgements
[The "executive summary" or "abstract". Explain in a few sentences what the goals of the project are, and a brief overview of how the solution works. This should be no more than 1-2 paragraphs.]
[What is the end-user need which this project aims to address?]
[If there are "adjacent" goals which may appear to be in scope but aren't, enumerate them here. This section may be fleshed out as your design progresses and you encounter necessary technical and other trade-offs.]
[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.]
// Provide example code - not IDL - demonstrating the design of the feature.
// If this API can be used on its own to address a user need,
// link it back to one of the scenarios in the goals section.
// If you need to show how to get the feature set up
// (initialized, or using permissions, etc.), include that too.
[Where necessary, provide links to longer explanations of the relevant pre-existing concepts and API. 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.]
[If this is already specced, link to the relevant section of the spec.]
[If spec work is in progress, link to the PR or draft of the spec.]
[etc.]
[If there are a suite of interacting APIs, show how they work together to solve the key scenarios described.]
[Description of the end-user scenario]
// Sample code demonstrating how to use these APIs to address that scenario.
[etc.]
[Talk through the tradeoffs in coming to the specific design point you want to make.]
// Illustrated with example code.
[This may be an open question, in which case you should link to any active discussion threads.]
[etc.]
[This should include as many alternatives as you can, from high level architectural decisions down to alternative naming choices.]
[Describe an alternative which was considered, and why you decided against it.]
[etc.]
[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.]
- [Implementor A] : Positive
- [Stakeholder B] : No signals
- [Implementor C] : Negative
[If appropriate, explain the reasons given by other implementors for their concerns.]
[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.]
[Unless you have a specific reason not to, these should be in alphabetical order.]
Many thanks for valuable feedback and advice from:
- [Person 1]
- [Person 2]
- [etc.]