So what is io.js? io.js is a fork of Joyent's Node.js. It was originally forked by Fedor Indutny who was one of the original contributors to Node core.
Why the Fork?
So why the fork? There was a lot of disagreement on how the Node project was being ran. Joyent was slow moving, and wasn't offering a fast enough release schedule that many contributors to the project wanted. It also had gone through three project leaders in the last few years which was a sign that something was wrong. Another sticky point was it was ran under a corporate governance model. Many core contributors wanted a more open governance model.
At first Joyent relinquished some control by creating an advisory board. Many contributors felt this was too little too late. A new project called node-forward was created on GitHub as a place that contributors could talk about the future of Node privately. Later a fork of Node.js was created by Fedor Indutny and was made public and called io.js. An open governance model was created with a technical committee to help steer the project.
This created a lot of momentum for io.js. Nearly all the core members from Node.js came over to the io.js project, with a few exceptions of the Joyent employees. Several quick release has followed and many new contributors have jumped on the bandwagon since.
Response from Joyent
Joyent has responded by announcing an independent Node.js Foundation with several corporate partners. This foundation will be holding open deliberations on new features and be much closer to an open governance model.
As of now io.js continues on. There is speculation in the community that the two projects will be combined one day. I'm not sure how this will work. I feel the io.js contributors won't want to give up the power they have at this point. It's probably more likely that Node will merge with io.js then the other way around. Only time will tell.
Getting Started with io.js
For now the easiest way to get started with io.js is to download the latest build using Node Version Manager. You can also download the latest binary build from the io.js website if you don't like nvm. To install nvm from the command line simply curl or wget it.
$ curl https://raw.githubusercontent.com/creationix/nvm/v0.23.3/install.sh | bash
After it's installed it should add a line to your profile. Then just install io.js.
nvm install iojs
I prefer this method because as new versions come out I can easily upgrade while having the ability to switch back to older versions at any time. As of this writing the latest version of io.js is v1.2.0.
ES6 on io.js
As of io.js 1.2.0 many feature flags are turned on. Since io.js is built on a newer version of V8 compared to the latest Node.js release many features that were only available by using a feature harmony flag are now turned on by default. These include:
- Block Scoping - let - const
- Collections - Map - WeakMap - Set
- Binary and Octal Literals
- New String methods
- Template Strings
This is good news for developers looking to use the latest and greatest.
How to Get Involved?
Your best bet to contribute to io.js is to follow the contribution guidelines. The open governance model welcomes all contributors, so find an issue, fix it, and send in that pull request.
No one knows what the future holds. I'm sure as time continues on the pressure will mount for these two projects to combine. Until then I will sit back and watch!
Questions, comments? Please leave a comment below and let me know what you think. Will io.js replace Node or will they combine together again?