Post-ES6 Spec Process
Rafael Weinstein
Dmitry Lomov, Sept 2013
https://slid.es/rafaelweinstein/tc39-process
Status quo for ES additions
- 
Committee is the sole steward
 
- Consensus-based
- Additions driven by champions
- Community is heavily involved
- Spec revisions are date-driven
- Informal development process
Most of this is good
- Language evolved as a cohesive whole
- Committee is the sole steward of ES
- Consensus-based
- Additions driven by champions
- Community is heavily involved
- Spec revisions are date-driven
- Informal development process
 


Problem: Date-driven revisions
Long time between revisions
"Making" the next revision is high-stakes
Feature creep
Delays

Problem: Date-driven revisions
- 
Inevitably contain additions of varying maturity.
 
- Mature/stable additions are delayed by large and/or later developed ones.
- Less mature/stable additions face undue pressure to finalize.
Problem: Informal process
- 
Acceptance occurs before many details are sorted out
 
- 
Implementers lack clear signals of maturity
 
- Increases implementers’ risks
- 
Spec writing is the burden of the editor
 
Solution
- Decouple additions from dates (specific revisions)
- Revise spec annually
- When addition is complete, it goes into next revision
- Formalize stages of maturity
- Clear criteria at each stage
- Clear significance for acceptance
Non-goals
- 
Componentize the spec or the language
 
- 
Change the rate of evolution
 
Process
- Proposal
- Working Draft
- Candidate Draft
- Last Call Draft
- TC-39 sends a new Final Draft to ECMA every September.
- Additions which have been accepted as Last Call drafts can be included
 
 Stage 1: Proposal
- 
Making the case for addressing the problem
 
- 
Describing the general shape of a solution
 
Proposal: Criteria
- 
Prose outlining the problem or need and the general shape of a solution
 
- 
Illustrative examples of usage
 
- 
High-level API
 
- 
Discussion of key algorithms, abstractions and semantics
 
- 
Identification of potential “cross-cutting” concerns and implementation challenges/complexity
 
- 
An identified “champion” who will move the proposal towards a Working Draft.
 
Proposal: Acceptance Signifies
- 
The problem or need warrants a solution and the attention of the committee
 
- 
The proposed solution appears workable and worth developing further
 
- 
The committee expects to devote time to examining the problem space, solution and cross-cutting concerns
 
Stage 2: Working Draft
- 
Detailed solution
 
- 
Initial spec
 
Working Draft: Criteria
- 
Draft spec text (relative to latest final draft) for all major semantics and syntax (some TODOs, placeholder prose and editorial issues are expected) 
 
- 
An identified "champion" who will move the draft towards a Candidate.
 
Working Draft: Acceptance Signifies
- The committee has accepted the addition as a work item with the expectation that it be fully developed into a language feature.
 
Candidate Draft: Criteria
- 
Complete spec text for all semantics and syntax
Candidate Draft: Acceptance Signifies
- 
The committee feels that the solution is complete and no further work is possible without implementation experience and developer feedback
 
- 
The spec is ready for experimental implementations
 
 Last Call Draft: Criteria
- 
Spec text reflects all changes made in response to implementation and developer feedback
 
- 
Suite 262 acceptance tests have been authored for mainline usage scenarios
 
- 
Two implementations pass the acceptance tests
 
- 
All outstanding objections have been addressed to the committee's satisfaction
 
Last Call Draft: Acceptance Signifies
- TC-39 recommends the feature, as specified, for inclusion in the ECMAScript standard
- Implementers expected to ship the feature as specified
- The feature will be scheduled for inclusion in the next available spec revision
Mechanics: Feature dependencies
- The committee is responsible for considering additions in light of each other and existing semantics
- The committee can require two or more additions either be joined, tracked together through the process or serialized
Tooling: Managing the spec?
- Branches or “Feature Flags”
- Develop more spec writing competency