- From: fantasai <fantasai.lists@inkedblade.net>
- Date: Wed, 24 Oct 2018 17:56:25 +0200
- To: spec-prod <spec-prod@w3.org>
Marcos and I led a TPAC breakout session about spec editing best practices.
Here's a summary of the points:
Spec Organization and Prose
---------------------------
1. Define the overall model of the technology and shape of the problem
before defining the API and technical details.
2. Start with an overview / high-level description, push fiddly details
and more boring material further down in the section, so that a reader
gets an overall understanding before adding details and so that authors
can stop reading once they get bored and have read everything they need.
3. Algorithmic vs Constraint based spec approaches: understand which to
use when -- they each have their strengths and weaknesses, and you
can use either or both as appropriate.
4. Use diagrams/figures/examples generously to illustrate, but not replace,
normative prose.
5. Keep examples and figures close to the point they're illustrating.
6. Use the Infra data types and literals when you need to reference data
types in the abstract. https://infra.spec.whatwg.org/
7. Periodically read your spec from top to bottom, to make sure it makes
sense when read in order.
8. Also review your table of contents:
* Ensure the spec and its heading structure is well-organized
* Have headings (and thus the TOC links) use evocative language
(not just titled by bits of code) to help readers quickly find
the right section from the TOC.
* Be generous with subheadings, to break up long sections and
facilitate linking and easier ToC usage.
Spec Tooling / Formatting
-------------------------
1. Use version control.
2. Use a preprocessor like ReSpec or Bikeshed:
https://tabatkins.github.io/bikeshed/
https://github.com/w3c/respec/wiki
3. Use manual IDs so that IDs remain stable as you adjust the heading text;
add old IDs (via empty elements with IDs, or e.g. Bikeshed's oldids attribute)
when removing or changing IDs so that links to your spec don't break.
4. Consider semantic line breaks:
http://rhodesmill.org/brandon/2012/one-sentence-per-line/
(We looked at the source code to CSS Grid as an example*, see
https://github.com/w3c/csswg-drafts/blob/master/css-grid-1/Overview.bs )
Extra
-----
1. A spec editor has to address every comment. Part of this is responding
back to the commenter. Be sure to respond to each issue with:
* Summary of the WG decision
* Link to changes or new spec prose, if any
* Rationale for the decision
* Invitation to respond with any further concerns
* If you want to use Tab-and-fantasai style source code formatting, it's:
- Tabs for indentation, spaces for alignment.
- Semantic line breaks: at phrases boundaries, each line < ~80ch
- Indent the entire spec one level except for headings.
- Line break after opening heading tag, so heading text is easy to pick
out when scanning the source.
- Empty lines between blocks.
- Indent contents of block-level HTML elements (except <p>, which we
usually imply via Markdown formatting and otherwise leave inlined
at the start of the paragraph). Definitely leave a break and indent
after any block start tag with attributes, though.
- No optional end tags.
~fantasai
Received on Wednesday, 24 October 2018 15:56:52 UTC