Node.js Makes Backend of Web Apps More Efficient to Transform Internet as We Know It

WHAT: Server-side JavaScript -- the language of front-end developers that makes web pages interactive -- created to efficiently and quickly handle thousands of simultaneous requests, common in today's real-time applications (think stock tickers). Node.js uses an event loop rather than threads for requests; an event is a message from other applications or input from a user. This approach leaves a smaller footprint on a server.

Node.js is built into HP's webOS 2.1, meaning developers can build their entire webOS applications in JavaScript. Microsoft agreed in June to help port Node.js to Windows so that it can be used on Microsoft's newer servers, including its Windows Azure cloud platform.

Technical details: Built on Google’s V8 JavaScript engine, uses the commonJS module system, written in C, is open source.

CREATOR: Ryan Dahl (shown above) has a master's degree in math from the University of Rochester. His open-source projects beyond Node are the Ebb web server and the "EY" load balancer module for Nginx. He has worked as a freelance programmer and lived in Germany.

Linus Torvalds is the "benevolent dictator for life" of Linux -- meaning he has the final say in disputes over that open-source language. Ryan holds the title for Node.js.

WHY: Because it is JavaScript, web designers can program the backend without learning a new language. Businesses using Node.js don't have to make different stacks talk to each other. Plus JavaScript is only getting faster because every major web browser (Chrome, Firefox, IE) is optimizing its performance.

The bigger picture: the Internet has come a long way from static HTML pages and even HTML pages populated by information stored in databases. As Metamarkets CTO Mike Driscoll has explained, pages are actually "event-driven applications through which information moves."  Other languages can do event-driven applications but Node.js was designed for them.

WHEN/WHERE: February 2009 / Germany. Version 0.4.10 on July 20.

BACKSTORY: Ryan wanted to create a system that used non-blocking input/output (I/O). He saw how useful an event-based server would be but also realized most people didn't design programs that way because it required using libraries that were blocking. He tried other languages before his epiphany that JavaScript was perfect for what he wanted (more detail in this interview). Initially meant only as a web server (and named web.js), the project grew into a framework that could be used in numerous ways. Ryan renamed it Node.js.

TIMELINE: Ryan floated the idea for what would become Node in a January 5, 2009 post to his blog. He announced the project on February 9, 2009 and started the Node repository on GitHub on February 15, 2009. The break-out moment came when Ryan presented Node at JSConf 2009 that November in Berlin.

San Francisco-based Joyent, which provides cloud computing services, brought Ryan on board not long after the JSConf 2009 and the Node.js project in-house in November 2010 to give it "the investment and support Ryan felt it needed" according to this Joyent blog post

The only practical difference for developers: the contributor agreement is directed to Joyent instead of Ryan. The project remains open source.

More early Node.js history here.

SITES USING NODE: Etsy, Yammer, Uber, LearnBoost, Voxer, WordSquared (f.k.a. Scrabbly), Storify. See wiki for complete list of sites and projects.

[ Note: Startup darling seems like an ideal business for Node.js, but CEO Billy Chasen told LAUNCH that they did not consider Node.js because he and his team are Python programmers. ]

NEXT NODE.JS EVENT: Node Knockout 2011 is a coding contest that takes place August 27-29 in San Francisco although teams from anywhere in the world can compete. The 2010 event attracted 215 teams. Overall winner was a collabortative game called Swarmation.

GROWTH: No official stats, but "growing" is the consensus. Node.js on GitHub has 8.2K watchers, the Node.js Google Group has 5,282 members, and the npm (Node package manger) registry has 3,059 packages.

HOW NODE.JS FITS WITH JOYENT: Joyent CEO David Young says cloud services and Node.js "really go hand in hand. They are two different businesses trying to accomplish the same thing: highly efficient performance cloud solutions."

James Duncan, chief architect at Joyent and head of the Node platform team says, "Node really makes the kind of applications we focus on and we think are going to push forward into the cloud not only possible but comparatively easy to write."

JOYENT'S GOAL WITH NODE.JS: "Maximum adoption of the Node platform," says David. He adds that Joyent is "investing heavily" in Node and is "very open to making sure the ecosystem and community are as broad and well run as possible."

JOYENT'S BUSINESS MODEL AROUND NODE.JS: The service is for deploying and hosting Node.js applications.



1. Node.js and the JavaScript Age (GigaOm, April 11, 2011)

2. "Why Everyone Is Talking about Node" (Mashable, March 10, 2011)

3. "How do I get started with Node.js" (Stack Overflow, March 1, 2010)

4. "The Node Ahead: JavaScript leaps from browser into future" (The Register, March 1, 2011)


Ryan Dahl
Email: ry at tinyclouds dot org
Twitter: @ryah

Node on GitHub: