Uncategorized

Leadership on a technical commitee vs hiring and appointing the leader (io.js vs node.js)

NodeJS is an open source project. In 2013, it was acquired by Joyent.
The most popular fork of Node.js is io.js.

What? There is a fork of NodeJS? Why ? What happened ?
After the acquisition of NodeJS by Joyent, developers were not satisfied with the decisions taken.

Joyent, as any big company would do, after acquiring NodeJS, started to impose a different style of leadership.

Some people say this style can be defined as:
1. hire new staff
2. appoint the leaders
3. control developers tasks and new features.

What are the differences between NodeJS and io.js?

io.js:

1. this repository began as a GitHub fork of joyent/node
2. community-driven development together with active release cycles
3. includes many of the original Node.js developers
4. NodeJS new features are being merged into io.js
5. contributions and releases are under an open governance model.

Node.js:

1. NodeJS was invented in 2009 by Ryan Dahl, and other developers working at Joyent.
2. has slowed down development in recent time
3. sponsored by Joyent
4. Joyent owns the trademark Node.js
5. Advisory Board.

Wait, wait, this one is really important, so what is this Advisory Board again?
Lets make a 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.”

Previously, Node.js was run via mailing lists, GitHub issues, and anyone could contribute ideas. But, after this transition to the advisory board, the community started getting some hate because it brought control away from the everyday contributors and moved the power to the “big shots”: companies such as Walmart, Yahoo, IBM, Microsoft, Joyent, Netflix, and PayPal.

I read in many many blogs and heard talking to people, that this caused frustration to contributors when pull requests where not accepted. So then people decided to make a fork of the entire NodeJS project, this is the origin of ‘IO.JS’.

Several NodeJS core contributors like Isaac Schlueter who was the leader of the Nodejs project and Ryan Dahl joined aiming to address a growing pile of concerns that NodeJS developers and contributors have.

I will make here a very unfair developers battle:

NodeJS vs io.js

Round 1:
NodeJS: Joyent wants NodeJS to stable. This means that NodeJS stays on an older version of V8. Consequently NodeJS does not support newest Javascript features.

io.js: is landing all changes to V8 as soon as they become stable, making this features available to devs asap.

NodeJS 0 x 1 io.js


Round 2:

NodeJS: Each odd release (as 0.11.x) is unstable and each even release is stable.
This lead the community to be waiting for v 0.12 for several months and many times to only be put off for later at least twice. The community has been waiting for the release for at-least a year now. Node looks at 0.12 as a staging point for 1.0 although the framework has been stable for a long time.

io.js: wants to use semantic version and update their version number whenever a breaking change occurs and move on, instead of using it as a lure to convince enterprises which are still skeptical of Node. This is why io.js reached v1.0 before NodeJS did and will probably stay ahead of Node in this matter.

NodeJS 0 x 2 io.js


Round 3:

NodeJS: Another strong feeling among developers is that a Benevolent Dictator style leadership has been promoted by Joyent has stopped working and that the community should have a more open governance.

io.js: bases its leadership on a technical commitee which takes care of the project’s governance based on consensus and not based on the descisions of an individual.

NodeJS 0 x 3 io.js


Round 4:

Currently, io.js is in multiple aspects, a bit faster than Node.js.

The complete performance benchmark can be found here: https://raygun.io/blog/2015/02/node-js-performance-node-js-vs-io-js/

NodeJS 0 x 4 io.js

Round 5:

io.js’s ECMAScript 6 support is much broader than Node.js. Comparison can be found here. http://kangax.github.io/compat-table/es6/#iojs

NodeJS 0 x 5 io.js

Round 6:

io.js 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. http://kangax.github.io/compat-table/es6/#iojs

NodeJS 0 x 6 io.js

Round 7:

NodeJS: Over the last year or so, the number of commits on the Node.js repo has been steadily decreasing.
nodejscontributions

Even worse, the number of releases of node drastically reduced in 2014.
nodejsreleases

io.js: Over the last months, the number of commits in the io.js repo has been just increasing.
iojscontributions

Result:

NodeJS 0 x 7 io.js

Conclusion:
io.js is based on a Technical Commitee which in practice takes care of the project’s governance based on consensus and not based on the descisions of an individual or just big brand companies. So far, by doing our unfair comparision this seems to be working better than the Advisory Board.

The IO.js is based on collaboration and people are complaining that Joyent doesn’t seem to be doing much to adapt to developers.

Reference:
https://raygun.io/blog/2015/02/node-js-performance-node-js-vs-io-js/
http://stackoverflow.com/questions/27309412/what-is-the-difference-between-node-js-and-io-js
http://www.infoworld.com/article/2855057/application-development/why-iojs-decided-to-fork-nodejs.html
http://www.quora.com/Why-is-NodeJS-splitting-into-two-versions-io-js-and-node-js
https://nodesource.com/blog/nodejs-v012-iojs-and-the-nodesource-linux-repositories

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s