A Free Trial That Lets You Build Big!
Start building with 50+ products and up to 12 months usage for Elastic Compute Service
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
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:
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.
"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:
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:
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.Subsequent
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.Summarize
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
Start building with 50+ products and up to 12 months usage for Elastic Compute Service