觀感度:🌟🌟🌟🌟🌟前端
口味:祕製烤板筋node
烹飪時間:15mingit
本文已收錄在前端食堂同名倉庫Github github.com/Geekhyt,歡迎光臨食堂,若是以爲酒菜還算可口,賞個 Star 對食堂老闆來講是莫大的鼓勵。
本文記錄並整理了 D2 前端技術論壇中揭祕 TC39: ES2020 和 ES2021
的會議筆記。(截取了 TC39 部分)分享給沒時間看或是對 TC39 還不瞭解的同窗們。github
分享嘉賓:Ujjwal Sharmaweb
TC39 成員、Node.js 核心協做者。瀏覽器
TC39 是 Ecma International 標準化組織旗下的技術委員會的一員,它負責管理着 ECMAScript 語言和標準化 API。安全
ECMAScript 語言和標準化 API 又能夠分爲兩個標準:框架
Delegates
async
implementers
Large websites
Academics
OpenJS Foundation
Invited Experts
ide
Subject matter exports
Community representatives
Contributors
Community
TC39 包括會議表明們,多是執行者、大型的網站、學術研究者以及 OpenJS 基金會。
同時也會邀請一些主題內容的專家來提供幫助,也會邀請一些社區表明,好比 Babel 和 nodejs 社區。另外還有一些突出貢獻者,對某一議題有特殊貢獻的人。最後,也包括整個社區,人們的各類反響和奇思妙想對 TC39 的每一個決定都很是有幫助。
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
想要修改 JavaScript 規範標準,須要通過一些前置流程。
一些比較小的變動(構建流程、CI 測試文件) -> 編輯上的改變(設計排版),有專門的編輯者小組進行評審 -> 面向社區講解,須要證明其效果 -> 長遠的重大變動,須要進行提案 -> 提案有做者們和支持者們,須要嚴格按照 Stage 流程進行 -> TC39 官方指定表明,對提案進行評審,提案須要回答評審中的問題 -> 整個社區達成一致,贊成提案。
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
一個季度(每3個月)有一次會議,一年有 4 次,爲期 4 天的現場會議,今年因爲疫情在線上舉辦。在季度會議之間會安排一些小型會議,一直採用在線形式爲期 2 天。
除此以外,還有月度 ECMA-402 會議,做爲另一項獨立的標準規範,它包含不少國際化的相關內容。
還會有一些更小、更聚焦的會議,例如 ECMAScript 安全的會議和研究相關主題的會議。
(Incubator calls) 孵化召集,用來討論一些特定的提案。
最後還有 GitHub 和論壇,GitHub 是完成大部分開發和決定的地方,論壇則是提案更早期討論發起的地方。
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
沒有投票,目的是爲了達成一致。
委員會由多樣化的人組成,表明了不一樣的利益羣體。TC39 委員會的工做就是要知足你們的需求和目標。
你們都有不一樣的需求,也會有異議和意見,但終極目標是爲了解決問題,達成一致,而不是用投票來知足大部分人的需求。
最好的地方在於沒有利益方相互阻塞。
還有一個重要原則:事情若是沒有準備好就不會將標準落地。
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
表明目前僅僅是一個想法。
當想法變成提案,就須要進入階段 1,面向委員會講解和介紹,你須要概述解決方案,而且提出一些潛在的困難。委員會可能會接受你的提案,但並不表明就要在瀏覽器中生效。它僅僅是委員會以爲這是一個值得討論的議題且願意繼續討論。
進入這一階段的討論會更加嚴肅,須要討論具體的語法和語義的細節。你須要提供具體的解決方案,如何在語言中實現它,就像一個具體的 API 的實現。
這個階段設計的工做已經結束,你須要接受來自具體實現者和用戶們的反饋。這個階段也會有不一樣的 JavaScript 引擎來實現你的新特性。
一旦這個特性被添加進至少兩個 JavaScript 實現而且經過具體的測試,表明着能夠被你們使用了,提案的標準和規範也會進入到主要的標準規範中,咱們會制定測試去保證將來的實現都會包含這項特性,也會添加參考文檔。
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 openly
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,committee may make a trade-off
Stage 3 consensus implies completeness and any design concerns should be raised before Stage 3
做者會從利益相關者(一些活躍用戶或者提案的推進者)那裏獲得一些輸入,並造成提案。
支持者們會在做者和 TC39 之間扮演中間人的角色,支持者會帶着做者完成的提案到 TC39 委員會。
在委員會中,提案的方方面面將會被討論到,反饋也將公開表達。
會議表明將會表達他們的意見,而後做者和支持者們會針對這些聲音做出迴應並進一步推進提案。只會討論當前階段的提案並達成當前階段的共識。
當討論趨向一致時,某個會議表明能夠對這個提案進入下一階段提出限制,能夠基於本身對 JavaScript 的視角,提出提案的約束範圍。
不一樣的表明都會有本身的看法,每一個人的思考原則也不一樣,你們會進行一些權衡和讓步。
階段 3 會進行比較特殊的一致性討論,由於到了候選階段,意味着全部的 API 設計工做都已經完成,在此階段事後將不會輕易的進行更改。
GitHub
IRC
Discourse
Incubator Calls
TC39
大部分的討論都在 GitHub,有不少 Issues 會討論 API 的細節。除此以外還有 IRC(Internet Relay Chat),一個聊天社交媒體。
論文和刊物通常是比較早階段的提案所提出的地方,這裏有不少人的頭腦風暴。
Incubator Calls(孵化階段的召集),這裏一般會召集你們討論不一樣利益相關者的提案,
有做者和委員會裏對這個提案感興趣的人。
還有 TC39 官網,中文版的貌似是正在開發。
(羣友發了一箇中文興趣組)
JavaScript 中文興趣組
TC39 Outreach to important focus groups
Tools and Transpilers
Frameworks
Educators
Monthly calls
Discuss ongoing TC39 proposals
這個小組會和工業界的一些焦點小組進行交流,好比 Babel 、TypeScript 等。還有一些你們喜好的不少前端的框架以及一些從事教育工做的人。他們會經過月度的通話來進行工做,討論一些 TC39 的提案。
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
你能夠經過 GitHub 的 Issues 板塊去參與任何提案,提出本身的看法和反饋,幫助給出一些測試。
也能夠在MDN 貢獻文檔,一些新的提案的文檔多是缺失的,也可能質量不高,這些都是你能夠幫助作到的。
也能夠去一些討論集中的論壇討論新的提案。
若是你很是感興趣,我推薦你的公司去成爲國際化組織的會員,這樣能夠提 Issues、建立 pull requests,對階段 3 的提案寫測試,這些測試結果很是有用。
若是你決定參與測試,test262這裏有不少 Issues,能夠幫助你很好的開展工做。
這是一個 test262 測試的例子,就是 JavaScript 比較常見的測試例子。
若是您對某一領域有特別的建樹,您能夠和 TC39 主席團聯繫,以受邀專家的身份加入。
好了,筆記就整理到這裏了,但願你們對 TC39 以及 TC39 的 Stage 階段進程有所瞭解。
1.看到這裏了就點個贊支持下吧,你的贊是我創做的動力。
2.關注公衆號前端食堂,你的前端食堂,記得按時吃飯!
3.本文已收錄在前端食堂 github.com/Geekhyt,求個小星星,感謝Star。