SlideShare a Scribd company logo
Itamar Kestenbaum
TC39 - the exciting parts
Ask not what Javascript can do for you,
but what you can do for Javascript!
DID I FORGET TO RECORD MY SCREEN?
About me
@itamarok on Twitter
http://www.twitter.com/itamarok
About Eevee
ACTIVE PROPOSALS - IN PRACTICE
● Private methods and fields
● Pipeline operators
ABOUT TC39
GET INVOLVED!
How to write Javascript?How to make Javascript?
Why you should care about TC39?
● Learn a TON
● Be first
● Meta open-source
Active Proposals
Stage 0 Stage 4
Private Fields / Methods (Stage 3)
WHAT
Class members only avail. in-class
WHY
Currently:
Class members are always public
Unwanted use of your class
Easier breaking changes
Private Fields / Methods (Stage 3)
HOW
WDYT?
Objections to # syntax
Why #? Misguided answer
WHY # - the real reason
It needs to be currently invalid syntax
Won’t break any previously-written code
Pipeline Operators (Stage 1)
WHAT
Allowing infix operator to handle piping
of value through multiple methods.
WHY
Current way is difficult to read and
reason about
Pipeline Operators (Stage 1) - example
TC39 - the exciting parts
Pipeline Operators (Stage 1) - example
Pipeline Operators (Stage 1) - example
TC39 - the exciting parts
Pipeline Operators (Stage 1)Pipeline Operators (Stage 1) - example
TC39 - the exciting parts
What is TC39?
Standardizes ECMAScript
● Vendor-neutral
● Cross-platform
● General purpose
TC39
Urban Dictionary:
TC38
Environmental impact of
consumer electronics
TC45
Open Office
XML Formats
TC39
TC39 - the exciting parts
Members of TC39
TC39 Delegates
The Proposal Process
Story time
Story time
Story time
Story time
Strawperson Proposal Draft Candidate Finish
The Stages
0 1 2 3 4
Strawperson Strawperson Proposal Draft Candidate Finish
0 1 2 3 4
Stage 0
● Created a proposal
● It’s planned to be presented at TC39
Proposal
Stage 1
● Champion
● Challenge & Solution
● Use Cases & Syntax
● High-level API (optional)
● Pollyfills (optional)
Strawperson Proposal Draft Candidate Finish
0 1 2 3 4
Strawperson Proposal Draft Candidate Finish
0 1 2 3 4
Proposal
Draft
Stage 2
● Formal Spec
● Expected to be implemented
Strawperson Proposal Draft Candidate Finish
0 1 2 3 4
Strawperson Proposal Draft Candidate Finish
0 1 2 3 4
Draft
Candidate
Stage 3
● Approval on Spec
● Any further changes will now
require feedback from
implementations and users
Strawperson Proposal Draft Candidate Finish
0 1 2 3 4
Candidate Strawperson Proposal Draft Candidate Finish
0 1 2 3 4
Finished
Stage 4
● Ready to be shipped!
● Tests are written and pass
● Implementation exists x2
● No changes expected
● See you next July!
Strawperson Proposal Draft Candidate Finish
0 1 2 3 4
Get Involved!
How you can contribute
● Github https://github.com/tc39/
○ Discuss current proposals
● Twitter #tc39
● IRC #tc39
● ESDiscuss.org
TC39 - the exciting parts
What do you want to see in the language that
you use every day?
How do you feel about other proposals?
TC39 - the exciting parts
TC39 - the exciting parts
TC39 - the exciting parts
TC39 - the exciting parts
TC39 - the exciting parts
Ask not what Javascript can do for you,
but what you can do for Javascript!
Thanks!
Itamar Kestenbaum

More Related Content

PDF
Evolving as a QA - do you still care about quality?
Michał Krzyżanowski
 
PDF
Does Your Code Measure Up?
Adam Culp
 
PDF
AgilePT2012 PGMADS
Catarina Reis
 
ODP
SOLID refactoring - racing car katas
Georg Berky
 
PDF
Day1 - TDD (Lecture SS 2015)
wolframkriesing
 
PDF
Secure Your Pipeline While Keeping Your Developers and Admins Happy
DevOps.com
 
PDF
Testing: Heaven or Hell
Andrew Hurd
 
PPTX
Class 4 IPO and Intro to Ruby
Stephen Parsons
 
Evolving as a QA - do you still care about quality?
Michał Krzyżanowski
 
Does Your Code Measure Up?
Adam Culp
 
AgilePT2012 PGMADS
Catarina Reis
 
SOLID refactoring - racing car katas
Georg Berky
 
Day1 - TDD (Lecture SS 2015)
wolframkriesing
 
Secure Your Pipeline While Keeping Your Developers and Admins Happy
DevOps.com
 
Testing: Heaven or Hell
Andrew Hurd
 
Class 4 IPO and Intro to Ruby
Stephen Parsons
 

Similar to TC39 - the exciting parts (20)

PDF
From the proposal to ECMAScript – Step by Step
Igalia
 
PDF
Nobody asks "How is JavaScript?"
Igalia
 
PDF
From the proposal to ECMAScript, step by step
Igalia
 
PDF
TC39: How we work, what we are working on, and how you can get involved (dotJ...
Igalia
 
PDF
What's Coming Next to JavaScript
Igalia
 
PDF
Community-driven Language Design at TC39 on the JavaScript Pipeline Operator ...
Igalia
 
PDF
Reactive Software Systems
Behrad Zari
 
PDF
Reactive applications using Akka
Miguel Pastor
 
PDF
TC39, their process and some ECMAScript features
Andre Eberhardt
 
PDF
Reactive Web-Applications @ LambdaDays
Manuel Bernhardt
 
PDF
Voxxed Days Vienna - The Why and How of Reactive Web-Applications on the JVM
Manuel Bernhardt
 
PDF
Take a Look at Akka+Java (English version)
GlobalLogic Ukraine
 
PDF
## Introducing a reactive Scala-Akka based system in a Java centric company
Milan Aleksić
 
PDF
100% JS
__lucas
 
PDF
The Evolution of Testing Methodology at AWS: From Status Quo to Formal Method...
C4Media
 
PDF
State of Akka 2017 - The best is yet to come
Konrad Malawski
 
PDF
BigDecimal: Avoid rounding errors on decimals in JavaScript (Node.TLV 2020)
Igalia
 
PDF
Big Decimal: Avoid Rounding Errors on Decimals in JavaScript
Igalia
 
PDF
Deck 8983a1d9-68df-4447-8481-3b4fd0de734c-9-52-74
Ivy Rueb
 
PDF
Beyond the Code Itself: How Programmers Really Look at Pull Requests
Denae Ford
 
From the proposal to ECMAScript – Step by Step
Igalia
 
Nobody asks "How is JavaScript?"
Igalia
 
From the proposal to ECMAScript, step by step
Igalia
 
TC39: How we work, what we are working on, and how you can get involved (dotJ...
Igalia
 
What's Coming Next to JavaScript
Igalia
 
Community-driven Language Design at TC39 on the JavaScript Pipeline Operator ...
Igalia
 
Reactive Software Systems
Behrad Zari
 
Reactive applications using Akka
Miguel Pastor
 
TC39, their process and some ECMAScript features
Andre Eberhardt
 
Reactive Web-Applications @ LambdaDays
Manuel Bernhardt
 
Voxxed Days Vienna - The Why and How of Reactive Web-Applications on the JVM
Manuel Bernhardt
 
Take a Look at Akka+Java (English version)
GlobalLogic Ukraine
 
## Introducing a reactive Scala-Akka based system in a Java centric company
Milan Aleksić
 
100% JS
__lucas
 
The Evolution of Testing Methodology at AWS: From Status Quo to Formal Method...
C4Media
 
State of Akka 2017 - The best is yet to come
Konrad Malawski
 
BigDecimal: Avoid rounding errors on decimals in JavaScript (Node.TLV 2020)
Igalia
 
Big Decimal: Avoid Rounding Errors on Decimals in JavaScript
Igalia
 
Deck 8983a1d9-68df-4447-8481-3b4fd0de734c-9-52-74
Ivy Rueb
 
Beyond the Code Itself: How Programmers Really Look at Pull Requests
Denae Ford
 
Ad

Recently uploaded (20)

PDF
Economic Impact of Data Centres to the Malaysian Economy
flintglobalapac
 
PDF
Research-Fundamentals-and-Topic-Development.pdf
ayesha butalia
 
PPTX
What-is-the-World-Wide-Web -- Introduction
tonifi9488
 
PPTX
cloud computing vai.pptx for the project
vaibhavdobariyal79
 
PDF
AI-Cloud-Business-Management-Platforms-The-Key-to-Efficiency-Growth.pdf
Artjoker Software Development Company
 
PDF
A Day in the Life of Location Data - Turning Where into How.pdf
Precisely
 
PDF
NewMind AI Weekly Chronicles - July'25 - Week IV
NewMind AI
 
PPTX
Applied-Statistics-Mastering-Data-Driven-Decisions.pptx
parmaryashparmaryash
 
PPTX
OA presentation.pptx OA presentation.pptx
pateldhruv002338
 
PDF
Event Presentation Google Cloud Next Extended 2025
minhtrietgect
 
PDF
BLW VOCATIONAL TRAINING SUMMER INTERNSHIP REPORT
codernjn73
 
PDF
Google I/O Extended 2025 Baku - all ppts
HusseinMalikMammadli
 
PDF
The Evolution of KM Roles (Presented at Knowledge Summit Dublin 2025)
Enterprise Knowledge
 
PDF
How-Cloud-Computing-Impacts-Businesses-in-2025-and-Beyond.pdf
Artjoker Software Development Company
 
PDF
Responsible AI and AI Ethics - By Sylvester Ebhonu
Sylvester Ebhonu
 
PDF
Doc9.....................................
SofiaCollazos
 
PDF
Software Development Methodologies in 2025
KodekX
 
PDF
Advances in Ultra High Voltage (UHV) Transmission and Distribution Systems.pdf
Nabajyoti Banik
 
PDF
A Strategic Analysis of the MVNO Wave in Emerging Markets.pdf
IPLOOK Networks
 
PDF
Brief History of Internet - Early Days of Internet
sutharharshit158
 
Economic Impact of Data Centres to the Malaysian Economy
flintglobalapac
 
Research-Fundamentals-and-Topic-Development.pdf
ayesha butalia
 
What-is-the-World-Wide-Web -- Introduction
tonifi9488
 
cloud computing vai.pptx for the project
vaibhavdobariyal79
 
AI-Cloud-Business-Management-Platforms-The-Key-to-Efficiency-Growth.pdf
Artjoker Software Development Company
 
A Day in the Life of Location Data - Turning Where into How.pdf
Precisely
 
NewMind AI Weekly Chronicles - July'25 - Week IV
NewMind AI
 
Applied-Statistics-Mastering-Data-Driven-Decisions.pptx
parmaryashparmaryash
 
OA presentation.pptx OA presentation.pptx
pateldhruv002338
 
Event Presentation Google Cloud Next Extended 2025
minhtrietgect
 
BLW VOCATIONAL TRAINING SUMMER INTERNSHIP REPORT
codernjn73
 
Google I/O Extended 2025 Baku - all ppts
HusseinMalikMammadli
 
The Evolution of KM Roles (Presented at Knowledge Summit Dublin 2025)
Enterprise Knowledge
 
How-Cloud-Computing-Impacts-Businesses-in-2025-and-Beyond.pdf
Artjoker Software Development Company
 
Responsible AI and AI Ethics - By Sylvester Ebhonu
Sylvester Ebhonu
 
Doc9.....................................
SofiaCollazos
 
Software Development Methodologies in 2025
KodekX
 
Advances in Ultra High Voltage (UHV) Transmission and Distribution Systems.pdf
Nabajyoti Banik
 
A Strategic Analysis of the MVNO Wave in Emerging Markets.pdf
IPLOOK Networks
 
Brief History of Internet - Early Days of Internet
sutharharshit158
 
Ad

TC39 - the exciting parts

Editor's Notes

  • #2: John F Kennedy once said “Ask not what your country can do for you, but what you can do for your country!” JFK was calling for all citizens to contribute in some kind of way to the social good of the country. Tonight, I hope to get Javascript developers to become interested in contributing their time to making the language better.
  • #4: A little bit about me I’m a software engineer at Lemonade My fav open source project to contribute to is vscode I love playing basketball Hanging out w my family
  • #5: Where I mostly tweet complete nonsense.
  • #6: This is Eevee - we adopted her a week ago, and she’s a vicious killer
  • #11: Creating methods and fields on classes that can be accessed only from inside the class. *NEXT* Previously, methods and fields declared on a class were always public. *NEXT* Anyone can access them - and potentially manipulate them at will. A HUGE disadvantage. Could lead to misuse of methods that are only meant for internal use in the class. *NEXT*
  • #12: As you can see - we have a standard class definition here. And id is accessible easily outside of the actual class. Once we make the field private, it’s no longer accessible outside the class. * NEXT *
  • #14: A few people have raised concerns about this - but not very valid concerns. Hash isn’t very javascripty? Using _ instead of # How many people here already use that in their code? *NEXT* So much would break if that was adopted Also, nothing is very javascripty until it is.
  • #15: Then there are some silly responses - like: We already have those kinds of private fields - they’re called underscore properties. *NEXT* Which, I hope this person isn’t actually doing. Their method is as public as the ending of Game of Thrones.
  • #16: The real reason we are going toward # is because it needs to be invalid That way we don’t break previously written code, and don’t have accidental conflicts.
  • #17: Previously, you would have to wrap each value and resulting value of previous operation in the next function.
  • #18: So as an example, we’ll take a cc number as a string and obscure all but the last four digits.
  • #19: I know there are simpler ways to do this - but I broke the process up into three methods on purpose. * NEXT *
  • #20: This is of course extremely hard to read. You need to carry the mental load of finding the innermost function, and then following the logic outward. And that’s assuming you can remember what each function does. WAY TOO MUCH WRAPPING * NEXT *
  • #21: This is of course extremely hard to read. You need to carry the mental load of finding the innermost function, and then following the logic outward. And that’s assuming you can remember what each function does. WAY TOO MUCH WRAPPING * NEXT *
  • #22: This is of course extremely hard to read. You need to carry the mental load of finding the innermost function, and then following the logic outward. And that’s assuming you can remember what each function does. * NEXT *
  • #23: As you can see - we have a standard class definition here. And id is accessible easily outside of the actual class. Once we make the field private, it’s no longer accessible outside the class. * NEXT *
  • #24: For this feature, there’s been some really interesting discussion on things like how much partial application can be allowed, and there are even 2 different approaches being considered. But just like with private methods - there’s concern that the syntax was a bit * NEXT * homely.
  • #26: TC39 is a part of ECMA International. TC39 standardizes what will go into the ECMAScript standard. Standardization of the language syntax, semantics, and libraries and complementary technologies that support the language. TC39’s committee, and the decisions they make are Vendor neutral - they are not partial to any one manufacturer of a browser (chrome, firefox, Edge, Edge on Mac for some reason) Cross-platform - they are not restricted to specific platforms like server-side only, or client-side. General purpose - it doesn’t make assumptions on how you’ll use it. Making a simon game, etc.
  • #28: By the way, I checked - and TC38 is in charge of Environmental impact of consumer electronics. *NEXT* Hippies
  • #29: And TC45 is in charge of Open Office XML Formats *NEXT* Nerds
  • #30: Anyway - TC39 looks a bit more like this. Might seem a bit more familiar to us. So who exactly are these *NEXT*
  • #31: Masters of the Javascript universe who literally decide how we work every day?
  • #32: ECMA Itself is made up of companies The membership of ECMA’s TC39 is made up of Ordinary members - Companies that are voting members of ECMA Large members that have experience and interest in shaping the web Lots of non-profits including universities, the library of congress, and somehow Ben Gurion University? And small and medium size organizations who are interested in taking an active role in building out the ECMAScript standard
  • #33: TC39 meetings are attended by delegates of the companies we mentioned earlier. They represent these companies in matters relating to evaluating different proposals, and deciding which proposals get moved to the next stage. So the members of TC39 are companies - and each of them sends delegates. Every few months, TC39 gets together and discusses the proposals that have come up, and which proposals qualify to move from one stage to another. July of each year - a new version of ECMAScript is approved by the General Assembly
  • #40: Stage 0 is called the “strawman” phase It just means a proposal exists. Your proposal might end up in the form of a
  • #41: At stage 1, you need to find someone who is a delegate to TC39 to take your proposal forward. This means you need to make a good enough point that your proposal solves a big enough need in the community. You need to provide a written description of the problem and solution You’ll need to show actual use-cases, and the syntax of the proposal itself. You also need to provide details of high-level API At this point, expect major changes to the way the API is shaped and the logic behind the implementation details. There can definitely be polyfills that exist at this stage - meaning you can theoretically start using even stage 1 features in your apps but with caution. SHOW POLYFILL
  • #43: Stage 2 means that the committee has spent time defining and discussing the API you described and the solution you suggested in Stage 1. If your proposal is accepted, it’s considered experimental and could be included in implementations. Still considered experimental. So you’re still going to need to use babel for it, and changes are expected.
  • #45: Stage 3 means changes are expected to be very minor and only based on actual real-life experience of users and implementations. SANDBOXING IS HARD. You can’t really soft-launch a feature once it exists and is known. But ECMA stages give you the ability to define maturity levels so the onus is on the user to treat their builds accordingly.
  • #47: Stage 4 means all tests are written for the spec, it exists in at least two major implementations. At this point no changes are expected. If they want to change
  • #49: Stage 4 means all tests are written for the spec, it exists in at least two major implementations. At this point no changes are expected. If they want to change
  • #50: I feel like people have this concept of Javascript that it’s something that just happens, Or that it’s a high ivory tower that is not approachable by others.
  • #51: You might even run into some names you recognize on there.
  • #52: And some that are complex and would require a ton of work.
  • #53: When in reality there are tons of vibrant discussions happening about the proposals - sometimes they’re requests to add functionality to proposals. Like this one, which requests that @final be added as a decorator so that a user can define that a field can not be overridden once defined in a class.
  • #54: When in reality there are tons of vibrant discussions happening about the proposals - sometimes they’re requests to add functionality to proposals. Like this one, which requests that @final be added as a decorator so that a user can define that a field can not be overridden once defined in a class.
  • #55: Some proposals are really simple and straightforward
  • #56: And some that are complex and would require a ton of work.