The journey from an idea to a language feature
4 min read
The Standardisation process
To understand this, let's understand three things first:
1999 to 2008
Brendan Eich is hired by Netscape to create a new language for their browser Netscape Navigator. Netscape also collaborated with Sun microsystems so Java can run on their browser.
The idea was that professionals will use Java while Mocha(the language Brandon Eich was creating for Netscape) will be used by everyone else.
Mocha was supposed to be a simple scripting language that was easy to learn.
For consistency purposes Netscape decided to make the syntax of Mocha a lot like Java, the first version of Mocha with Java-like syntax was created by Eich in just 10 days.
Netscape changed the whole game around how the internet was being accessed and Microsoft realized this was the future.
Because of two similar-looking yet different languages, websites had to be created with one version for each to support both browsers.
Moreover, Internet Explorer was free with Windows operating system for which Microsoft was even fined by the US government as it was killing healthy competition by doing so, to achieve absolute monopoly.
ECMA, EcmaScript, and TC39
Each new specification in Ecma comes with two things -
The committee that is concerned with the ECMA-262 standard is Technical Committee 39 or TC39. It consists of members from browser vendors and large tech companies.
These Browsers and companies send delegates to represent them on their behalf, these are the handful of experts on the standard. These delegate members are responsible for creating, approving, or denying a language proposal.
When a new proposal for the language is created it goes through certain stages before it becomes an official part of the language, thus implemented later.
For any proposal to move from one stage to another a consensus by TC39 must be met. this means the majority agrees and no one strongly disagrees to veto for denial.
Each proposal go through the following -
Stage 0 - Strawman
- Proposals are planned to be presented to the committee by a TC39 champion.
- Proposal that has been presented to the committee and has not been rejected definitively but has not achieved the criteria to reach stage 1.
- The criteria for a proposal to be at stage 0 is that the document is/will be reviewed at a TC39 meeting.
- Using a stage 0 feature in your code is not very wise.
Stage 1 - Proposal
- A TC39 champion is identified and is responsible for the proposal.
- Proposal needs to describe the problems it solves.
- Contains illustrative examples of usage.
- A high-level API
- Identifies any potential concerns and implementation challenges.
- By accepting a stage 0 proposal to stage 1, the committee is signaling that they are willing to use resources to look at the proposal in more depth.
Stage 2 - Draft
- Description of the feature syntax and semantics in the formal language.
- This is like the first version that will be written in the official specification.
- This kind of locks the feature, future changes will be mostly minor incremental changes.
Stage 3 - Candidate
- The proposal is mostly finished and needs feedback from users and implementors.
- To move to stage 3, the Spec text should be finished and two spec-compliant implementations created.
Stage 4 - Finished
- Tests must be written
- At least two spec implementations pass the tests.
- Members should have practical experience using the feature.
- ECMAScript spec editor must sign off on the spec text.
- It is no more just a proposal, it is part of the official specification once the above requirements are complete.
As of 2016, the TC39 schedule shows releasing of features each year with whatever futures were in stage 4.
See new proposals, tests, etc here - github.com/tc39
Versions and features per release - en.wikipedia.org/wiki/ECMAScript#History
A visual history of Netscape navigator arnnet.com.au/slideshow/557401/pictures-vis..