What's happening with node. JS and Io.js

Source: Internet
Author: User
Tags lua ruby on rails joyent

Transferred from: Http://www.infoq.com/cn/articles/node-js-and-io-js

Last December, a number of heavyweight node. JS developers were dissatisfied with Joyent's management of node. JS and created Io.js. The io.js was developed very quickly, first released in January 2015 in 1.0, and soon reached the 2.0 release, and the community was very active. Recently, the Io.js community announced that the two projects would be consolidated under the Node Foundation and temporarily supervised by the node. JS and Io.js core technology teams. This article will talk about some of the history of the node. JS Project, and the feud between the Io.js project and their future development. We hope to understand how the open source project evolves and develops in the operational mode from the historical level.

The origin of the node. JS Project

Since JavaScript was created by Brendan Eich, humans have never given up on the idea of applying JavaScript to the server, except as an important addition to the browser. These efforts have never ceased, starting with the Livewired project (December 1994). If you don't know livewired, you should know that you can use the JScript language (1996) or Rhino in ASP. But until the 2009, these server-side JavaScript technology and the same application on the server side of Java, PHP, compared to appear relatively pale.

When it comes to the origins of node. js, it's inevitable to talk to its founder, Ryan Dahl. In 2009, the service-side JavaScript ushered in its inflection point, because Ryan Dahl brings node. js, and after that node. JS brings the server-side JavaScript to a new place, a lot of JavaScript is being contributed on GitHub, and a lot of JavaScript modules appear, and there's a real boom.

node. JS is not an out-of-the-box project, or a web front-end engineer in the lab to accomplish the ideal of applying JavaScript to the server. Its appearance was largely attributed to Ryan Dahl's years of research and a just-right node. 2008 V8 with the advent of the Chrome browser, the JavaScript scripting language's execution efficiency is improved, which brings new revelation to Ryan Dahl, his original research work and V8 between the spark, thus bringing an event-based high-performance Web server.

For the founder of node. JS Ryan Dahl.

Ryan Dahl has a strange experience, he is not a trained developer, in 2004 he was at the University of Rochester in New York, the mathematics department of the PhD, during the study of some fractal, classification and P-adic analysis, which is not related to open source and programming. 2006, perhaps tired of reading Bo bored, he produced a "world so big, I want to see" idea, made a decision to drop out, and then a person came to Chile's Valparaiso town. At that time he did not know what kind of job to live in, during which he had stayed up to do some unrealistic research, such as how to communicate through the cloud. Here is the intermediate product of his output at this stage, which appears to be a bit similar to what Apple later released.

From that, Ryan Dahl did not know whether because of the relationship between life, he began to learn the Web site development, embarked on the path of yards of farmers. At that time Ruby on Rails was very hot, and he learned it without exception. From that time on, Ryan Dahl's lifestyle was to take the project, then go to the client's place to work, in his eyes, pay and work is actually go there to travel. Since then he has been to many places, such as Buenos Aires in Argentina, Cologne in Germany and Vienna in Austria.

After two years of work, Ryan Dahl has become an expert in high-performance Web servers, from developing applications to becoming specialists who specialize in solving performance problems for customers. He began writing open-source projects to help customers solve high-concurrency performance problems with Web servers, with Ruby, C, Lua in the language they tried. Of course, these attempts eventually failed, only one of the HTTP service library written by C Libebb Project slightly improvement, basically counted as the predecessor of LIBUV. Each of these failures has its own reasons, because the virtual machine performance is too bad to solve the fundamental problem, C code performance is high, but let the business through C development is obviously not very realistic things, Lua is the existing synchronous I/O resulting in the inability to play a performance advantage. Despite the failure, Ryan Dahl generally felt that the key to solving the problem was to achieve the goal through event-driven and asynchronous I/O.

As soon as he was desperate, the V8 engine came. V8 meets his imagination about high-performance Web servers:

    1. No historical baggage, no synchronous I/O. There is no situation where a synchronous I/O causes a dramatic decrease in event loop performance.
    2. V8 performance is good enough, much faster than the engine of other scripting languages like Python, Ruby, and so on.
    3. The closure feature of the JavaScript language is very convenient and works better than the callback function in C.

So in February of 2009, he submitted the first line of the project with the new Idea, and the name of the project was eventually named "node."

In May 2009, Ryan Dahl formally announced his project to the outside world. At the end of 2009, Ryan Dahl a speech on node. js at the jsconf EU conference in Berlin, after which node. js became popular.

The above is the origin of node. JS Project, is a focus on the implementation of high-performance Web server optimization experts, after several exploration, after setbacks, encountered V8 and the birth of the project.

The organizational structure and management model of the node. JS Project

node. js with the jsconf EU conference and other forms of propaganda, a Silicon Valley-based start-up company noticed the project. This company is joyent, mainly engaged in cloud computing and data analysis. Joyent realized the value of the node. JS Project and decided to sponsor the project. Ryan Dahl joined the company in 2010 and was full-time responsible for the development of the node. JS Project. At this point, the node. JS Project enters its second phase in its life: from individual projects to projects under a company organization.

This stage can be from 2010 Ryan Dahl joined Joyent began to the end of 2014 Mikeal Rogers Launch node forward end, node version also developed to v0.11. In this period, most companies in the IT industry have focused on node. JS projects, such as Microsoft's significant contribution to the porting of Windows to node. js.

The organizational structure and management model of this period can be summed up as "Gatekeeper + Joyent" mode.

Gatekeeper's identity is similar to the project's technical leader, the technical direction of the grasp is an absolute authority. The gatekeeper are: Ryan Dahl, Isaac Z schlueter, Timothy J Fontaine, all of whom are highly respected contributors to the node. JS community. The legal aspects of the project are the responsibility of joyent, Joyent registered the "node. js" This trademark, the use of its related content needs to be legally authorized (such as the author "in layman node. js" used the logo node. JS, was authorized in the form of mail). In addition to the technical aspects of gatekeeper, there are some core contributor. In addition to contributing important feature, core contributor helps the project perform routine patch submission processing, assisting in review code and merging code. The well-known core contributor of the project are Ben Noordhuis,bert Belder, Fedor Indutny, Trevor Norris, Nathan Rajlich, etc., most of them from the Joyent company, They have important modules of their own responsibility. Gatekeeper In addition to doing core contributor things, but also to determine the release of the daily things such as release.

After node. JS became a joyent company project, Joyent's contribution to the project was significant and did not interfere with the development of the node. JS community, but also invested more resources to develop it, such as Ryan Dahl, Isaac Z. Schlueter, Timothy J Fontaine and others are full-time employees of Joyent.

The Division of the node. JS Community

The "Gatekeeper + Joyent" mode worked well in 2013, and the honeymoon period was probably suspended in the second term Gatekeeper Isaac Z. Schlueter left Joyent to create the NPM Inc company's own time. During the first two gatekeeper, the version iterations of node. js are kept at a high frequency, and a small version is released approximately every month. After Isaac Z Schlueter resigned gatekeeper, node. JS's contribution frequency began to decline, and the main code submissions came mainly from community submissions, and the version of the code dropped to three months to release a small version. The 1.0 version that the community has been expecting has been delayed. node. JS is a very active period, but it is slow for the node. JS kernel. The technical direction seems to be somewhat unclear, on the one hand expecting the kernel to stabilize, on the one hand can not meet the community's desire for new feature (such as the ES6 feature is slow to introduce).

The third term Gatekeeper Timothy J Fontaine himself was aware of the problem. From the time he took office, the main direction of work was to solve the problem. His main work is the node on the road activity, through a series of activities to get to some large enterprise users their use of node. JS feedback. Through some research, he made a decision to cancel the donor's CLA visa, allowing anyone to contribute code.

Although the practice of Timothy J Fontaine is good for node. JS itself, things have not improved much better. This time, the node. JS project has been very slow to contribute to the community, and the regular active core contributor only Fedor Indutny, Trevor Norris. In addition to the case of personal pronouns, Ben Noordhuis, a very important contributor to the NODE.JS/LIBUV project, left the core contributor list, which was raised to a moral level and greeted a number of abuses. Joyent's former CEO even wrote that if he was his staff, he would be expelled. This causes the node. JS project to be less active. The slow progress of node. JS even makes the community's well-known geek TJ Holowaychuk choose to leave node. JS and put it into the embrace of go language.

It can be concluded that this period is the end of the "Gatekeeper + Joyent" model. Joyent the project's omission and other levels of intervention in other members of the community have led to a slow progress in the project and a snail's speed to describe it. Although Timothy J Fontaine tried to salvage something, there were some behaviors to try to reactivate the project, but it was too late.

At this time a very prestigious person in the community appeared, he is Mikeal Rogers. Mikeal Rogers's prestige is not based on his contribution to the node. JS Project code, his prestige comes mainly from the request module and the JSCONF conference. Jsconf is the top-level meeting of the JavaScript community and he is the main initiator.

In August 2014, Mikeal Rogers, led by several important core contributor, launched a group called "Node ForWord". The organization is committed to launching a project that is driven by the community itself to enhance node, JavaScript, and the entire ecosystem.

"Node ForWord" can be regarded as the predecessor of Io.js. These core contributor have been working on "Node ForWord" for a while, and later, because of the potential for node's trademark issue, Fedor Indutny was angry and fork node. JS, renamed Io.js, declaring a formal division of the node. JS community.

To put it simply, this is largely due to the dissatisfaction of the community contributors with the Joyent company, which leads these major contributors to collaborate through a more open model. Complex point that this is the company open source project management model problem, when the community direction and company direction is consistent, must be beneficial to everyone, the shape of the honeymoon period, but when the two steps inconsistent, the differences will be exposed. This was evident at the late stages of the node. JS Project, where the community felt the project was progressing slowly, while Joyent's management thought he was stable and reliable.

Io.js and node. JS Advisory Board

During the progress of "Node Forward", community members communicated a basic open management model. This pattern is embodied during io.js.

Io.js's open management model is mainly embodied in the following aspects:

    • There are no more gatekeeper. Instead the TC (Technical Committee), the Technical Committee. The Technical committee is basically composed of core contributor that have a lot of code to decide the direction of the technology, project management and processes, principles of contribution, management of additional collaborators, etc. When there are disagreements (such as the introduction of feature), the voting method is used to decide, following the simple principle that few obey the majority. The gatekeeper, which was essentially a single person, is now being implemented by a technical committee. If you want to add a new member as a TC member, it needs to be proposed by an incumbent TC member. Each company's membership in the TC cannot exceed 1/3 of the total members.
    • Introduce collaborators. The maintenance of code warehouses is not confined to the hands of several core contributor, but introduces collaborators, the collaborators. It can be understood as having more core contributor.
    • TC meeting. The previous communication methods were mostly distributed, and were communicated through GitHub's issue list. This model tends to accumulate problems, and the Community's opinions are accepted and processed depending on the situation of core contributor. Io.js will hold a weekly TC meeting, the content of the meeting is mainly issue discussion, problem solving, work progress and so on. The meeting was conducted remotely via Google Hangout, chaired by the appointed Chairman endorsed by TC. The meeting video will be posted on YouTube and the meeting record will be submitted as a document in the Code warehouse.
    • Set up a working group. Set up a number of subdivided working groups in the project, and the Working Group is responsible for moving forward in the subdivision direction.

Io.js project from Fork, released the v1.0.0 version in 2015-01-14. Since this io.js, released a new version in weeks, has now been released to 2.0.2. The Io.js project differs from node. JS in its behavior mainly in the following ways:

    • The new features are radical. Io.js Despite the architectural aspect of node. JS (established by Ryan Dahl), ECMAScript 6 embraced. New features that used to be enabled by flag in node. js are no longer needed in io.js. Of course without flag the premise is V8 feel that this feature has stabilized the case. Once the latest Chrome has adopted a new version of the v8,io.js, keep it up to speed quickly.
    • Version iterations. Io.js maintains a higher frequency iteration, with the underlying API changing as a large version of the division, but for small improvements, keep the frequency of one version per week. As long as it is improved, Io.js project TC and collaborators are very welcome, big to specific feature or bug, small to document improvement can be accepted, and release version soon.
    • Issue feedback. node. JS's important contributors are working on io.js, and the node. JS and Io.js projects have almost the same speed of feedback, but the problem-handling speed is known to be fast io.js, with a basic response within 2-3 days, and node. JS takes 1 weeks to respond.

Basically the vitality that should belong to the node. JS Project is now in the Io.js project here. If nothing else happens, Io.js can count as a success story for community-driven open source projects.

Of course, despite the slow progress on the node. JS side, Joyent has made their efforts. During the "node Forward" discussion, Joyent set up a temporary https://nodejs.org/about/advisory-board/of the node. JS Advisory Board. The main objective of the Advisory Board is similar to the idea of "Node Forward" in the form of advisory boards to produce a more open management model to find ways to balance the needs of all members and provide a platform for all parties to devote resources to the node. JS Project.

The Advisory Board invited a number of important contributor and some node. JS heavy users to participate. Several meetings were held to discuss and develop a new management model. Then appeared on one side is io.js in full swing release version, joyent this side is a meeting to discuss the situation. The Advisory Board investigated IBM (ECLIPSE), Linux Foundation, Apache, etc., and decided to form the node. JS Foundation.

Io.js and the node. JS Foundation

When the time came to January 2015, the Provisional committee formally issued a circular to decide to move the node. JS Project to the foundation and decide to reconcile with Io.js. To put it simply, the node. JS aspect, in addition to the slow progress of the version, is actually developing a new model to ensure the next development of the node. JS Project, joyent the company in line with the principle of openness, but also make considerable concessions, maintain a more harmonious state.

However, the io.js is moving too fast, the code is progressing much faster than the node. JS project, and the discussion of the settlement began in February and the decision was not made until May. At this point Io.js has released its 2.0 version.

The final conclusion is that both the node. JS Project and the Io.js project will join the node. JS Foundation. The node. JS Foundation model is more similar to io.js, but more robust. Mikeal Rogers in his article entitled "Growing Up" mentions the reason why the Io.js project needs a foundation.

The technical maturity of the Io.js project is clearly more advanced than the original gatekeeper era, giving contributors more managerial rights. In terms of market and law, however, it is slightly naïve. In the end, both the advisory board and the Io.js have chosen to exist in the form of foundations. This foundation is made up of the Linux Foundation, comprising the Board of directors and the Technical Committee, which is responsible for marketing and legal matters, and the Technical Committee is responsible for the technical direction.

As the "kingdoms": The World is the trend, a long time will be divided, long will be combined. The node. JS project also emerged from Joyent's bosom and grew into the form of a foundation, entering the third phase of the project's life cycle.


From the split of Io.js to the node. JS Foundation, it seems like a farce from outsiders, but in this process you can see the growth of an open source project itself. Although Io.js will be attributed to the node. JS Foundation, like a runaway child returning home, its departure may be forgotten, but from the outset, the battle, Io.js is actually a winner. Situation, destroy nothing is a more appropriate description of the joyent. If Joyent can do this in advance, there will be no division of the community.

node. JS is in a state of stagnation between the development and io.js of the active situation, there is a large number of merge work. As one of the conditions for reconciliation, the release of node node after the JS Foundation will be based on current io.js progress. The following combined work is illustrated below:

                        Now       (io.js)    v2.0   :          v2.x          |         |    :            | v0.10.x  /--------------:-----------------\   node. js 2.0____|____/               :                  \______|_____         \               :                  /          \--------------:--------------- --/          |         |    :     |       |       (node. js) v0.12.x:  v0.13.x  v0.14.x

Io.js will continue to remain published until the merge is complete. The next big version of node. JS spans 1.0, directly to 2.0.

The TC of the Io.js project will be invited to join the node. JS Foundation's TC, after all the two have agreed on technical management. The Foundation will elect the Chairman of the Technical Committee among the members of the gold and silver members in the election of directors and technical committees.

To become a member of the node. JS Foundation, a company can be registered as a member by way of sponsorship.


When an open source project grows up, it is no longer the same as the founder's personal maintenance. The development of the node. JS Project can be said to show how an open source project grows into a mature project. Of course it's still too early to say that the node. JS Foundation is successful, but bless it.

What's happening with node. JS and Io.js

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.