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. 批处理中格式化Date

    @Echo Off Set _Date=%date% If "%_Date%A" LSS "A" (Set _NumTok=1-3) Else (Set _Nu ...

  2. php中替换中文引号不成功的原因

    中文引号替换成英文引号,突然发现总是不成功. 后来查找资料得知,需要写成这种风格的. 正确代码如下:   中文单引号: str_replace('‘',''',$str);str_replace('’ ...

  3. Linux下磁盘加密luks使用

    使用luks加密磁盘,磁盘需要映射才可以挂载,映射的时候需要输入密码验证.luks相对于是对硬盘上了一把锁,要想打开就得有相应的钥匙,如果打开了就可以随意操作了,和普通硬盘一样. 使用方法如下: 0. ...

  4. 使用c语言实现的常用函数

    /* 为了面试准备的,有些在工作中也可以用用,本人算法方面比较欠缺,如果有更优秀的算法麻烦告诉我啊 */ /* strcat的实现 */ #include <assert.h> char* ...

  5. Consuming JSON Strings in SQL Server

    https://www.simple-talk.com/sql/t-sql-programming/consuming-json-strings-in-sql-server/ Consuming JS ...

  6. HDU - 6400 多校8 Parentheses Matrix(构造)

    Parentheses Matrix Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Oth ...

  7. 反射学习:(System.Reflection)

    反射为了动态(运行时动态) 原理:读取metadata(?)   Assembly assembly = Assembly.Load("TestReflections");//反射 ...

  8. Light Pre-Pass 渲染器----为多光源设计一个渲染器

    http://blog.csdn.net/xoyojank/article/details/4460953 作者: Wolfgang Engel, 原文: http://www.wolfgang-en ...

  9. PHP RSA算法 HMAC-SHA1加密算法

    HMAC-SHA1加密算法 function getSignature($str, $key) { $signature = ""; if (function_exists('ha ...

  10. CF961G Partitions(第二类斯特林数)

    传送门 对于每一个元素,我们只要能求出它的出现次数\(sum\),那么每个元素的贡献都是一样的,最终的答案为\(sum\times \sum_{i=1}^n w_i\) 那么分别讨论 如果这个元素自己 ...