抖音技术能力大揭密!钜惠大礼、深度体验,尽在火山引擎增长沙龙,就等你来! 立即报名>> 了解详情
写点什么

Node.js 是如何创建开源社区模式的

2016 年 6 月 28 日

创建一门新的编程语言或者是一个平台很少时候是相安无事的,多数时候都是在挑战各式各样的困难。这里要讲述的就是一个典型的例子,即围绕 Node.js 平台的社区建设一路走过来的经验。Node.js 是可以让人们使用 JavaScript 语言来创建后端服务的平台,而且其本身实现了很多“模块”来掌管核心的功能。Node.js 的模块使用 API 的设计从而来降低撰写服务端应用的复杂性, npm 是 Node.js 的软件包生态系统,是目前世界上最大的开源类库生态系统。

目前有 50 亿的已连接设备,而且在接下来的几年还会有极大的增长,无论是现在已经连接上的还是未来即将连接的,这些设备都是非常重要的,而且很多公司-包括 IBM、三星、Intel、以及微软-均视 API 是这些连接的设备的关键以及 Node.js 是连接它们之间的粘合剂。

来自 readwrite Cate Lawrence 最近在参加 Linux 基金会协作峰会上和 Node.js 的核心成员进行了一些沟通,并分享了这些核心成员在社区经历了这么多之后的一些心得和经验。

关于 Node.js 历史的简短介绍

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 基金会的治理,平等的分开为两个实体:一个是商务委员会,负责商务、市场和法律方面的事务;另外一个是技术指导委员会,负责代码开发、测试、集成、以及工作组和项目。

Snell 解释道:

“拥有一个治理结构能够让决策更加的清晰,从根本上解决突显个性的问题。”

Snell 进一步强调,这样还能够为开发者驱动创新留下空间。

我们的路线图是开发者和贡献者自己愿意做的,这一点也在提交的历史上有表现。

今天的 Node.js 项目已经划分为多个组件,全部的组织规模已经超过 400 人。Node.js 核心已有超过 50 人的提交者,和 100 多人的贡献者。Mikeal Rogers( Mikeal Rogers 是 Node.js 基金会现任的社区经理。)解释了此次创新是对基金会之外的领域的一个扩展。

“我们刚刚开始分析我们现在的开源开发者们都是谁,我们尝试着去尽量满足更多的普通用户,并学习如何将这些用户转化为参与者。其实人们并不希望自己成为一个被动的消费者。我们将尽力的去为大家扫清参与的障碍!”

基金会的 技术指导委员会 监督着很多的其他团队,包括包容工作组。他们已经推出了切实可行的方法,如对于时区的规定的包容。Rogers 进一步解释了时区的例子:“Pull Request 必须等够36 个小时以确保其它时区的贡献者们审核过。”

Rogers 谈道:“随着项目的成熟,开始有了头重脚轻的趋势,而且对于质量控制的分级要求过分,这些都得通过流程来应对。我们使用流程来增加透明度,鼓励参与。不断增加的代码审核池也导致更好的质量控制。更多的人就意味着更多的审核、更多的检查,以及更佳的制衡。我们还重组了核心组,将之分成几个工作组,从而避免日益严重的头重脚轻现象。”

社区的增长不仅体现在引起了人们的兴趣,还表现为提交者的增多。Node.js 很好的演示了开放的贡献和参与式的治理就是开源开发的未来!而且一直在扩张,包括我们正在写这篇文章的时候,Node.js 为社区创建了值得人们去努力追寻的方向!

(点击放大图像)

感谢张龙对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2016 年 6 月 28 日 17:481499
用户头像

发布了 33 篇内容, 共 10.2 次阅读, 收获喜欢 13 次。

关注

评论

发布
暂无评论
发现更多内容

读书,区分一二三四手知识

dd多了个多

读书笔记

周子衡 | 数字资产、数字支付及跨境活动——以美元数字化为例

CECBC区块链专委会

加密货币 数字资产

一位区块链产品经理讲述“区块链”的通知 重点方向包括区块链安全

CECBC区块链专委会

物联网 区块链技术 联盟链

第九周总结

andy

VIPKID 在线教育场景下的实时计算技术落地和实践

Apache Flink

flink

应用开发基础知识-文件系统

superman

文件系统

作业1

chenzt

起伏激荡的以太网,抱上这条大腿才能乘风破浪

脑极体

前端面试 vue 部分 (2)——Vue是如何实现双向绑定的

dd多了个多

Vue Web 前端开发 前端面试

总结

chenzt

消息队列面试热点一锅端

yes

kafka RocketMQ 面试题 消息队列

第九周作业

andy

极客大学

秒杀系统的挑战和应对方案

2流程序员

写作平台划线笔记新功能全新上线!给你带来不一样的写作学习体验~

InfoQ写作平台官方

写作平台 玩转写作平台

湾区金科沙龙,华青融天技术总监吴伟平详解旁路式应用性能监控

DT极客

JVM 垃圾回收原理

周冬辉

架构训练营第九周作业

张锐

企业BI智能大屏,除了页面炫酷,还能带来什么?

力软.net/java开发平台

企业信息化 BI 数据可视化

读书时,如何提炼文章架构形成思维导图

dd多了个多

读书笔记 读书感悟

《深度工作》学习笔记(4)

石云升

学习 读书笔记 习惯 专注 深度工作

百度安全研究院:区块链智能合约介绍

百度安全

比特币 区块链 智能合约 以太坊

1.8w字 | 初中级前端 JavaScript 自测清单 - 2

pingan8787

Java 前端 web前端

大厂的人才衡量标准

池建强

人才标准

架构师训练营第9周

大丁💸💵💴💶🚀🐟

Java 垃圾回收

dongge

前端面试vue部分(1)——谈谈你对MVVM的理解

dd多了个多

Vue 前端 Web 前端面试

垃圾回收

Mr.Monkey

什么是零代码?零代码开发可以带来的好处

代码制造者

可视化 零代码 编程效率

我是如何写读书笔记的

dd多了个多

读书笔记

汇丰坠落:世间已无「日不落」

钛禾产业观察

汇丰 财经

Kafka集群缩容实战

我是个bug

大数据 kafka 运维 Big Data

Study Go: From Zero to Hero

Study Go: From Zero to Hero

Node.js 是如何创建开源社区模式的-InfoQ