cover of episode Episode 85: TC39: How the JavaScript Sausage Gets Made with Mark Cohen

Episode 85: TC39: How the JavaScript Sausage Gets Made with Mark Cohen

2022/1/18
logo of podcast Enjoy the Vue

Enjoy the Vue

Frequently requested episodes will be transcribed first

Shownotes Transcript

Support us on Kofi!)

Design by committee usually has a bad connotation but when it comes to specifying JavaScript, making sure a new feature doesn’t break the internet is just too big a task for one person. Today on the show we invite Mark Cohen to talk about what it is like being on the board of TC39, the institution which standardizes the JavaScript language under the ECMAScript specification. We kick things off with some history behind TC39 before diving right into some of the debates around how to implement new features within the committee and the larger JavaScript community. From there, Mark weighs in on the main goal of TC39, that of ensuring cross-browser functionality, talking about why it is such a challenging but necessary project. We also speak to Mark about their current focus of championing the move toward pattern matching in JavaScript, getting into some of the ideas being bounced around as far as syntax and all the possibilities this feature will enable. Our discussion doesn’t end there though, as we pick Mark’s brain about the processes the TC39 follows for seeing a proposal through from idea to implementation, and also hear about how they adhere to the ‘don’t break the web’ principle. So for all this and more on Enjoy the Vue, tune in today!

Key Points From This Episode:

  • Introducing Mark, their affinity for programming languages, and how they got involved with specifying JavaScript.

  • The origins of JavaScript in the TC39 group created under Ecma International.

  • The role of plenaries at TC39 and how the group comes to decisions via consensus.

  • What the pipe operator is and the different sides in the debate for its syntax.

  • Examples where big contributors to languages felt insulted by communities or decisions.

  • Cool assignment operators like Python’s walrus and Rust’s turbofish.

  • Whether ‘design by committee’ is a bad thing in the case of JavaScript.

  • Mark’s perspective that the main goal of the committee is to ensure cross-browser functionality.

  • How TC39 is preventing browser wars using the test 262 suite.

  • The desire for pattern matching in JS and why Mark is championing this.

  • How similar implementing pattern matching in JS would be to reusing switch statements.

  • The intricacies of the syntax and keywords of JS pattern matching and what will be possible.

  • Four phases of TC39 proposals and how they apply the ‘don’t break the web’ principle.

  • The failed array.prototype.flatten project and what led to the ‘smooshed gate controversy’.

  • Where to find Mark online.

  • This week’s picks!

Tweetables:

“The primary charter of the committee is to make sure that things work across browsers.” — @mpcsh_) [0:22:12]

“Companies still want control of the web and control of the users of the web, right? But there's a lot more protection now. One of the big invisible ways that this happens is a tool that the committee maintains called test 262.” — @mpcsh_) [0:25:30]

“I'm championing the pattern matching proposal.” — @mpcsh_) [0:27:29]

“So that phrase, 'don't break the web’ is a common refrain among the committee. It basically reflects our infinite backwards compatibility mandate.” — @mpcsh_) [0:46:33]

Links Mentioned in Today’s Episode:

- TC39 resources:

Proposals:

Ecma International)

- test262), TC39 (GitHub)

- Walrus Operator)

- What is Rust's turbofish?), David Pedersen

- State of JS)

- SmooshGate FAQs), Mathias Bynens

Where to Find Mark Online:

This weeks picks:

- Mark Cohen

Alex

Ari

Oscar

  • Slay the Spire), MegaCrit (Microsoft Windows, macOS, Linux, Nintendo Switch, PlayStation 4, Xbox One, iOS, Android)

Tessa

Support Enjoy the Vue)