Why specs?
Interoperability
Without this we’re screwed. Remember the browser wars
Where do specs come from?
- Implementors
- W3C, for example the CSSWG
- Interested people (for example, us)
All three groups should be involved in a spec’s development
Phases of spec process
- Editor’s Draft (ED)
- Working Draft (WD)
- Last Call Working Draft (LC, LCWD)
- Candidate Recommendation (CR)
- Proposed Recommendation (PR)
- Recommendation (REC)
(Ref)
Phases of spec process
Recommendation = Specification = Standard
Editor’s Draft (ED)
- Anyone can write one, but there’s no official backing yet
- After the Working Group agrees to work on it, the Editor’s Draft is like the develop branch of a repo
→ Exploring
Working Draft (WD)
- The working group has agreed to work on the spec
- The spec’s editors start fleshing out the spec and seeking feedback
- The first one is “First Public Working Draft”
→ Design phase
Last Call Working Draft (LC, LCWD)
- The Working Draft is getting ready to implement, and anyone with issues should speak up now
- A date is set to resolve outstanding issues by
→ Transition
Candidate Recommendation (CR)
- Tests are created ← that’s us!
- Call for implementations: user agents start implementing and check against tests
- Editors address any issues raised by tests or implementation
- Specs list their “CR exit criteria”, and must be in CR for at least 6 months
→ Test, implement, refine
Proposed Recommendation (PR)
This requires:
- Two correct, independent implementations of each feature of the spec
- No outstanding issues
- Tests!
→ Transition
Recommendation (REC)
- A W3C Advisory Committee must approve the transition to REC
- Only minor changes are made (errata)
→ Maintenance
Spec process overview
http://www.w3.org/TR/…
TR = Trash
Beware of stale specs!
Three basic stages
- WD — Working Draft → explore, design
- CR — Candidate Recommendation → test, implement
- TR — Recommendation → maintenance
WHATWG “living standard”
“Living standard” means everything happens in one document: http://whatwg.org/C/
→ CSSWG equivalent is http://dev.w3.org/csswg/
WHATWG doesn’t make separate versions of a spec based on those stages. No confusion about which version to look at.
WHATWG “living standard”
- Idea; yet to be specified
- First draft
- Working draft
- Last call for comments
- Awaiting implementation feedback
- Implemented and widely deployed
(Ref)
However, WHATWG follows a similar process, just on a per-feature level, and all in the same document.
Actual process
- Implementation and testing often uncovers problems
- Specs can go backwards too
- Specs can even be split, merged, or end up abandoned
Example: Flexbox
- : WD
box
- : WD
box
- : WD
box
- : WD
flexbox
- : WD
flexbox
- : WD
flexbox
- : LCWD
flex
- : CR
flex
- : ED
flex
- ↑ ED is the most up-to-date!
Example: Flexbox
CR is not the most recent
WD is completely different
Don’t forget “TR = Trash”!
→ Talk about how ED/WD is like the develop branch of a repo, with CR like a release branch and REC like a tag. The most up-to-date version is develop.