Javascript notes - Part 1 - Ecmascript and TC39

Javascript notes - Part 1 - Ecmascript and TC39

The journey from an idea to a language feature

The Standardisation process

Javascript is a living language that is constantly adding new features. I will explain here the journey from idea to official JS specification.

To understand this, let's understand three things first:

  • Ecma
  • Ecmascript
  • TC39

We will learn about these three by learning about the history of Javascript.

History of Javascript

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.

Eventually, the name Mocha changed to LiveScript and LiveScript to Javascript to benefit from the hype of the Java programming language.

Netscape changed the whole game around how the internet was being accessed and Microsoft realized this was the future.

Microsoft created Internet Explorer, reverse engineered Javascript, and created a super similar language of their own called JScript.

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.

The two implementations (JScript and Javascript) were so different that websites used to have logos that say - "best viewed on Netscape" or "best viewed on Internet Explorer".

ECMA, EcmaScript, and TC39

In November 1996 Netscape submitted Javascript to Ecma International for standardization by doing this it gave a platform to other implementers, so it keeps other implementations consistent across browsers.

Each new specification in Ecma comes with two things -

  • Standard
  • Committee

In the case of Javascript, the standard is ECMA-262 and the committee is TC39. Ecma uses the Ecmascript name in its standard to avoid legal issues as Oracles owns the trademark for the name Javascript.

People generally use the name Ecmascript to talk about the language specification while Javascript for the programming language implementation itself.

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

Awesome videos about the Javascript history -

A visual history of Netscape navigator arnnet.com.au/slideshow/557401/pictures-vis..