SlideShare uma empresa Scribd logo
1 de 43
March 31, 2015
by @rvagg
The Future of Node
The Essence of Node
1. JavaScript on the server
2. Asynchronous programming
3. Module-driven development
4. Small core, vibrant
ecosystem
5. New models in Open Source
The Essence of Node
JavaScript on the Server
So what?
• “Developer joy”
• Productive
• Approachable, sans quirks
• Massive pool of developers
JavaScript on the Server
The Future of Node
• JavaScript is not going away (Dart anyone?)
• Node adoption makes it “the language of the web”
• Helping to drive the future of JavaScript
• Challenges for learning as language complexity
increases
JavaScript on the Server
Asynchronous Programming
Eh?
• Alternative programmer mindset
• API focus on callbacks, events and streams
• Limits to Sync()-ability, generally shunned
• Single-threaded!
Asynchronous Programming
So what?
High-performance paradigm—performance comes free
Asynchronous Programming
System.out.println("Reading file...");
BufferedReader br = new BufferedReader(new FileReader("in.txt"));
try {
StringBuilder sb = new StringBuilder();
String line;
while ((line = br.readLine()) != null)
sb.append(line + "n");
System.out.print(sb.toString());
} finally {
br.close();
}
System.out.println("Finished reading file!");
So what?
• Scalable:
• Handle huge amounts of I/O with single process
• Single-threaded encourages scalable design
patterns
• Reflective of how the world really works
Asynchronous Programming
The Future of Node
An ongoing battle over programming paradigms
• Promises
• Generator functions for async
• async await (ES7)
The human instinct is to make everything serial!
Asynchronous Programming
Module-driven Development
Eh?
• npm
• Module system solves most dependency-hell
problems
• Simplicity!
Module-driven Development
So what?
The holy-grail of decoupled and reusable coding
Module-driven Development
So what?
Small chunks of code:
• Focused concerns
• Testable
• Grokkable
• Documentable
• Sharable
• Ease of collaboration
Module-driven Development
module.exports = function archy (obj, prefix, opts) {
if (prefix === undefined) prefix = '';
if (!opts) opts = {};
var chr = function (s) {
var chars = {
'│' : '|',
'└' : '`',
'├' : '+',
'─' : '-',
'┬' : '-'
};
return opts.unicode === false ? chars[s] : s;
};
if (typeof obj === 'string') obj = { label : obj };
var nodes = obj.nodes || [];
var lines = (obj.label || '').split('n');
var splitter = 'n' + prefix + (nodes.length ? chr('│') : ' ') + ' ';
return prefix
+ lines.join(splitter) + 'n'
+ nodes.map(function (node, ix) {
var last = ix === nodes.length - 1;
var more = node.nodes && node.nodes.length;
var prefix_ = prefix + (last ? ' ' : chr('│')) + ' ';
return prefix
+ (last ? chr('└') : chr('├')) + chr('─')
+ (more ? chr('┬') : chr('─')) + ' '
+ archy(node, prefix_, opts).slice(prefix.length + 2)
;
}).join('')
;
};
https://github.com/substack/node-archy
So what?
2000 - 2010: The golden era of the software monolith
2010+: SOA all the things!
2014+: “The great unbundling”
Module-driven Development
Modularity in the enterprise
• Monoliths represent a huge business risk
• Optimise for “throw-away-ability”
• Business and code agility
• Webscale!
This is Node’s natural home
Module-driven Development
The Future of Node
• npm focused on module-driven development
• Service-focused infrastructure libraries
• Continued evolution of versioning conventions
• Continued discussion about transitive dependency
problems
• Module-driven development for the browser
• ES6 Modules?
Module-driven Development
Small Core, Vibrant Ecosystem
Eh?
• Node's core contains mostly essentials
• Constant debate about what gets in
• npm & Node's modularity enables a vibrant
ecosystem
• Experimentation pushed to the edges
Small Core, Vibrant Ecosystem
So what?
"The standard library is where modules go to die." —
Kenneth Reitz
Small Core, Vibrant Ecosystem
So what?
Not stuck with as many "bad parts" forever
• Domains?
• Streams2?
• <insert pet-hate Node-core feature here>
Small Core, Vibrant Ecosystem
So what?
Experimentation!
• Build tools: Grunt, Gulp, etc.
• Browser tools: Browserify, WebPack
• Level*
• StackGL, etc.
• Desktop application tooling: NW.js, Atom
• IoT & robotics
• Languages & language features
Small Core, Vibrant Ecosystem
The Future of Node
• Core fiercely guarded
• Difficulty adapting core to new language features
• Tension with V8’s expansion
• StrongMode, SoundScript
• Intl
• Improved support for userland extension (NAN!)
Small Core, Vibrant Ecosystem
New Models In Open Source
Eh?
• Node was born in the GitHub era but is pushing at the
boundaries
• Many projects adopting liberal governance
• io.js, request, level*: OPEN Open Source
• Contributors are embraced as owners
• Small modules make this easier
New Models In Open Source
So what?
• The Node community is more embracing and
cohesive
• Learning and up-skilling is accelerated via
responsibility
New Models In Open Source
The Future of Node
Open governance from core up
New Models In Open Source
The Future of Node
Node is pioneering new governance models for next
generation Open Source
New Models In Open Source
The Future of Node.js
io.js
The Future of Node.js
‘Node’ is moving faster than ‘Node.js’
https://twitter.com/seldo/status/580536539047940096
0
100
200
300
400
Core commits per month, 2009 to today
joyent/node
0
100
200
300
400
Core commits per month, 2009 to today
joyent/node iojs/io.js
The Future of Node: Node.js + io.js?
• Open governance
• Rapid iteration
• New relationships with the V8 team
• Embracing the future
io.js
• Debuggability & insight
• Better streams
• ES6 and beyond:
• Track stable V8 releases
• Focus on async APIs
• Better number support!
• New server platforms: ARM64
io.js Mapping the Future of Node
An LTS Strategy
• Backed by companies like NodeSource
• Pick-a-branch and support
• Likely similar to Ubuntu LTS model
io.js Stability & Support
The Future of Node: Beaut
March 31, 2015
@rvagg
Thank You.

Mais conteúdo relacionado

Mais procurados

LINQ Inside
LINQ InsideLINQ Inside
LINQ Insidejeffz
 
Optimizing Communicating Event-Loop Languages with Truffle
Optimizing Communicating Event-Loop Languages with TruffleOptimizing Communicating Event-Loop Languages with Truffle
Optimizing Communicating Event-Loop Languages with TruffleStefan Marr
 
Clojure in real life 17.10.2014
Clojure in real life 17.10.2014Clojure in real life 17.10.2014
Clojure in real life 17.10.2014Metosin Oy
 
Why Is Concurrent Programming Hard? And What Can We Do about It?
Why Is Concurrent Programming Hard? And What Can We Do about It?Why Is Concurrent Programming Hard? And What Can We Do about It?
Why Is Concurrent Programming Hard? And What Can We Do about It?Stefan Marr
 
Concurrency Constructs Overview
Concurrency Constructs OverviewConcurrency Constructs Overview
Concurrency Constructs Overviewstasimus
 
Type Profiler: An Analysis to guess type signatures
Type Profiler: An Analysis to guess type signaturesType Profiler: An Analysis to guess type signatures
Type Profiler: An Analysis to guess type signaturesmametter
 
Network programming with Qt (C++)
Network programming with Qt (C++)Network programming with Qt (C++)
Network programming with Qt (C++)Manohar Kuse
 
Fast C++ Web Servers
Fast C++ Web ServersFast C++ Web Servers
Fast C++ Web ServersTroy Miles
 
Translating Qt Applications
Translating Qt ApplicationsTranslating Qt Applications
Translating Qt Applicationsaccount inactive
 
Neo4 + Grails
Neo4 + GrailsNeo4 + Grails
Neo4 + Grailsstasimus
 
Introduction to Kotlin coroutines
Introduction to Kotlin coroutinesIntroduction to Kotlin coroutines
Introduction to Kotlin coroutinesRoman Elizarov
 
Migration Objective-C to Swift
Migration Objective-C to SwiftMigration Objective-C to Swift
Migration Objective-C to SwiftNattapon Nimakul
 
Always bet on JS - Finjs.io NYC 2016
Always bet on JS - Finjs.io NYC 2016Always bet on JS - Finjs.io NYC 2016
Always bet on JS - Finjs.io NYC 2016Brendan Eich
 
AppDays Pordenone 2014: Web App Engineering With Dart
AppDays Pordenone 2014: Web App Engineering With DartAppDays Pordenone 2014: Web App Engineering With Dart
AppDays Pordenone 2014: Web App Engineering With DartClaudio d'Angelis
 
Join the dart side of webdevelopment reloaded
Join the dart side of webdevelopment reloadedJoin the dart side of webdevelopment reloaded
Join the dart side of webdevelopment reloadedClaudio d'Angelis
 
Go: What's Different ?
Go: What's Different ?Go: What's Different ?
Go: What's Different ?Tarun Vashisth
 
WTF is Twisted?
WTF is Twisted?WTF is Twisted?
WTF is Twisted?hawkowl
 
Tracing versus Partial Evaluation: Which Meta-Compilation Approach is Better ...
Tracing versus Partial Evaluation: Which Meta-Compilation Approach is Better ...Tracing versus Partial Evaluation: Which Meta-Compilation Approach is Better ...
Tracing versus Partial Evaluation: Which Meta-Compilation Approach is Better ...Stefan Marr
 
Introduction to Napa.js
Introduction to Napa.jsIntroduction to Napa.js
Introduction to Napa.jsDaiyi Peng
 

Mais procurados (20)

LINQ Inside
LINQ InsideLINQ Inside
LINQ Inside
 
Optimizing Communicating Event-Loop Languages with Truffle
Optimizing Communicating Event-Loop Languages with TruffleOptimizing Communicating Event-Loop Languages with Truffle
Optimizing Communicating Event-Loop Languages with Truffle
 
Clojure in real life 17.10.2014
Clojure in real life 17.10.2014Clojure in real life 17.10.2014
Clojure in real life 17.10.2014
 
Why Is Concurrent Programming Hard? And What Can We Do about It?
Why Is Concurrent Programming Hard? And What Can We Do about It?Why Is Concurrent Programming Hard? And What Can We Do about It?
Why Is Concurrent Programming Hard? And What Can We Do about It?
 
Concurrency Constructs Overview
Concurrency Constructs OverviewConcurrency Constructs Overview
Concurrency Constructs Overview
 
Type Profiler: An Analysis to guess type signatures
Type Profiler: An Analysis to guess type signaturesType Profiler: An Analysis to guess type signatures
Type Profiler: An Analysis to guess type signatures
 
Network programming with Qt (C++)
Network programming with Qt (C++)Network programming with Qt (C++)
Network programming with Qt (C++)
 
Fast C++ Web Servers
Fast C++ Web ServersFast C++ Web Servers
Fast C++ Web Servers
 
Translating Qt Applications
Translating Qt ApplicationsTranslating Qt Applications
Translating Qt Applications
 
PHP7
PHP7PHP7
PHP7
 
Neo4 + Grails
Neo4 + GrailsNeo4 + Grails
Neo4 + Grails
 
Introduction to Kotlin coroutines
Introduction to Kotlin coroutinesIntroduction to Kotlin coroutines
Introduction to Kotlin coroutines
 
Migration Objective-C to Swift
Migration Objective-C to SwiftMigration Objective-C to Swift
Migration Objective-C to Swift
 
Always bet on JS - Finjs.io NYC 2016
Always bet on JS - Finjs.io NYC 2016Always bet on JS - Finjs.io NYC 2016
Always bet on JS - Finjs.io NYC 2016
 
AppDays Pordenone 2014: Web App Engineering With Dart
AppDays Pordenone 2014: Web App Engineering With DartAppDays Pordenone 2014: Web App Engineering With Dart
AppDays Pordenone 2014: Web App Engineering With Dart
 
Join the dart side of webdevelopment reloaded
Join the dart side of webdevelopment reloadedJoin the dart side of webdevelopment reloaded
Join the dart side of webdevelopment reloaded
 
Go: What's Different ?
Go: What's Different ?Go: What's Different ?
Go: What's Different ?
 
WTF is Twisted?
WTF is Twisted?WTF is Twisted?
WTF is Twisted?
 
Tracing versus Partial Evaluation: Which Meta-Compilation Approach is Better ...
Tracing versus Partial Evaluation: Which Meta-Compilation Approach is Better ...Tracing versus Partial Evaluation: Which Meta-Compilation Approach is Better ...
Tracing versus Partial Evaluation: Which Meta-Compilation Approach is Better ...
 
Introduction to Napa.js
Introduction to Napa.jsIntroduction to Napa.js
Introduction to Napa.js
 

Destaque

Change Management 3
Change Management 3Change Management 3
Change Management 3IIFT01412
 
Linux Foundation Collaboration Summit 2016 (rvagg): New Models in Open Source
Linux Foundation Collaboration Summit 2016 (rvagg): New Models in Open SourceLinux Foundation Collaboration Summit 2016 (rvagg): New Models in Open Source
Linux Foundation Collaboration Summit 2016 (rvagg): New Models in Open Sourcervagg
 
writing a paragraph
writing a paragraphwriting a paragraph
writing a paragraphgozde555
 
Node Ninjas Sydney (rvagg) April 2016: Node Core Update
Node Ninjas Sydney (rvagg) April 2016: Node Core UpdateNode Ninjas Sydney (rvagg) April 2016: Node Core Update
Node Ninjas Sydney (rvagg) April 2016: Node Core Updatervagg
 
Change Management 3
Change Management 3Change Management 3
Change Management 3IIFT01412
 
JSConfUY: The Node.js Project (rvagg)
JSConfUY: The Node.js Project (rvagg)JSConfUY: The Node.js Project (rvagg)
JSConfUY: The Node.js Project (rvagg)rvagg
 
Change Management 2
Change Management 2Change Management 2
Change Management 2IIFT01412
 

Destaque (10)

Change Management 3
Change Management 3Change Management 3
Change Management 3
 
Linux Foundation Collaboration Summit 2016 (rvagg): New Models in Open Source
Linux Foundation Collaboration Summit 2016 (rvagg): New Models in Open SourceLinux Foundation Collaboration Summit 2016 (rvagg): New Models in Open Source
Linux Foundation Collaboration Summit 2016 (rvagg): New Models in Open Source
 
Reading 10
Reading 10Reading 10
Reading 10
 
writing a paragraph
writing a paragraphwriting a paragraph
writing a paragraph
 
Node Ninjas Sydney (rvagg) April 2016: Node Core Update
Node Ninjas Sydney (rvagg) April 2016: Node Core UpdateNode Ninjas Sydney (rvagg) April 2016: Node Core Update
Node Ninjas Sydney (rvagg) April 2016: Node Core Update
 
584761518
584761518584761518
584761518
 
seminar
 seminar seminar
seminar
 
Change Management 3
Change Management 3Change Management 3
Change Management 3
 
JSConfUY: The Node.js Project (rvagg)
JSConfUY: The Node.js Project (rvagg)JSConfUY: The Node.js Project (rvagg)
JSConfUY: The Node.js Project (rvagg)
 
Change Management 2
Change Management 2Change Management 2
Change Management 2
 

Semelhante a The Future of Node - @rvagg - NodeConf Christchurch 2015

introduction to node.js
introduction to node.jsintroduction to node.js
introduction to node.jsorkaplan
 
Practical Use of MongoDB for Node.js
Practical Use of MongoDB for Node.jsPractical Use of MongoDB for Node.js
Practical Use of MongoDB for Node.jsasync_io
 
Web Development using Ruby on Rails
Web Development using Ruby on RailsWeb Development using Ruby on Rails
Web Development using Ruby on RailsAvi Kedar
 
차세대컴파일러, VM의미래: 애플 오픈소스 LLVM
차세대컴파일러, VM의미래: 애플 오픈소스 LLVM차세대컴파일러, VM의미래: 애플 오픈소스 LLVM
차세대컴파일러, VM의미래: 애플 오픈소스 LLVMJung Kim
 
Intro to node.js - Ran Mizrahi (27/8/2014)
Intro to node.js - Ran Mizrahi (27/8/2014)Intro to node.js - Ran Mizrahi (27/8/2014)
Intro to node.js - Ran Mizrahi (27/8/2014)Ran Mizrahi
 
Intro to node.js - Ran Mizrahi (28/8/14)
Intro to node.js - Ran Mizrahi (28/8/14)Intro to node.js - Ran Mizrahi (28/8/14)
Intro to node.js - Ran Mizrahi (28/8/14)Ran Mizrahi
 
Develop realtime web with Scala and Xitrum
Develop realtime web with Scala and XitrumDevelop realtime web with Scala and Xitrum
Develop realtime web with Scala and XitrumNgoc Dao
 
sbt, history of JSON libraries, microservices, and schema evolution (Tokyo ver)
sbt, history of JSON libraries, microservices, and schema evolution (Tokyo ver)sbt, history of JSON libraries, microservices, and schema evolution (Tokyo ver)
sbt, history of JSON libraries, microservices, and schema evolution (Tokyo ver)Eugene Yokota
 
Developer’s viewpoint on swift programming language
Developer’s viewpoint on swift programming languageDeveloper’s viewpoint on swift programming language
Developer’s viewpoint on swift programming languageAzilen Technologies Pvt. Ltd.
 
Everything-as-code. A polyglot adventure. #DevoxxPL
Everything-as-code. A polyglot adventure. #DevoxxPLEverything-as-code. A polyglot adventure. #DevoxxPL
Everything-as-code. A polyglot adventure. #DevoxxPLMario-Leander Reimer
 
Everything-as-code - A polyglot adventure
Everything-as-code - A polyglot adventureEverything-as-code - A polyglot adventure
Everything-as-code - A polyglot adventureQAware GmbH
 
Node.js: A Guided Tour
Node.js: A Guided TourNode.js: A Guided Tour
Node.js: A Guided Tourcacois
 
"The OpenCV Open Source Computer Vision Library: Latest Developments," a Pres...
"The OpenCV Open Source Computer Vision Library: Latest Developments," a Pres..."The OpenCV Open Source Computer Vision Library: Latest Developments," a Pres...
"The OpenCV Open Source Computer Vision Library: Latest Developments," a Pres...Edge AI and Vision Alliance
 
The Evolution of Async-Programming on .NET Platform (.Net China, C#)
The Evolution of Async-Programming on .NET Platform (.Net China, C#)The Evolution of Async-Programming on .NET Platform (.Net China, C#)
The Evolution of Async-Programming on .NET Platform (.Net China, C#)jeffz
 
Dcjq node.js presentation
Dcjq node.js presentationDcjq node.js presentation
Dcjq node.js presentationasync_io
 
Intro to node and mongodb 1
Intro to node and mongodb   1Intro to node and mongodb   1
Intro to node and mongodb 1Mohammad Qureshi
 
IVS CTO Night And Day 2018 Winter - [re:Cap] Serverless & Mobile
IVS CTO Night And Day 2018 Winter - [re:Cap] Serverless & MobileIVS CTO Night And Day 2018 Winter - [re:Cap] Serverless & Mobile
IVS CTO Night And Day 2018 Winter - [re:Cap] Serverless & MobileAmazon Web Services Japan
 
"You Don't Know NODE.JS" by Hengki Mardongan Sihombing (Urbanhire)
"You Don't Know NODE.JS" by Hengki Mardongan Sihombing (Urbanhire)"You Don't Know NODE.JS" by Hengki Mardongan Sihombing (Urbanhire)
"You Don't Know NODE.JS" by Hengki Mardongan Sihombing (Urbanhire)Tech in Asia ID
 

Semelhante a The Future of Node - @rvagg - NodeConf Christchurch 2015 (20)

introduction to node.js
introduction to node.jsintroduction to node.js
introduction to node.js
 
Practical Use of MongoDB for Node.js
Practical Use of MongoDB for Node.jsPractical Use of MongoDB for Node.js
Practical Use of MongoDB for Node.js
 
Web Development using Ruby on Rails
Web Development using Ruby on RailsWeb Development using Ruby on Rails
Web Development using Ruby on Rails
 
차세대컴파일러, VM의미래: 애플 오픈소스 LLVM
차세대컴파일러, VM의미래: 애플 오픈소스 LLVM차세대컴파일러, VM의미래: 애플 오픈소스 LLVM
차세대컴파일러, VM의미래: 애플 오픈소스 LLVM
 
Intro to node.js - Ran Mizrahi (27/8/2014)
Intro to node.js - Ran Mizrahi (27/8/2014)Intro to node.js - Ran Mizrahi (27/8/2014)
Intro to node.js - Ran Mizrahi (27/8/2014)
 
Intro to node.js - Ran Mizrahi (28/8/14)
Intro to node.js - Ran Mizrahi (28/8/14)Intro to node.js - Ran Mizrahi (28/8/14)
Intro to node.js - Ran Mizrahi (28/8/14)
 
Develop realtime web with Scala and Xitrum
Develop realtime web with Scala and XitrumDevelop realtime web with Scala and Xitrum
Develop realtime web with Scala and Xitrum
 
Node.js
Node.jsNode.js
Node.js
 
sbt, history of JSON libraries, microservices, and schema evolution (Tokyo ver)
sbt, history of JSON libraries, microservices, and schema evolution (Tokyo ver)sbt, history of JSON libraries, microservices, and schema evolution (Tokyo ver)
sbt, history of JSON libraries, microservices, and schema evolution (Tokyo ver)
 
Developer’s viewpoint on swift programming language
Developer’s viewpoint on swift programming languageDeveloper’s viewpoint on swift programming language
Developer’s viewpoint on swift programming language
 
Everything-as-code. A polyglot adventure. #DevoxxPL
Everything-as-code. A polyglot adventure. #DevoxxPLEverything-as-code. A polyglot adventure. #DevoxxPL
Everything-as-code. A polyglot adventure. #DevoxxPL
 
Everything-as-code - A polyglot adventure
Everything-as-code - A polyglot adventureEverything-as-code - A polyglot adventure
Everything-as-code - A polyglot adventure
 
Node.js: A Guided Tour
Node.js: A Guided TourNode.js: A Guided Tour
Node.js: A Guided Tour
 
"The OpenCV Open Source Computer Vision Library: Latest Developments," a Pres...
"The OpenCV Open Source Computer Vision Library: Latest Developments," a Pres..."The OpenCV Open Source Computer Vision Library: Latest Developments," a Pres...
"The OpenCV Open Source Computer Vision Library: Latest Developments," a Pres...
 
The Evolution of Async-Programming on .NET Platform (.Net China, C#)
The Evolution of Async-Programming on .NET Platform (.Net China, C#)The Evolution of Async-Programming on .NET Platform (.Net China, C#)
The Evolution of Async-Programming on .NET Platform (.Net China, C#)
 
Dcjq node.js presentation
Dcjq node.js presentationDcjq node.js presentation
Dcjq node.js presentation
 
Intro to node and mongodb 1
Intro to node and mongodb   1Intro to node and mongodb   1
Intro to node and mongodb 1
 
About Clack
About ClackAbout Clack
About Clack
 
IVS CTO Night And Day 2018 Winter - [re:Cap] Serverless & Mobile
IVS CTO Night And Day 2018 Winter - [re:Cap] Serverless & MobileIVS CTO Night And Day 2018 Winter - [re:Cap] Serverless & Mobile
IVS CTO Night And Day 2018 Winter - [re:Cap] Serverless & Mobile
 
"You Don't Know NODE.JS" by Hengki Mardongan Sihombing (Urbanhire)
"You Don't Know NODE.JS" by Hengki Mardongan Sihombing (Urbanhire)"You Don't Know NODE.JS" by Hengki Mardongan Sihombing (Urbanhire)
"You Don't Know NODE.JS" by Hengki Mardongan Sihombing (Urbanhire)
 

Último

Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Bert Jan Schrijver
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park masabamasaba
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfonteinmasabamasaba
 
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburgmasabamasaba
 
Announcing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareAnnouncing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareJim McKeeth
 
Artyushina_Guest lecture_YorkU CS May 2024.pptx
Artyushina_Guest lecture_YorkU CS May 2024.pptxArtyushina_Guest lecture_YorkU CS May 2024.pptx
Artyushina_Guest lecture_YorkU CS May 2024.pptxAnnaArtyushina1
 
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...masabamasaba
 
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...masabamasaba
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park masabamasaba
 
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfonteinmasabamasaba
 
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...chiefasafspells
 
WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...
WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...
WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...WSO2
 
What Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the SituationWhat Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the SituationJuha-Pekka Tolvanen
 
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With SimplicityWSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With SimplicityWSO2
 
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...masabamasaba
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplatePresentation.STUDIO
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisamasabamasaba
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension AidPhilip Schwarz
 

Último (20)

Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
 
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
 
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
 
Announcing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareAnnouncing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK Software
 
Artyushina_Guest lecture_YorkU CS May 2024.pptx
Artyushina_Guest lecture_YorkU CS May 2024.pptxArtyushina_Guest lecture_YorkU CS May 2024.pptx
Artyushina_Guest lecture_YorkU CS May 2024.pptx
 
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
 
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
 
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
 
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
 
WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...
WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...
WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...
 
What Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the SituationWhat Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the Situation
 
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With SimplicityWSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
 
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
 
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
 

The Future of Node - @rvagg - NodeConf Christchurch 2015

  • 1. March 31, 2015 by @rvagg The Future of Node
  • 3. 1. JavaScript on the server 2. Asynchronous programming 3. Module-driven development 4. Small core, vibrant ecosystem 5. New models in Open Source The Essence of Node
  • 5. So what? • “Developer joy” • Productive • Approachable, sans quirks • Massive pool of developers JavaScript on the Server
  • 6.
  • 7. The Future of Node • JavaScript is not going away (Dart anyone?) • Node adoption makes it “the language of the web” • Helping to drive the future of JavaScript • Challenges for learning as language complexity increases JavaScript on the Server
  • 9. Eh? • Alternative programmer mindset • API focus on callbacks, events and streams • Limits to Sync()-ability, generally shunned • Single-threaded! Asynchronous Programming
  • 10. So what? High-performance paradigm—performance comes free Asynchronous Programming
  • 11. System.out.println("Reading file..."); BufferedReader br = new BufferedReader(new FileReader("in.txt")); try { StringBuilder sb = new StringBuilder(); String line; while ((line = br.readLine()) != null) sb.append(line + "n"); System.out.print(sb.toString()); } finally { br.close(); } System.out.println("Finished reading file!");
  • 12. So what? • Scalable: • Handle huge amounts of I/O with single process • Single-threaded encourages scalable design patterns • Reflective of how the world really works Asynchronous Programming
  • 13. The Future of Node An ongoing battle over programming paradigms • Promises • Generator functions for async • async await (ES7) The human instinct is to make everything serial! Asynchronous Programming
  • 15. Eh? • npm • Module system solves most dependency-hell problems • Simplicity! Module-driven Development
  • 16. So what? The holy-grail of decoupled and reusable coding Module-driven Development
  • 17. So what? Small chunks of code: • Focused concerns • Testable • Grokkable • Documentable • Sharable • Ease of collaboration Module-driven Development
  • 18. module.exports = function archy (obj, prefix, opts) { if (prefix === undefined) prefix = ''; if (!opts) opts = {}; var chr = function (s) { var chars = { '│' : '|', '└' : '`', '├' : '+', '─' : '-', '┬' : '-' }; return opts.unicode === false ? chars[s] : s; }; if (typeof obj === 'string') obj = { label : obj }; var nodes = obj.nodes || []; var lines = (obj.label || '').split('n'); var splitter = 'n' + prefix + (nodes.length ? chr('│') : ' ') + ' '; return prefix + lines.join(splitter) + 'n' + nodes.map(function (node, ix) { var last = ix === nodes.length - 1; var more = node.nodes && node.nodes.length; var prefix_ = prefix + (last ? ' ' : chr('│')) + ' '; return prefix + (last ? chr('└') : chr('├')) + chr('─') + (more ? chr('┬') : chr('─')) + ' ' + archy(node, prefix_, opts).slice(prefix.length + 2) ; }).join('') ; }; https://github.com/substack/node-archy
  • 19. So what? 2000 - 2010: The golden era of the software monolith 2010+: SOA all the things! 2014+: “The great unbundling” Module-driven Development
  • 20. Modularity in the enterprise • Monoliths represent a huge business risk • Optimise for “throw-away-ability” • Business and code agility • Webscale! This is Node’s natural home Module-driven Development
  • 21. The Future of Node • npm focused on module-driven development • Service-focused infrastructure libraries • Continued evolution of versioning conventions • Continued discussion about transitive dependency problems • Module-driven development for the browser • ES6 Modules? Module-driven Development
  • 22. Small Core, Vibrant Ecosystem
  • 23. Eh? • Node's core contains mostly essentials • Constant debate about what gets in • npm & Node's modularity enables a vibrant ecosystem • Experimentation pushed to the edges Small Core, Vibrant Ecosystem
  • 24. So what? "The standard library is where modules go to die." — Kenneth Reitz Small Core, Vibrant Ecosystem
  • 25. So what? Not stuck with as many "bad parts" forever • Domains? • Streams2? • <insert pet-hate Node-core feature here> Small Core, Vibrant Ecosystem
  • 26. So what? Experimentation! • Build tools: Grunt, Gulp, etc. • Browser tools: Browserify, WebPack • Level* • StackGL, etc. • Desktop application tooling: NW.js, Atom • IoT & robotics • Languages & language features Small Core, Vibrant Ecosystem
  • 27. The Future of Node • Core fiercely guarded • Difficulty adapting core to new language features • Tension with V8’s expansion • StrongMode, SoundScript • Intl • Improved support for userland extension (NAN!) Small Core, Vibrant Ecosystem
  • 28. New Models In Open Source
  • 29. Eh? • Node was born in the GitHub era but is pushing at the boundaries • Many projects adopting liberal governance • io.js, request, level*: OPEN Open Source • Contributors are embraced as owners • Small modules make this easier New Models In Open Source
  • 30. So what? • The Node community is more embracing and cohesive • Learning and up-skilling is accelerated via responsibility New Models In Open Source
  • 31. The Future of Node Open governance from core up New Models In Open Source
  • 32. The Future of Node Node is pioneering new governance models for next generation Open Source New Models In Open Source
  • 33. The Future of Node.js io.js
  • 34. The Future of Node.js ‘Node’ is moving faster than ‘Node.js’
  • 36. 0 100 200 300 400 Core commits per month, 2009 to today joyent/node
  • 37. 0 100 200 300 400 Core commits per month, 2009 to today joyent/node iojs/io.js
  • 38. The Future of Node: Node.js + io.js?
  • 39. • Open governance • Rapid iteration • New relationships with the V8 team • Embracing the future io.js
  • 40. • Debuggability & insight • Better streams • ES6 and beyond: • Track stable V8 releases • Focus on async APIs • Better number support! • New server platforms: ARM64 io.js Mapping the Future of Node
  • 41. An LTS Strategy • Backed by companies like NodeSource • Pick-a-branch and support • Likely similar to Ubuntu LTS model io.js Stability & Support
  • 42. The Future of Node: Beaut