This article is more than 1 year old
The Node Ahead: JavaScript leaps from browser into future
Google V8 engine spawns server world doppelgänger
The New Everything
In certain Silicon Valley circles, Node is known as The New PHP. Or The New Ruby on Rails. Or The New Black. It's The Next Big Thing, according to, well, just about everyone who uses it. "For a while, I called it The New Rails," says Tom Hughes-Croucher, the author of the upcoming O'Reilly tome Up and Running with Node.js (preview PDF) and the chief evangelist at cloud computing outfit Joyent, Node's primary steward. "But then I realized it was getting more views on github than Rails. So now I call it The New PHP."
Ruby on Rails was the first major project hosted on github, the popular open source repository, and though Rails still has more "followers" than Node – roughly 7,000 versus 5,000 – Node is indeed getting more views. And whereas Rails is a mature language with a good seven years of development behind it, Node debuted in 2009. We're still a long way from a 1.0 release. Version 0.4 arrived just last month.
In addition to sponsoring the Node open source project, Joyent offers a hosted version of the platform, an online service that lets developers build and deploy apps via the browser. Known as no.de, the service still in beta, and it has sparked some interest in notable places. "Awwww yeah," Google App Engine engineer Ikai Lan tweeted in mid-February. "Got my Joyent node.js hosting invite."
For Gerad Suyderhoud, who organized the first Node hackathon, Node Knockout, this past summer, the platform is the next major phase in the always-rapid evolution of web development. "First there was C, which Amazon was written in," he says. "Then there was Perl, and Craigslist was written in Perl. Then there was PHP and Facebook, and then Rails and Twitter. With each of these things, they solved a lot of hard problems, but then new problems arrived. Node solves the next set of hard problems, the problems that come with all this real-time stuff."
Though Node runs more than a few live applications – including Voxer as well as Mockingbird, a web app for building site wireframes, and LearnBoost, a gradebook service for schools – the platform doesn't yet drive a Facebook-esque mega-site. But Suyderhoud, like others, is sure it will. Held at Joyent's offices in August, the Node Knockout competition attracted 500 developers, and it spawned at least one commercial application, Word2, a massively multiplayer version of Scrabble.
But Node isn't just a tool for building applications and websites. It's also a means of driving so-called cloud services – i.e., the backend services designed to run the next generation of applications and websites. Joyent uses node to underpin its Amazon EC2–like infrastructure cloud, a service that provides on-demand access to readily-scalable processing power and storage. Cloudkick, the cloud-management startup recently purchased by Rackspace, is writing a new set of server-management tools atop Node. And Rabbit Technologies, the cloud-messaging outfit now owned by VMware, is offering rabbit.js, an extension of its RabbitMQ open source messaging platform based on Node.
Ryan Dahl at Node Knockout
"With the cloud-management stuff, you have all these little agents sitting here and there, and they're not necessarily dealing with a large amount of throughput," says Ryan Dahl, the man who invented Node as an independent programmer and now works for Joyent. "Writing these little things turned out to be really nice in the [event-driven] world. You don't have to deal with different threads. You just have to receive messages and send messages."
At the same time, Node is being moved from the server side back to the client. HP uses node on its Palm webOS handsets and upcoming TouchPad tablet, using it to run background services on the devices themselves. It's yet another indication of how efficient the platform is. "It turns out, you can really scale it down," Dahl says. "It doesn't require allocating gigabytes of memory. It has a fast startup time. It has a low memory footprint. ... It's something that's small enough to run on an embedded device."