153

What is the difference between io.js and node.js? The more recent io.js is forked from node.js, and is furthermore made by some of the same people that made node.js.

What are the key differences that have lead to this fork, and what does it mean for the node.js community as a whole?

maudulus
  • 10,627
  • 10
  • 78
  • 117
  • 15
    [You don't have to worry anymore](https://nodejs.org/en/blog/release/v4.0.0/) :) – nawfal Sep 29 '15 at 22:23
  • 11
    Readers should note, while the question made sense at the time, io.js and node.js have since merged back together. Practically speaking, io.js doesn't really exist anymore. – Boinst Aug 18 '16 at 22:52
  • 8
    tl;dr See this statement the on [io.js website](https://iojs.org/en/): **_io.js has merged with the Node.js project again. There won't be any further io.js releases. All of the features in io.js are available in Node.js v4 and above_**. – Boaz Jan 10 '18 at 13:57

4 Answers4

140

io.js is a fork of Joyent's Node.js

What are the differences?

io.js:

  • Node-forward is basically being merged into io.js
  • forked on the basis of community-driven development and active release cycles
  • includes many of the original Node.js developers
  • has the future goal of "merging back with Node.js"

This repository began as a GitHub fork of joyent/node where contributions, releases, and contributorship are under an open governance model.

We intend to land, with increasing regularity, releases which are compatible with the npm ecosystem that has been built to date for node.js.

Node.js:

  • the original software
  • has slowed down development in recent time
  • sponsored by Joyent
  • Joyent owns the trademark Node.js

Why did they split?

It was primarily split for three reasons: faster, more active releases and development towards a 1.0.0 release, for a more community-driven development rather than the Advisory Board, and the use of semver for releases.

What is the advisory board?

The Advisory Board was Joyent's plan to bring Node.js a more centralized, faster way to plan development and plan future features along the road towards a 1.0.0 release. This was planned to be done by putting together a board of larger companies that use Node.js

Quote from Joyent's blog:

As the community becomes more complex, it is important that we find ways to balance the needs of all constituents and provide a platform for these organizations to come together and to provide input into the project.

Why is the advisory board hated?

Previously, Node.js was run via mailing lists, GitHub issues, and anyone could contribute their idea. This idea started getting some hate because it brought control away from your average, everyday contributor and moved the power to the "big shots": companies such as Walmart, Yahoo, IBM, Microsoft, Joyent, Netflix, and PayPal.

Outside sources on this

Community
  • 1
  • 1
Brendan
  • 2,777
  • 1
  • 18
  • 33
  • Some popular modules have also ended support for Node.js and moved to io.js (i.e. [jsdom](https://github.com/tmpvar/jsdom)) – taco Mar 24 '15 at 22:25
  • 10
    It was actually split in part becasue of the whole gendered pronoun conflict that ended in most of their contributors leaving.. There were other reasons but that was the straw that broke the camels back –  Mar 26 '15 at 15:52
  • 28
    Political correctness is absolutely evil and has no place in a technology project (that wants to keep being a technology project). The focus should be on results and meritocracy. Sadly more and more projects are adopting these policies and attitudes. Mozilla did something similar as I recall to one of their key people. As soon as I see such nonsense getting traction in a project I point it out and protest the distraction. If it keeps going I withdrawl. Everyone should. http://developers.slashdot.org/comments.pl?sid=6303659&cid=48533619 – Ben Scherrey Mar 27 '15 at 13:08
  • 4
    io.js is merging back with node.js i guess http://www.infoworld.com/article/2923081/javascript/reunited-io-js-rejoins-with-node-js.html – Dinkar Thakur Jun 14 '15 at 10:33
  • 4
    "io.js is merging back with node.js" - both have merged now. Great news !! https://iojs.org/en/ – Deen John Sep 02 '17 at 21:16
  • 1
    How ironic, uh? [Gendered pronoun](https://web.archive.org/web/20191023011602/https://meta.stackexchange.com/questions/334900/official-faq-on-gender-pronouns-and-code-of-conduct-changes) 4 years later, why am I not surprised? – zypA13510 Feb 18 '20 at 06:13
  • 1
    "Political correctness is absolutely evil and has no place in a technology project (that wants to keep being a technology project)." "The focus should be on results and meritocracy." Hilariously (but not unexpectedly) these are conflicting statements. With hindsight, I'm glad the OSS community as a whole ended up choosing meritocracy through inclusion, otherwise they'd have to put an asterisk next to your name :) – Xunnamius Nov 17 '21 at 12:03
20

In fact, there are practical differences between Node.js and io.js. Some facts forgotten by other answers:

  • Currently, io.js is, in multiple aspects, a bit faster than Node.js. A performance benchmark can be found here.
  • io.js's ECMAScript 6 support is much broader than Node.js. Comparison can be found here.

Why? Because io.js 1.6.2 ships with Google V8 4.1.0.25, and Node.js 0.12.1 ships with V8 3.28.73. Also, flags for ECMAScript 6 are different between Node.js and io.js. io.js's guide to ECMAScript 6 flags can be found here.

Gabriel Tomitsuka
  • 1,121
  • 10
  • 24
  • 3
    An interesting catch is, that the [comparison table](http://kangax.github.io/compat-table/es6/) you mention is not displayed correctly if JS is disabled in the browser (which should be the default. Period. And before you ask: We are talking server side JS here, not Browser side!) – Tino Apr 24 '15 at 09:33
  • 23
    You actually have JS disabled in your browser?! You must be that guy that makes millions of web devs sigh when they hear 'will it work without javascript enabled?' – Zasz Apr 25 '15 at 04:14
15

TL;DR io.js is the future incarnation of node.js.

The io.js website says: "io.js is a node & npm compatible javascript platform." It's a set of tools (a runtime/VM, a package manager, etc.) which is compatible with what currently exists as node. Any differences will presumably be in the underlying implementation, and any extensions that io.js adds beyond the node.js feature set.

(Why would something compatible with what already exists divide the community? Why's that a bad thing?)

Note that io.js hasn't even been released yet! However the io.js roadmap illustrates some particularly relevant differences between node and io.

  • "Node is pretty damn stable already" and yet Node still hasn't hit 1.0; it's currently at 0.10.33.
  • "The entire ecosystem uses semver while node uses a confusing even/odd release structure." By introducing a new name for a new(ish) project, they'll be able to fix that.

So as I understand it, io.js is the 1.0-alpha1 and future release of node, but with:

Community
  • 1
  • 1
Matt Ball
  • 354,903
  • 100
  • 647
  • 710
  • 17
    "the future incarnation" this answer is pro-io.js biased. – Brendan Dec 05 '14 at 05:50
  • 29
    "Reality has a well-known liberal bias" – Stephen Colbert – Matt Ball Dec 05 '14 at 05:51
  • 2
    @BrendanAshworth: Even if it was true, that doesn't seem to justify a downvote. In case there are any anti-io.js arguments, please let us know them! – Bergi Dec 05 '14 at 06:21
  • 3
    @Bergi I actually didn't downvote the answer - just because it is biased doesn't mean it *isn't a good answer*. There is an upvote :) – Brendan Dec 05 '14 at 06:24
  • 3
    @BrendanAshworth Technically, the 'future incarnation' statement isn't incorrect. io.js is pushing the advancement of node.js (specifically ES6 support) and is headed by the original creators of node.js. Considering that nodejitsu (the operator of NPM) has been acquired by GoDaddy and just filed a trademark on the 'npm' name and the 'node.js' name is trademarked by Joyent the node.js/npm ecosystem may be in jeopardy. If things go south, a migration to io.js is completely possible. – Evan Plaice Feb 25 '15 at 10:03
12

io.js was a fork of node.js. But now io.js and node.js again collaborate. So that's why node.js directly jump from 0.12.x directly to 4.0.0 as node.js version 4.0.0 includes all the major updates from io.js version 3.0.0

VIKAS KOHLI
  • 8,164
  • 4
  • 50
  • 61