Modern Open Source NODE.JS Packages

Safely Build, Publish & Maintain
ES2015, ES2016 Packages Today

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)

JS History

Standardization timeline

tc39 & Ecma-262

Committee & Standard

Ec1

June 1997

Ec2

June 1998

Ec3

December 1999

Ec4

ABANDONED!

:(

EC HArmony

August 2008

Ec5

December 2009

ES6 ES2015

June 2015!!!

ES2016

June 2016 :)

ES2017

WIP

New Process

You can contribute too!

Stage 0 (Strawman)

Allow input into the specification

tc39.github.io/process-document

Stage 1 (PROPOSAL)

Make the case, Describe a solution, Identify challenges

tc39.github.io/process-document

Stage 2 (draft)

Precisely describe syntax & semantics using formal spec language

tc39.github.io/process-document

Stage 3 (Candidate)

further refinement will require feedback from implementations and users

tc39.github.io/process-document

Stage 4 (Finished)

ready for inclusion in the formal ECMAScript standard

tc39.github.io/process-document

I CAN HAZ ES2016?

Not YET!

Spec compatibility

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

Long-term Support!

https://github.com/nodejs/LTS

NO MORE WAITING!

Transpiler(s) to the rescue

MOAR Transpilers!

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

ICYMI ...

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

Supersets are the new frameworks!

Backward compatible?

modern workflow!

Tools

simple workflow

Package.json

Package.json

Package.json

.travis.yml

Easy!

right?

GOtchas

FINAL SPEC CHANGED

ES7 !== ES2016

COMPILED API differs

 FROM SOURCE

(compiled == source && compiled !== source) === true

PERFORMANCE LOSS

+

NO OPTIMIZATION

Sugar

vs

Core

ABANDONWARE

Tool Decay + Fragile Ecosystems

TOOLING HEAVY

Setup, Config, Environments, Virtualization, Resources

It gets better

It *IS* better

It wilL be even better

CONTRIBUTE AND MAKE IT BETTER!

github.com/tc39
github.com/ahmadnassri/npm-package-generator

Thank you!

@AhmadNassri

AhmadNassri.com

AhmadNassri.com/talks
TechMasters.chat
NodeSchool.io/toronto
FSTO.co

Modern Open Source Node.js Packages

By Ahmad Nassri

Modern Open Source Node.js Packages

Building and publishing packages with ES2015/ES2016, covering everything from transpiler choices, testing, and publishing on npm.

  • 1,011