Node.js 是在 2009年5月份创建的,是属于典型的 Git 和 GitHub 时代最初孕育的项目。另外需要先说明一点,那就是回顾 Node.js 的历史,并不是仅仅为了给大家回味,而是想找到在 Node.js 发展到今天作为一个大型的开源社区对于处理内部冲突发展到如此地步的源头。 几年前,Node.js 还只有很少的几名提交者的(贡献者以写模式访问仓库是为了合并代码和修复 bug)。随着项目的扩大,在管理结构上以及最初的这些成员的个性各异,渐渐的开始出现问题了。具体的表现就是少数的几个提交者来维护庞大的代码提交越来越力不从心,而且开始有一些开发者不再贡献了,这其中包括核心提交者和外围的贡献者。这也直接导致的后果就是发布渐渐跟不上步伐了。

James Snell ,是项目的早期贡献者,现在就职于 IBM,是该公司 Node.js 的技术领导,同时也是 Node.js 社区的核心技术指导委员会的成员之一,说道:

开发者在想作出改变时,并不会受到鼓励。这就会让开发者们失去动力,从而远离社区。创新也随着就会下降,开发者觉得不值得在此项目上投入时间和精力。

 

通过“开放”开源来进行改变

为了应对这些挑战和相应的冲突治理,在2014年12月,Fedor Indutny 启动了 io.js,一个 Node.js 的分支。与 Node.js 不同的地方是,io.js 的作者计划要保持能跟上 Google V8 JavaScript 引擎的最新版本。io.js 不同于原来的地方在于贯彻了 Do-ocracy 运动的操作原则。Do-ocracy 运动是一种组织架构,它是指为人们自己分开了选择角色和任务,然后去执行。干工作的人和责任挂勾,而不是选举或选定官员。Snell 进一步透露:

"通过开放贡献的流程,我们算是将平台稳定下来了。"他接着解释​​说社区成员贡献的代码,社区或文档中定义的参与决策,是“任何人所发出的请求,都是一视同仁的。”

在 io.js 刚刚成立的前几个月,就吸引了比整个 Node.js 历史上都多的活跃开发者。

在 2015年2月,旨在保持中立的 Node.js 基金会成立了。在2015年6月,Node.js 和 io.js 社区投票通过,将统一在 Node.js 基金会下开展工作。Node.js 版本0.12 和 io.js 版本3.3 合并为 Node 4.0,此次合并还引入了 V8 的特性到 Node.js,而且作了长期支持的发布周期。

Node.js 历史的更多相关文章

  1. Node.js 安装配置介绍

    Node.js 安装配置 本章节我们将向大家介绍在window和Linux上安装Node.js的方法. 本安装教程以Node.js v6.10.1 LTS(长期支持版本)版本为例. Node.js安装 ...

  2. python 全栈开发,Day54(node.js初识)

    一.什么是Node.js 简单的说 Node.js 就是运行在服务端的 JavaScript.Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台.Node.js是一个事 ...

  3. Node.js:安装配置

    ylbtech-Node.js:安装配置 1.返回顶部 1. ode.js 安装配置 本章节我们将向大家介绍在window和Linux上安装Node.js的方法. 本安装教程以Node.js v4.4 ...

  4. 5.Node.js 安装配置

    转自:http://www.runoob.com/nodejs/nodejs-tutorial.html Node.js安装包及源码下载地址为:https://nodejs.org/en/downlo ...

  5. 使用Node.js+Socket.IO搭建WebSocket实时应用

    Web领域的实时推送技术,也被称作Realtime技术.这种技术要达到的目的是让用户不需要刷新浏览器就可以获得实时更新.它有着广泛的应用场景,比如在线聊天室.在线客服系统.评论系统.WebIM等. W ...

  6. Node.js之NPM工具使用

    1.NPM介绍:包管理工具 (1)允许用户从NPM服务器下载别人编写的第三方包到本地石使用 (2)允许用户从NPM服务器下载并安装别人编写的命令行程序到本地使用 (3)允许用户将自己编写的包或命令行程 ...

  7. 深入浅出Node.js(一):什么是Node.js

    Node.js从2009年诞生至今,已经发展了两年有余,其成长的速度有目共睹.从在github的访问量超过Rails,到去年底Node.jsS创始人Ryan Dalh加盟Joyent获得企业资助,再到 ...

  8. (转)使用Node.js+Socket.IO搭建WebSocket实时应用

    Web领域的实时推送技术,也被称作Realtime技术.这种技术要达到的目的是让用户不需要刷新浏览器就可以获得实时更新.它有着广泛的应用场景,比如在线聊天室.在线客服系统.评论系统.WebIM等. W ...

  9. Node.js入门:Node.js&NPM的安装与配置

    Node.js安装与配置      Node.js已经诞生两年有余,由于一直处于快速开发中,过去的一些安装配置介绍多数针对0.4.x版本而言的,并非适合最新的0.6.x的版本情况了,对此,我们将在0. ...

随机推荐

  1. Python3解leetcode Maximum Subarray

    问题描述: Given an integer array nums, find the contiguous subarray (containing at least one number) whi ...

  2. nagios客户端安装与配置windows篇

    一.被监控的windows xp客户端的配置 1.安装NSClient++并安装下载地址: http://sourceforge.net/projects/nscplusNSClient++-0.3. ...

  3. Day05:装饰器,三元表达式,函数的递归,匿名/内置函数,迭代器,模块,开发目录

    上节课复习:1.函数的对象    函数可以被当作数据取处理2.函数嵌套    嵌套调用:在调用一个函数时,函数体代码又调用了其他函数    嵌套定义:在一个函数内部又定义了另一个函数 def foo( ...

  4. java递归demo---

    递归思想: 递归就是方法里调用自身 在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口 递归算法代码显得很简洁,但递归算法解题的运行效率较低.所以不提倡用递归设计程序. 在递归调用的过程中系 ...

  5. [hdu3078]Network(LCA+排序)

    题意:维护树上两点之间的最短路径,其一,将点a的值变为b,其二,求路径上第k大的值. 解题关键:LCA+sort 复杂度:$O(qn\log n + n\log n)$ 数据弱不怪我 //#pragm ...

  6. CF-845C

    C. Two TVs time limit per test 2 seconds memory limit per test 256 megabytes input standard input ou ...

  7. 通过bed文件获取fasta序列

    一.BED 文件格式 BED 文件格式提供了一种灵活的方式来定义的数据行,以用来描述注释的信息.BED行有3个必须的列和9个额外可选的列. 每行的数据格式要求一致. 必须包含的3列: 1.chrom, ...

  8. Django中ORM外键和表的关系(Django编程-4)

    外键 在MySQL中,表有两种引擎,一种是InnoDB,另外一种是myisam.如果使用的是InnoDB引擎,是支持外键约束的.外键的存在使得ORM框架在处理表关系的时候异常的强大.因此这里我们首先来 ...

  9. Tcp编程demo之三部曲

    下面的demo的目的是通过代码来快速的了解tcp编程的步骤 1首先呢,对InetAddress类简单了解其作用 public static void main(String[] args) throw ...

  10. Unity开发Android应用优化指南(下)

    http://forum.china.unity3d.com/thread-27044-1-1.html 在Unity开发Android应用优化指南(上)一文中,从游戏性能,脚本等方面进行了分析和总结 ...