Slide 1

Slide 1 text

MODERN OPEN SOURCE NODE.JS PACKAGES Safely Build, Publish & Maintain ES2015, ES2016 Packages Today

Slide 2

Slide 2 text

HAI! ENTREPRENEUR, HACKER, DEVELOPER OPEN SOURCE ADVOCATE & DOG LOVER @AhmadNassri AhmadNassri.com VP of Engineering at Mashape, Founder at Tech Masters, Mentor at Node School Toronto, Board Member at Full Stack Toronto, Board Member at Open API Initiative, Editor at The RESTful Web. Tech Outlaw, wanted by a 3rd world dictator (true story)

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

JS HISTORY STANDARDIZATION TIMELINE

Slide 6

Slide 6 text

TC39 & ECMA-262 COMMITTEE & STANDARD

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

EC1 JUNE 1997

Slide 9

Slide 9 text

EC2 JUNE 1998

Slide 10

Slide 10 text

EC3 DECEMBER 1999

Slide 11

Slide 11 text

EC4 ABANDONED! :(

Slide 12

Slide 12 text

EC HARMONY AUGUST 2008

Slide 13

Slide 13 text

EC5 DECEMBER 2009

Slide 14

Slide 14 text

ES6 ES2015 JUNE 2015!!!

Slide 15

Slide 15 text

ES2016 JUNE 2016 :)

Slide 16

Slide 16 text

ES2017 WIP

Slide 17

Slide 17 text

NEW PROCESS YOU CAN CONTRIBUTE TOO!

Slide 18

Slide 18 text

STAGE 0 (STRAWMAN) ALLOW INPUT INTO THE SPECIFICATION tc39.github.io/process-document

Slide 19

Slide 19 text

STAGE 1 (PROPOSAL) MAKE THE CASE, DESCRIBE A SOLUTION, IDENTIFY CHALLENGES tc39.github.io/process-document

Slide 20

Slide 20 text

STAGE 2 (DRAFT) PRECISELY DESCRIBE SYNTAX & SEMANTICS USING FORMAL SPEC LANGUAGE tc39.github.io/process-document

Slide 21

Slide 21 text

STAGE 3 (CANDIDATE) FURTHER REFINEMENT WILL REQUIRE FEEDBACK FROM IMPLEMENTATIONS AND USERS tc39.github.io/process-document

Slide 22

Slide 22 text

STAGE 4 (FINISHED) READY FOR INCLUSION IN THE FORMAL ECMASCRIPT STANDARD tc39.github.io/process-document

Slide 23

Slide 23 text

I CAN HAZ ES2016?

Slide 24

Slide 24 text

NOT YET!

Slide 25

Slide 25 text

SPEC COMPATIBILITY https://kangax.github.io/compat-table/es6/

Slide 26

Slide 26 text

LONG-TERM SUPPORT! https://github.com/nodejs/LTS

Slide 27

Slide 27 text

NO MORE WAITING!

Slide 28

Slide 28 text

TRANSPILER(S) TO THE RESCUE

Slide 29

Slide 29 text

MOAR TRANSPILERS! https://github.com/jashkenas/coffeescript/wiki/list-of-languages-that-compile-to-js

Slide 30

Slide 30 text

ICYMI ... https://github.com/jashkenas/coffeescript/wiki/list-of-languages-that-compile-to-js

Slide 31

Slide 31 text

SUPERSETS ARE THE NEW FRAMEWORKS!

Slide 32

Slide 32 text

BACKWARD COMPATIBLE?

Slide 33

Slide 33 text

MODERN WORKFLOW!

Slide 34

Slide 34 text

TOOLS

Slide 35

Slide 35 text

SIMPLE WORKFLOW

Slide 36

Slide 36 text

PACKAGE.JSON

Slide 37

Slide 37 text

PACKAGE.JSON

Slide 38

Slide 38 text

PACKAGE.JSON

Slide 39

Slide 39 text

.TRAVIS.YML

Slide 40

Slide 40 text

EASY! RIGHT?

Slide 41

Slide 41 text

GOTCHAS

Slide 42

Slide 42 text

FINAL SPEC CHANGED ES7 !== ES2016

Slide 43

Slide 43 text

COMPILED API DIFFERS FROM SOURCE (compiled == source && compiled !== source) === true

Slide 44

Slide 44 text

PERFORMANCE LOSS + NO OPTIMIZATION

Slide 45

Slide 45 text

SUGAR vs CORE

Slide 46

Slide 46 text

ABANDONWARE Tool Decay + Fragile Ecosystems

Slide 47

Slide 47 text

TOOLING HEAVY Setup, Config, Environments, Virtualization, Resources

Slide 48

Slide 48 text

IT GETS BETTER

Slide 49

Slide 49 text

IT *IS* BETTER

Slide 50

Slide 50 text

IT WILL BE EVEN BETTER

Slide 51

Slide 51 text

CONTRIBUTE AND MAKE IT BETTER! github.com/tc39

Slide 52

Slide 52 text

github.com/ahmadnassri/npm-package-generator THANK YOU! @AhmadNassri AhmadNassri.com AhmadNassri.com/talks TechMasters.chat NodeSchool.io/toronto FSTO.co