「筆記整理」D2前端技術論壇: 揭祕TC39: ES2020 和 ES2021

image
觀感度:🌟🌟🌟🌟🌟前端

口味:祕製烤板筋node

烹飪時間:15mingit

本文已收錄在前端食堂同名倉庫Github github.com/Geekhyt,歡迎光臨食堂,若是以爲酒菜還算可口,賞個 Star 對食堂老闆來講是莫大的鼓勵。

本文記錄並整理了 D2 前端技術論壇中揭祕 TC39: ES2020 和 ES2021 的會議筆記。(截取了 TC39 部分)分享給沒時間看或是對 TC39 還不瞭解的同窗們。github

揭祕TC39: ES2020 和 ES2021

分享嘉賓:Ujjwal Sharmaweb

TC39 成員、Node.js 核心協做者。瀏覽器

TC39

TC39Ecma International 標準化組織旗下的技術委員會的一員,它負責管理着 ECMAScript 語言和標準化 API。安全

ECMAScript 語言和標準化 API 又能夠分爲兩個標準:框架

  • 第一個是 ECMA-262 標準,它包含了語言的語法和核心的 API。
  • 另外一個標準 ECMA-402 則包含了一些國際化的 API,提供給 ECMAScript 核心 API 選擇性支持。

Who?

  • Delegatesasync

    • implementers
    • Large websites
    • Academics
    • OpenJS Foundation
  • Invited Expertside

    • Subject matter exports
    • Community representatives
  • Contributors
  • Community

TC39 包括會議表明們,多是執行者、大型的網站、學術研究者以及 OpenJS 基金會。
同時也會邀請一些主題內容的專家來提供幫助,也會邀請一些社區表明,好比 Babel 和 nodejs 社區。另外還有一些突出貢獻者,對某一議題有特殊貢獻的人。最後,也包括整個社區,人們的各類反響和奇思妙想對 TC39 的每一個決定都很是有幫助。

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

想要修改 JavaScript 規範標準,須要通過一些前置流程。

一些比較小的變動(構建流程、CI 測試文件) -> 編輯上的改變(設計排版),有專門的編輯者小組進行評審 -> 面向社區講解,須要證明其效果 -> 長遠的重大變動,須要進行提案 -> 提案有做者們和支持者們,須要嚴格按照 Stage 流程進行 -> TC39 官方指定表明,對提案進行評審,提案須要回答評審中的問題 -> 整個社區達成一致,贊成提案。

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

一個季度(每3個月)有一次會議,一年有 4 次,爲期 4 天的現場會議,今年因爲疫情在線上舉辦。在季度會議之間會安排一些小型會議,一直採用在線形式爲期 2 天。

除此以外,還有月度 ECMA-402 會議,做爲另一項獨立的標準規範,它包含不少國際化的相關內容。

還會有一些更小、更聚焦的會議,例如 ECMAScript 安全的會議和研究相關主題的會議。

(Incubator calls) 孵化召集,用來討論一些特定的提案。

最後還有 GitHub 和論壇,GitHub 是完成大部分開發和決定的地方,論壇則是提案更早期討論發起的地方。

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

沒有投票,目的是爲了達成一致。

委員會由多樣化的人組成,表明了不一樣的利益羣體。TC39 委員會的工做就是要知足你們的需求和目標。

你們都有不一樣的需求,也會有異議和意見,但終極目標是爲了解決問題,達成一致,而不是用投票來知足大部分人的需求。

最好的地方在於沒有利益方相互阻塞。

還有一個重要原則:事情若是沒有準備好就不會將標準落地。

TC39 Stage Process (TC39 的 Stage 階段進程)

  • 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

階段 0:Strawperson 稻草人

表明目前僅僅是一個想法。

階段1: Proposal 提案

當想法變成提案,就須要進入階段 1,面向委員會講解和介紹,你須要概述解決方案,而且提出一些潛在的困難。委員會可能會接受你的提案,但並不表明就要在瀏覽器中生效。它僅僅是委員會以爲這是一個值得討論的議題且願意繼續討論。

階段2: Draft 草案

進入這一階段的討論會更加嚴肅,須要討論具體的語法和語義的細節。你須要提供具體的解決方案,如何在語言中實現它,就像一個具體的 API 的實現。

階段3: Candidate 候選

這個階段設計的工做已經結束,你須要接受來自具體實現者和用戶們的反饋。這個階段也會有不一樣的 JavaScript 引擎來實現你的新特性。

階段4: finished 結束

一旦這個特性被添加進至少兩個 JavaScript 實現而且經過具體的測試,表明着能夠被你們使用了,提案的標準和規範也會進入到主要的標準規範中,咱們會制定測試去保證將來的實現都會包含這項特性,也會添加參考文檔。

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 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 設計工做都已經完成,在此階段事後將不會輕易的進行更改。

Official communication channels (官方交流渠道)

  • GitHub
  • IRC
  • Discourse
  • Incubator Calls
  • TC39

大部分的討論都在 GitHub,有不少 Issues 會討論 API 的細節。除此以外還有 IRC(Internet Relay Chat),一個聊天社交媒體。

論文和刊物通常是比較早階段的提案所提出的地方,這裏有不少人的頭腦風暴。

Incubator Calls(孵化階段的召集),這裏一般會召集你們討論不一樣利益相關者的提案,
有做者和委員會裏對這個提案感興趣的人。

還有 TC39 官網,中文版的貌似是正在開發。

(羣友發了一箇中文興趣組)
JavaScript 中文興趣組

TC39 Outreach Groups (TC39 向外拓展工做小組)

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

這個小組會和工業界的一些焦點小組進行交流,好比 Babel 、TypeScript 等。還有一些你們喜好的不少前端的框架以及一些從事教育工做的人。他們會經過月度的通話來進行工做,討論一些 TC39 的提案。

How do I get involved?(我如何參與?)

  • 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。

image

相關文章
相關標籤/搜索