🌟🌟🌟🌟🌟
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.