Goodbye Joyent, Hello Node.js Foundation

Thomas Greco
Share

Last December, the world of server-side JavaScript was forever changed with the release of io.js. Since its release, io.js has had an immediate impact on the world of server-side JavaScript as it created an alternative platform to Joyent’s Node.js, or more simply known as Node. Those behind io.js built the platform to stay current with the latest features of the v8 JavaScript engine, something that Node.js failed to do. As a result of io.js’ impact, Joyent decided to give up sole ownership of the project to the Node.js foundation, a third-party made up of developers from some of the world’s top technology companies. Although the Node.js foundation continuously reached out to io.js to merge back with its predecessor, it would ultimately be a few months before io.js agreed to merge with the Node.js foundation. It will operate under the name Node.

To help you get the most complete overview on the success of io.js, in this article I will discuss what sparked the creation of the new platform, the key individuals behind it, and the governance model which I believe made this project so unbelievably successful.

nodejs-logo

What Sparked io.js

Oddly enough, many of the core developers at Joyent were behind the creation of io.js as a result of a bit of discord between the development team building the platform, and the administration in charge of implementing new builds. To help solve this problem, the developers at Joyent worked to craft a new model as background to develop the platform. However, their conversations with the administration went nowhere. Often, developers working on the Node.js platform would have to watch the code to which they dedicated a great deal of time sit on a shelf which was disheartening. As time continued, tension continued to grow. Things changed when Fedor Idutny, a core developer at Node, took the liberty to fork Node.js, thus marking the creation of io.js. Idutny knew that he had the support of colleagues, and was confident that the project would be successful in providing a platform which supplied the latest support for ES6 on the server-side.

The Immediate Impact of io.js

The impact io.js had on the JavaScript community is simply remarkable. In just three months, the success of io.js has forced Joyent to realize that they were not properly maintaining Node, and that they needed to implement a new solution. Therefore, Joyent gave up sole-ownership of Node, and founded the Node.js Foundation, which welcomed developers from Microsoft, IBM, PayPal, and other companies known for their technological prowess. This was more or less the equivalent to Joyent waving a white-flag to io.js, which had already began to prove itself as a legitimate platform. Once created, the Node.js foundation immediately reached out to io.js to merge. Nevertheless, the Technical Committee at io.js opted to stayed true to their initial intentions, and not merge with Node.js until they truly believed that both teams shared the same vision.

Within a matter of weeks, the io.js community controlled the pace of server-side JavaScript development. They constantly implemented updated versions of the platform with functionality way beyond that of Node, which in turn proved detrimental for Joyent. From the beginning, the io.js community was successful in building a platform that ships with a far more superior v8 engine version. Node’s most recent major release, 0.12.0, is built on top of version 3.28.73 of the v8 JavaScript engine, which was released in August of 2014. On the other hand, io.js v2.2.1 ships with v8 version 4.2.77.20. The use of outdated functionality on Joyents’s behalf was unacceptable. Specifically, this lack of functionality burdened developers all around the world who wished to get acquainted with using the latest in ECMAScript functionality on the server.

If you visit iojs.org, you will notice the quote “Bringing ES6 to the Node.js Community,” and that is precisely what the new platform did. Additionally, providing ES6 functionality is not the only area in which io.js has excelled. Since the release of io.js, Raygun.io has conducted two series of tests comparing the platforms; the most recent experiment io.js v2.0.0 was compared to version 0.12.2, and 0.10.38 of Node. During both tests io.js proved to be the faster framework, and the platform even showed an increase in performance from an earlier series of tests which had compared io.js v1.2.0. Although this is just one series of tests, io.js outperformed Node.js when using the http, express, and Koa modules. As stated in Raygun.io’s article:

the charts do provide some interesting food for thought, and may provide a springboard for you to perform your own real-world tests, and potentially gain a significant speedup.

In my opinion, they are indeed interesting pieces of information regarding the raw power of the platform.

Open Source Prevails with the Open Governance Model

It would be hard to imagine this success without the support io.js received from open-source community. In order to generate such a response, there had to be an extremely solid model in place that could govern an open-source project of this magnitude. Luckily, many of the core individuals at io.js had first-hand experience with the problems that arose at Joyent, and this experience has had an extremely positive influence on the creation of the open-governance model under which io.js would ultimately succeed.

At the top of this governance models sits the technical committee (TC) – a group of six to twelve people in charge of ensuring the proper technical direction for the platform, modifying project guidelines, and more. The TC was put in place to ensure the io.js team stayed on course. There are strict guidelines for TC membership. For instance, no more than one-third of the TC may work for the same employer to help ensure a balance of power between members. Below the TC sits a team of collaborators appointed by the committee after they make significant contributions to the project. These collaborators are in charge of reviewing pull-requests made by contributors and implementing changes in the project.

As the project progressed, the io.js TC met each week to discuss the current state of the art. The constant communication between the TC, collaborators, and contributors ensured that this project consistently moved forward. Moreover, general public is not only kept informed of new things features, but deeply involved in the discussion. In this way, the group quickly achieved a great deal of success as a result. They implemented things such as a weekly newsletter on io.js’ medium page. which recaps any change in the platform, and keeps people informed of the latest updates. We can say that comparing io.js’ constant influx of information and growth to that of Node’s throughout the past year is like comparing night and day.

The Merger

As io.js continued to grow larger, a significant amount of time and resources were poured into a project that lacked any commercial resources. In the article titled Growing Up – io.js needs a foundation, Mikael Rodgers discusses why the time for the merge must be now, before the projects grows too large. I highly suggest you to take a quick look at it. The author explains that although the open-source community has been doing a great job controlling io.js, a project of such substance needs more than just an open-source community to thrive.

Conclusions

In conclusion we have to admit that even if Joyent was not the best administration when handling Node, they provided the necessary assets for financing, marketing, legal matters, and all other resources necessary for a project of this size. That being said, io.js, which will now be referred to as Node.js, had an unbelievably successful run.