🌟🌟🌟🌟🌟

Taste: Secret baking ribs

Cooking time: 15min

Github github.com/Geekhyt, welcome to the canteen, if you think the food is delicious, a Star is a great encouragement to the canteen owner.

This article takes notes from the UNVEILING of TC39: ES2020 and ES2021 at the D2 Front-end Technology Forum. (Excerpted TC39) Share it with those who have no time to read it or who are not familiar with TC39.

Uncovering TC39: ES2020 and ES2021

Guest speaker: Ujjwal Sharma

TC39 member and Node.js core collaborator.

TC39

TC39 is a member of the technical Committee of THE Ecma International Standardization Organization, which manages the ECMAScript language and standardization API.

The ECMAScript language and standardized apis can be further divided into two standards:

  • The first is the ECMA-262 standard, which contains the language’s syntax and core apis.
  • Another standard, ECMA-402, includes some internationalized apis that provide selective support for the ECMAScript core API.

Who?

  • Delegates
    • implementers
    • Large websites
    • Academics
    • OpenJS Foundation
  • Invited Experts
    • Subject matter exports
    • Community representatives
  • Contributors
  • Community

TC39 includes conference delegates, possibly executives, large web sites, academic researchers, and the OpenJS Foundation. Experts on the subject matter will also be invited to help, as well as community representatives such as the Babel and NodeJS communities. There are also prominent contributors, people who have made a special contribution to an issue. In the end, but also in the community as a whole, the variety of reactions and ideas from people has been very helpful in every decision TC39 has made.

What?

  • Pull request to the standard GitHub repository
  • Meta and Markup changes
  • Editorial Changes
    • Editor Group
  • Normative Changes
  • Proposals
    • Authors and Champions
    • Stage Process
    • Reviewers
    • Consensus

To change the JavaScript specification standard, you need to go through a number of pre-steps.

Some small changes (build process, CI test document) -> editorial changes (design and layout), reviewed by a dedicated editorial team -> presentation to the community, need to prove its effect -> major changes in the long term, need to be proposed -> Proposals have authors and supporters, The Stage process should be strictly followed -> the official representative of TC39 shall review the proposal, and the proposal shall answer the questions in the review -> The whole community shall reach a consensus and agree to the proposal.

When?

  • Quarterly meetings
    • 4-day
    • in-person
  • Light meetings in between
    • 2-day
    • online
  • Monthly ECMA-402 meeting
  • Smaller, more focussed meetings
  • Incubator calls
  • GitHub
  • Discourse

There is a quarterly (every 3 months) conference, 4 times a year, 4 days of live conference, this year due to the outbreak online. Small meetings are scheduled in between quarterly meetings and are always online for 2 days.

In addition to this, there is the monthly ECMA-402 meeting, as another independent standard specification, which contains a lot of internationalization related content.

There will also be smaller, more focused sessions, such as one on ECMAScript security and one on researching related topics.

(Incubator calls) to discuss specific proposals.

Finally, there is GitHub, where most of the development and decisions are made, and the forums, where earlier discussions of the proposal are initiated.

How?

  • No voting
  • Consensus-based decision making
    • Diverse set of people in the committee
    • Work to satisfy everyone‘s needs and goals
    • Objections and concerns
    • Backing rationales
  • No stakeholder kept over another
  • Don't standardize things which aren't ready

There was no vote. The purpose was to reach agreement.

The committee is made up of a diverse group of people representing different interest groups. The job of the TC39 Committee is to meet your needs and goals.

Everyone has different needs, and there will be disagreements and opinions, but the ultimate goal is to solve problems and reach consensus, not to satisfy the needs of the majority by voting.

The best part is that there are no interested parties blocking each other.

There is another important principle: if things are not ready, they will not fall to the ground.

TC39 Stage Process

  • Stage 0: Strawperson
    • Just an idea
  • Stage 1: Proposal
    • Describe shape of solution
    • Identify potential blockers
  • Stage 2: Draft
    • Describe precise syntactic and semantic details
  • Stage 3: Candidate
    • Further feedback from implementations and users
  • Stage 4: Finished
    • Tested and ready for addition to the standard

Stage 0: Strawperson Scarecrow

Representation is just an idea at the moment.

Stage 1: Make a Proposal

Once the idea becomes a proposal, it’s time to go to stage 1, where you give a presentation to the committee, where you outline the solution and raise some potential difficulties. The committee may accept your proposal, but it doesn’t have to be implemented in the browser. It is simply that the Committee feels that this is an issue worthy of discussion and is willing to continue the discussion.

Stage 2: Draft

The discussion at this stage is more serious, with specific syntactic and semantic details to be discussed. You need to provide concrete solutions on how to implement it in the language, just like an implementation of a concrete API.

Stage 3: Candidate Candidate

This phase of the design is over, and you need to accept feedback from implementers and users. There will also be different JavaScript engines to implement your new features at this stage.

Phase 4: Finished

Once this feature has been added to at least two JavaScript implementations and passed specific testing, representing its general usability, the proposed standard and specification will also be incorporated into the main standard specification, and we will develop tests to ensure that future implementations will include this feature, as well as add reference documentation.

Building Consensus

  • Authors develop the proposal with stakeholder input
  • Champions may act as a bridge between authors and TC39
  • Any aspects may be discussed, feedback may be given
  • Concerns raised early and asynchronously
  • Consensus is given as an indicator of the current stage
  • A delegate may post a constraint as necessary for advancement
  • Many constraints with rationales, the committee may make a trade-off
  • Stage 3 consensus implies completeness and any design concerns should be raised before Stage 3

The author takes input from stakeholders (some active users or facilitators of the proposal) and forms the proposal.

Supporters act as intermediaries between the author and TC39 and bring the author’s completed proposal to the TC39 Committee.

In the committee, all aspects of the proposal will be discussed and feedback will be publicly expressed.

The conference delegates will voice their opinions, and then the authors and supporters will respond to these voices and push forward the proposal. Only current phase proposals will be discussed and consensus will be reached.

When the discussion converges, a conference delegate can limit the proposal to the next stage, and can limit the scope of the proposal based on his or her perspective on JavaScript.

Different representatives will have their own opinions, and everyone will have different thinking principles, and there will be some trade-offs and concessions.

Phase 3 is a special conformance discussion, because reaching the candidate phase means that all API design work has been completed and changes will not be easily made after this phase.

Official communication channels

  • GitHub
  • IRC
  • Discourse
  • Incubator Calls
  • TC39

Most of the discussion is on GitHub, with a lot of Issues discussing API details. In addition, there is IRC(Internet Relay Chat), a social media for chatting.

Papers and journals are generally where proposals are made at an earlier stage, and there is a lot of brainstorming going on.

Incubator Calls, this is usually a Incubator call to discuss proposals from different stakeholders, the author and the people on the committee who are interested in the proposal.

There is also TC39 official website, the Chinese version seems to be under development.

(group of friends posted a Chinese interest group) JavaScript Chinese interest group

TC39 Outreach Group (TC39 Outreach Working Group)

  • TC39 Outreach to important focus groups
  • Tools and Transpilers
  • Frameworks
  • Educators
  • Monthly calls
  • Discuss ongoing TC39 proposals

This group communicates with focus groups in the industry, such as Babel and TypeScript. There are a lot of front end frameworks that you love and people who work in education. They will work through monthly phone calls to discuss some TC39 proposals.

How do I get involved? (How can I participate?)

  • Issue trackers of any relevant proposals
  • Contribute to documentation on MDN
  • Discourse to discuss new proposals
  • File issues, create pull requests and write tests
  • Your employer can become a member
  • Join as an invited expert if you care about a specific topic

You can use GitHub’s Issues section to participate in any proposal, offer your insights and feedback, and help provide some testing.

You can also contribute documentation to MDN, some of the new proposal documentation may be missing, or may not be of high quality, which you can help with.

You can also go to some of the discussion forums to discuss new proposals.

If you’re really interested, I recommend that your company become a member of an international organization to raise Issues, create pull requests, and write tests for phase 3 proposals that will be very useful.

If you do decide to take the test, Test262 has a number of Issues to help you do your job well.

This is an example of a Test262 test, which is a common JavaScript test.

If you have special expertise in a particular field, you can contact the BUREAU of TC39 and join as an invited expert.

TC39 and the Stage process of TC39.

Previous articles are recommended

  • You travelling the world, most propbably is because love | Denver annual essay
  • “Write once” handwritten Promise whole family bucket +Generator+async/await

❤️ Love triple punch

1. Please give me a thumbs-up when you see this. Your thumbs-up is the motivation for my creation.

2. Pay attention to the front canteen of the public number, your front canteen, remember to eat on time!

3. This article has been included in the front canteen github.com/Geekhyt, for a small Star, thank Star.