SlideShare une entreprise Scribd logo
1  sur  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.

Contenu connexe

Tendances

LINQ Inside
LINQ InsideLINQ Inside
LINQ Inside
jeffz
 
Neo4 + Grails
Neo4 + GrailsNeo4 + Grails
Neo4 + Grails
stasimus
 
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
Claudio 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 reloaded
Claudio d'Angelis
 
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
 

Tendances (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
 

En vedette (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
 

Similaire à The Future of Node - @rvagg - NodeConf Christchurch 2015

Web Development using Ruby on Rails
Web Development using Ruby on RailsWeb Development using Ruby on Rails
Web Development using Ruby on Rails
Avi Kedar
 
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
 
"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
 
Intro to node and mongodb 1
Intro to node and mongodb   1Intro to node and mongodb   1
Intro to node and mongodb 1
Mohammad Qureshi
 

Similaire à 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)
 

Dernier

+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
Health
 
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
anilsa9823
 

Dernier (20)

+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 

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