by Parth Shandilya

TC39 and its contributions to ECMAScript

Many people get confused about what is JavaScript and what is ECMAScript. Sometimes it’s hard to tell how they are connected with each other and what role ECMA International and TC39 play in the standardization of JavaScript.

Source : Warosu.org

In this blog post, I am going to discuss TC39 and its contributions to ECMAScript.

Let’s start with all the basic terminologies used when talking about JavaScript and ECMAScript.

Source : GitHub

What is ECMAScript?

ECMAScript is a standard script language, developed with the cooperation of Netscape and Microsoft and mainly derived from Netscape’s JavaScript. JavaScript is a widely-used scripting language that is used in Web pages to affect how they look or behave for the user.

ECMA-262 is a standard published by ECMA International. It contains the specification for a general purpose scripting language which is known as ECMAScript.

Source : my.wikipedia.org

A bit more about JavaScript

JavaScript is a scripting language that enables you to create dynamically updating content, to control multimedia, to animate images, and to do pretty much everything else. (Okay, not everything, but it is amazing what you can achieve with a few lines of JavaScript code.)

What is ECMA?

ECMA is a standards organization for information and communication systems. ECMA aims to develop standards and technical reports to facilitate and standardize the use of information communication technology and consumer electronics. It encourages the correct use of standards by influencing the environment in which they are applied, and it publishes these standards and reports in electronic and printed form.

And now, let’s introduce the hard working people behind ECMAScript: TC39.

Source : GitHub

What is TC 39?

TC39 means Technical Committee number 39. It is part of ECMA, the institution which standardizes the JavaScript language under the “ECMAScript” specification. It works on the standardization of the general purpose, cross platform, vendor-neutral programming language that is ECMAScript. This includes the language syntax, semantics, libraries, and complementary technologies that support the language.

TC 39 works on:

  • Maintaining and updating the standard for the ECMAScript programming language.
  • Identifying, developing and maintaining standards for libraries that extend the capabilities of ECMAScript.
  • Developing test suites that may be used to verify correct implementation of these standards.
  • Contributing with selected standards to the ISO/IEC JTC 1 committee.
  • Evaluating and considering proposals for complementary or additional technologies.

Since ES6 came out, TC 39 streamlined the proposal previsioning process to meet modern expectations. The new process uses a superset of HTML to format the proposals. They use GitHub pull requests, which helped boost participation from the community. The number of proposals being made also increased.

The specification is now more of a living standard, meaning that proposals see adoption faster, and we don’t spend years waiting for a new edition of the specification to come out.

A more general view

By reading the ECMAScript specification, you learn how to create a scripting language. By reading the JavaScript documentation, you learn how to use that scripting language.

Source : tc39/ecma262

Proposal Processing

Source : pyrus.com

Stage 0: Strawman

Any discussion, idea, change, or addition which has not yet been submitted as a formal proposal is considered to be a “strawman” proposal at this stage. Only members of TC39 can create these proposals, and there’s over a dozen active strawman proposals today.

Stage 1: Proposal

At this stage, a proposal is formalized and expected to address cross-cutting concerns, interactions with other proposals, and implementation concerns. Proposals in this stage identify a discrete problem and offer a concrete solution to that problem.

At this stage, proposal often includes a high level API description, usage examples, and a discussion of internal semantics and algorithms. These proposals are likely to change significantly as they make their way through the process.

Stage 2: Draft

Proposals in this stage should offer an initial draft of the specification.

At this point, it’s reasonable for implementers to begin experimenting with actual implementations in runtime. The implementation could come in many forms: a polyfill, user code that mangles the runtime into adhering to the proposal, an engine implementation (which natively provides support for the proposal), or it could be support by a build-time compiler like Babel.

Stage 3: Candidate

Proposals in this stage are candidate recommendations. At this advanced stage, the specification editor and designated reviewers must have signed off on the final specification. A Stage 3 proposal is unlikely to change beyond fixes to issues identified in the wild.

Implementers should have expressed interest in the proposal as well — a proposal without support from implementers is dead in the water. In practice, proposals move to this level with at least one browser implementation, a high-fidelity polyfill, or when supported by a build-time transpiler like Babel.

Source : Expert Elevation

Stage 4: Finished

Finally, proposals get to this stage when there are at least two independent implementations that pass acceptance tests.

What’s Next?

Proposals that make their way through to stage 4 will be included in the next revision of ECMAScript. When the spec goes through its yearly ratification as a standard, the proposal is ratified as part of it.

Source : get-it-done.co.za

This is how ideas for evolving the ECMAScript language are accepted and added to next revision of ECMAScript. And we are all thankful for the work done by TC39, which is invaluable.

With that, we have reached the end of our discussion on TC39 and its contributions to ECMAScript.

Thanks for reading.

Sources: TC 39 Process, ECMA International

Did you like the read? Medium doesn’t offer partner program in my country―so I ask people to buy me coffee instead.