SlideShare a Scribd company logo
1 of 57
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
Pipeline Operators (Stage 1) - example
Pipeline Operators (Stage 1) - example
Pipeline Operators (Stage 1)Pipeline Operators (Stage 1) - example
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
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
What do you want to see in the language that
you use every day?
How do you feel about other proposals?
Ask not what Javascript can do for you,
but what you can do for Javascript!
Thanks!
Itamar Kestenbaum

More Related Content

Similar to TC39 - the exciting parts

Shake that-fud-vrs5
Shake that-fud-vrs5Shake that-fud-vrs5
Shake that-fud-vrs5
wimjongman
 

Similar to TC39 - the exciting parts (20)

Intro to java 8
Intro to java 8Intro to java 8
Intro to java 8
 
Python fundamental course curriculum
Python fundamental course curriculumPython fundamental course curriculum
Python fundamental course curriculum
 
Struggles and Challenges in STLC in Ques No.13
Struggles and Challenges in STLC in Ques No.13Struggles and Challenges in STLC in Ques No.13
Struggles and Challenges in STLC in Ques No.13
 
Chasing the RESTful Trinity - Client CLI and Documentation
Chasing the RESTful Trinity - Client CLI and DocumentationChasing the RESTful Trinity - Client CLI and Documentation
Chasing the RESTful Trinity - Client CLI and Documentation
 
Resful Trinity Code One - San Francisco
Resful Trinity Code One - San FranciscoResful Trinity Code One - San Francisco
Resful Trinity Code One - San Francisco
 
Style Validator at breakout session of TPAC2015
Style Validator at breakout session of TPAC2015Style Validator at breakout session of TPAC2015
Style Validator at breakout session of TPAC2015
 
DQF API Demo with Trados Studio, and Japanese Style Guide for Quality Transl...
 DQF API Demo with Trados Studio, and Japanese Style Guide for Quality Transl... DQF API Demo with Trados Studio, and Japanese Style Guide for Quality Transl...
DQF API Demo with Trados Studio, and Japanese Style Guide for Quality Transl...
 
Its easy! contributing to open source - Devnexus 2020
Its easy! contributing to open source - Devnexus 2020Its easy! contributing to open source - Devnexus 2020
Its easy! contributing to open source - Devnexus 2020
 
2020 05-02 fireside chat lightning flow
2020 05-02 fireside chat lightning flow2020 05-02 fireside chat lightning flow
2020 05-02 fireside chat lightning flow
 
Model-Based Systems Engineering Tool How To Use Innoslate Pt. 2
Model-Based Systems Engineering Tool How To Use Innoslate Pt. 2Model-Based Systems Engineering Tool How To Use Innoslate Pt. 2
Model-Based Systems Engineering Tool How To Use Innoslate Pt. 2
 
[RakutenTechConf2013] [D-4] Singapore de Melonsoda
[RakutenTechConf2013] [D-4] Singapore de Melonsoda[RakutenTechConf2013] [D-4] Singapore de Melonsoda
[RakutenTechConf2013] [D-4] Singapore de Melonsoda
 
Sprint Zero in Scrum
Sprint Zero in ScrumSprint Zero in Scrum
Sprint Zero in Scrum
 
Gestión de infraestructura tomcat/Tom EE con tfactory
Gestión de infraestructura tomcat/Tom EE con tfactoryGestión de infraestructura tomcat/Tom EE con tfactory
Gestión de infraestructura tomcat/Tom EE con tfactory
 
Shake that-fud-vrs5
Shake that-fud-vrs5Shake that-fud-vrs5
Shake that-fud-vrs5
 
Dev Nexus 2017 - TDD with React - Josh Quintana & Tom Gamble
Dev Nexus 2017 - TDD with React - Josh Quintana & Tom GambleDev Nexus 2017 - TDD with React - Josh Quintana & Tom Gamble
Dev Nexus 2017 - TDD with React - Josh Quintana & Tom Gamble
 
How to Participate Devoxx 2013 Quickie
How to Participate Devoxx 2013 QuickieHow to Participate Devoxx 2013 Quickie
How to Participate Devoxx 2013 Quickie
 
Hexagonal Architecture.pdf
Hexagonal Architecture.pdfHexagonal Architecture.pdf
Hexagonal Architecture.pdf
 
Kubernetes at Reddit: An Origin Story - KubeCon NA 2018
Kubernetes at Reddit: An Origin Story - KubeCon NA 2018Kubernetes at Reddit: An Origin Story - KubeCon NA 2018
Kubernetes at Reddit: An Origin Story - KubeCon NA 2018
 
01 introduction to struts2
01 introduction to struts201 introduction to struts2
01 introduction to struts2
 
Getting Started with SOA using SwitchYard
Getting Started with SOA using SwitchYardGetting Started with SOA using SwitchYard
Getting Started with SOA using SwitchYard
 

Recently uploaded

Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Victor Rentea
 
Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...
Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...
Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...
panagenda
 
Tales from a Passkey Provider Progress from Awareness to Implementation.pptx
Tales from a Passkey Provider  Progress from Awareness to Implementation.pptxTales from a Passkey Provider  Progress from Awareness to Implementation.pptx
Tales from a Passkey Provider Progress from Awareness to Implementation.pptx
FIDO Alliance
 

Recently uploaded (20)

Portal Kombat : extension du réseau de propagande russe
Portal Kombat : extension du réseau de propagande russePortal Kombat : extension du réseau de propagande russe
Portal Kombat : extension du réseau de propagande russe
 
UiPath manufacturing technology benefits and AI overview
UiPath manufacturing technology benefits and AI overviewUiPath manufacturing technology benefits and AI overview
UiPath manufacturing technology benefits and AI overview
 
Navigating the Large Language Model choices_Ravi Daparthi
Navigating the Large Language Model choices_Ravi DaparthiNavigating the Large Language Model choices_Ravi Daparthi
Navigating the Large Language Model choices_Ravi Daparthi
 
Cyber Insurance - RalphGilot - Embry-Riddle Aeronautical University.pptx
Cyber Insurance - RalphGilot - Embry-Riddle Aeronautical University.pptxCyber Insurance - RalphGilot - Embry-Riddle Aeronautical University.pptx
Cyber Insurance - RalphGilot - Embry-Riddle Aeronautical University.pptx
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...
Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...
Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...
 
Observability Concepts EVERY Developer Should Know (DevOpsDays Seattle)
Observability Concepts EVERY Developer Should Know (DevOpsDays Seattle)Observability Concepts EVERY Developer Should Know (DevOpsDays Seattle)
Observability Concepts EVERY Developer Should Know (DevOpsDays Seattle)
 
Design Guidelines for Passkeys 2024.pptx
Design Guidelines for Passkeys 2024.pptxDesign Guidelines for Passkeys 2024.pptx
Design Guidelines for Passkeys 2024.pptx
 
Design and Development of a Provenance Capture Platform for Data Science
Design and Development of a Provenance Capture Platform for Data ScienceDesign and Development of a Provenance Capture Platform for Data Science
Design and Development of a Provenance Capture Platform for Data Science
 
TEST BANK For Principles of Anatomy and Physiology, 16th Edition by Gerard J....
TEST BANK For Principles of Anatomy and Physiology, 16th Edition by Gerard J....TEST BANK For Principles of Anatomy and Physiology, 16th Edition by Gerard J....
TEST BANK For Principles of Anatomy and Physiology, 16th Edition by Gerard J....
 
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
 
Working together SRE & Platform Engineering
Working together SRE & Platform EngineeringWorking together SRE & Platform Engineering
Working together SRE & Platform Engineering
 
Introduction to FIDO Authentication and Passkeys.pptx
Introduction to FIDO Authentication and Passkeys.pptxIntroduction to FIDO Authentication and Passkeys.pptx
Introduction to FIDO Authentication and Passkeys.pptx
 
ADP Passwordless Journey Case Study.pptx
ADP Passwordless Journey Case Study.pptxADP Passwordless Journey Case Study.pptx
ADP Passwordless Journey Case Study.pptx
 
Simplifying Mobile A11y Presentation.pptx
Simplifying Mobile A11y Presentation.pptxSimplifying Mobile A11y Presentation.pptx
Simplifying Mobile A11y Presentation.pptx
 
Tales from a Passkey Provider Progress from Awareness to Implementation.pptx
Tales from a Passkey Provider  Progress from Awareness to Implementation.pptxTales from a Passkey Provider  Progress from Awareness to Implementation.pptx
Tales from a Passkey Provider Progress from Awareness to Implementation.pptx
 
JavaScript Usage Statistics 2024 - The Ultimate Guide
JavaScript Usage Statistics 2024 - The Ultimate GuideJavaScript Usage Statistics 2024 - The Ultimate Guide
JavaScript Usage Statistics 2024 - The Ultimate Guide
 
Vector Search @ sw2con for slideshare.pptx
Vector Search @ sw2con for slideshare.pptxVector Search @ sw2con for slideshare.pptx
Vector Search @ sw2con for slideshare.pptx
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
Stronger Together: Developing an Organizational Strategy for Accessible Desig...
Stronger Together: Developing an Organizational Strategy for Accessible Desig...Stronger Together: Developing an Organizational Strategy for Accessible Desig...
Stronger Together: Developing an Organizational Strategy for Accessible Desig...
 

TC39 - the exciting parts

Editor's Notes

  1. 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.
  2. 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
  3. Where I mostly tweet complete nonsense.
  4. This is Eevee - we adopted her a week ago, and she’s a vicious killer
  5. 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*
  6. 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 *
  7. 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.
  8. 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.
  9. 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.
  10. Previously, you would have to wrap each value and resulting value of previous operation in the next function.
  11. So as an example, we’ll take a cc number as a string and obscure all but the last four digits.
  12. I know there are simpler ways to do this - but I broke the process up into three methods on purpose. * NEXT *
  13. 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 *
  14. 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 *
  15. 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 *
  16. 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 *
  17. 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.
  18. 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.
  19. By the way, I checked - and TC38 is in charge of Environmental impact of consumer electronics. *NEXT* Hippies
  20. And TC45 is in charge of Open Office XML Formats *NEXT* Nerds
  21. Anyway - TC39 looks a bit more like this. Might seem a bit more familiar to us. So who exactly are these *NEXT*
  22. Masters of the Javascript universe who literally decide how we work every day?
  23. 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
  24. 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
  25. Stage 0 is called the “strawman” phase It just means a proposal exists. Your proposal might end up in the form of a
  26. 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
  27. 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.
  28. 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.
  29. 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
  30. 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
  31. 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.
  32. You might even run into some names you recognize on there.
  33. And some that are complex and would require a ton of work.
  34. 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.
  35. 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.
  36. Some proposals are really simple and straightforward
  37. And some that are complex and would require a ton of work.