Node.js 的 2014 年充满了不幸和争议. 这一年 Noder 们经历了太多的伤心事, 经历了漫长的等待, 经历了沉重的分裂之痛. 也许 Noder 们不想回忆14年 Node.js land 发生的事情, 但正因为痛才更有铭记的价值.
2013.12.04 Ben 离开 Node 项目
自从 Node 鼻祖 RY 退出项目的开发, 管理之后, Ben Noordhuis 在两年多的时间里一直不断为 node 项目提交代码, 解决问题, 提升速度. 成为了 Node 和 libuv 两个项目的最大代码贡献者. 但却因为一件意想不到的人称代词风波, Ben 不得不离开 Node 世界. 这个事件犹如一枚核弹一样在 Node 圈中激起了轩然大波, 有人惋惜 Ben 的离开, 有人指责 Ben 对女程序员不尊重. 诚然这次事件折射出男女问题在程序员世界的敏感性. 但背后却是 Node 这个炙手可热项目控制权的争夺.
01.15 Isaacs 交接 Node 掌门人身份
Isaacs 是 RY 之后 Node 的第二任掌门, 同时也是包管理工具 NPM 的作者. 在这段时间里 Isaacs 的工作重心是 Node 的开发和维护, NPM 则由 Nodejitsu 运营. Node 因其众多的优秀特点, 得到众多开发者和公司的采用和支持, 期间 NPM 的包数量和下载量也呈现了爆发性的增长, 甚至导致包安装速度巨慢, 服务多次宕机, 因此 Nodejitsu 举办了 scalenpm 活动筹集 NPM 扩容和维护资金, 并在很短时间内达成 30W$目标.
Isaacs 看到了 NPM 未来的发展空间和机会, 因此将项目掌门人身份移交给TJ Fontaine, 并把 NPM 的运营权从 Nodejitsu 收回, 成立了 npm, Inc 公司, 并获得了几百万的启动资金. 专注 NPM 服务的运行, 维护, 开发工作, 并进行商业化探索. 这之后 Nodejitsu, strongloop, cnpm等相继搭建了自己的 NPM registry服务.
03.03 Node.js arrives for the JVM
14年有一个说法: JavaScript everywhere, and everything ported to JavaScript.
Nodyn 是让这种说法得以信服的项目之一. 它可以让 Node.js APP 在 JVM 之上运行的项目. 并且在 Oracle 举办的 Java 2014 大会上, 有一个专门的议题是讨论 JS 的
04.05 Microsoft Publishes Node.js Tools for Visual Studio
Node 项目最初只能在 linux 和 osx 平台运行, 但随着项目越来越多的被使用, RY 对 windows 平台的重视, 后来 Node 终于来到了 win 的世界, 实现了三大平台兼容. 微软对 Node 也非常重视, 并有全职员工进行 win 版 node 的开发, 支持, 维护. 之后在其云平台 Azure 中添加 Node 环境支持. 同时还进行了 Node.js Tools for Visual Studio 开发, 在四月份实现了Beta, 12月份实现了RC. NTVS 将众多 VS 优秀特点(语法提示, 包管理, 断点调试)带到了 node 的(win)开发世界中.
说道开发工具: Webstorm 和 Sublime 也是 Node 开发的两个利器.
05.27 NodeSource 加入 Node 创业公司行列
随着 Node 的发展, 越来越多的开发者, 公司开始使用 Node, 并涌现了许多 Node 方向的创业公司.Nodesource 是一家以 Node.js 为切入点的软件创业公司, 提供企业级的产品, 服务, 培训, 咨询等. 除此之外还有许多专注于 Node 的创业公司:
- Strongloop
- Nodejitsu
- modulus
- risingstack
- nearform
- npm, Inc
- yld
- nodefirm
- nodecompany
- nodeprogram
06.11 Node.js 授权协议调整
TJ Fontaine 接管 Node 之后, 对项目未来的发展有自己很好的规划, 想要从网站, 文档, add-on抽象层等方向着手推动项目发展, 并在全球各大城市举办 Node.js on the road 活动以分享, 交流, 收集 node 的使用心得, 问题. 后又决定修改 Node 的贡献授权协议, 希望大大简化代码贡献流程, 促进项目活跃发展. 但此举并未提高开发者对项目的代码贡献激情和速度. 反而因为各地举办交流活动, 及其他原因使得早已开发完成, 大家翘首等待的 0.12 迟迟不能发布. 后又因为 node fork 事件忙于筹办咨询委员会事宜无暇顾及代码开发, 至今(12.19)都没发布0.12 . 在这一年的时间中 TJF 唯一一件值得肯定的事情可能就是项目官方网站的全新改版吧.
注: Node 版本的发布规则为偶数为稳定版, 奇数为开发版, 0.12 本应该在 0.10 发布的一年后(2014年初)发布, 按照规划 0.12 是 1.0 发布前最后一个版本, 并添加了多个特性. 0.12代码开发工作其实在2013年底已经完成
07.03 TJ 宣布离开 Node 转投 Go
如果你不知道 TJ 是谁, 那你肯定不是 Noder, 也算不上资深 JS 开发者. TJ 是 Node 界 NO1 的大神级人物: 90 后, 高产且高质量开发者, 众多 Node 知名模块作者(Express, ejs, commander, connect, mocha, co, koa, git-extras), 其随便一个项目在 github 上 star 数量成百上千,github follower数量上万,且排名在前十(前十中有三位为github创始人, 还有linux的作者),其一天可以完成普通人一周的工作,并且在twitter和github上回复各种问题.以至于让人认为他不是一个真实的人,而是一个包含多个开发者的组织. 很少参加开发者大会, 几乎不看编程书籍,而是通过直接看代码学习. 除 Node 之外 TJ 还是许多其他语言(C,java,go…)的高手. 除此之外他喜欢杀马特风格, 是一个摄影爱好者
可是 TJ 大神选择离开 Node, 而投入 Go 的世界. 因为 Node 一些语言的缺点: 异步代码维护困难, 不适合大型项目, 异常处理很弱, 因为 node 版本发布很慢, 因为他现在开发的东西使用Go更合适, 因为他在node的世界里已经很巅峰,想要尝试新的东西.
TJ 将他大部分的项目都交给了其他人维护, 其中 Express 被有偿转给了 Strongloop (项目移交后Express的其他主要开发者则致力于http基础库的开发jshttp). 目前只在维护koa, 一个在0.12之后将会大放异彩的项目.
TJ生活在加拿大, 目前就职于 segment.com
10.23 Node.js 咨询委员会成立
自从 Ben 事件之后, 一直有声音建议将 Node 项目移交给开源软件组织, 以一种更加开放的方式管理. 后来因为0.12的一拖再拖, 及其他问题, 导致众多开发者对 Joyent 不满, 于是项目的几个 top 开发者成立了node-forward, 并 fork 了项目, 希望能加快项目开发.
为了应对这次危机, Joyent 效仿 Docker 的管理方式, 成立了advisory board, 想要以一种更加开放的方式管理项目, 初始成员包含多个公司node开发者, 并进行了多次会议 讨论成员选取方式, 代码贡献发布, 新特性支持等众多问题.
咨询委员会的成立, 使得 Node 的管理更加规范, 但势必会减慢项目的发布进度(初期各种事情需要确定, 新特性必须经过多方商讨确定等)
11.21 libuv 1.0 release
libuv 是 Node.js 的底层支撑项目, 提供了系统异步IO支持, 并且兼容三大平台. 原来只是用于 Node 项目, 现在从 Joyent 公司独立出来, 并应用到许多其他项目 Luvit, Julia, pyuv. 目前该项目已经发布 1.0 . 其主要开发者为 StrongLoop 公司的 Ben 和 Bert. 以及saghul
12.09 io.js fork
Node.js 跟 Docker 真像一对同命兄弟, 发布后都迅速的火起来, 都采用相似的委员会管理模式, 最后又都分裂为两个分支: Docker 分裂出了 Rocket, Node 分离出了 io.js
io.js 其实 是nodeforward 重命名, 因为法律版权问题,他们无法使用 node 这个名字, 故而改用 io.js 这个通用名词. io.js 由 node 项目top8代码贡献者中的六人fork出来, io.js定义为与node和npm兼容的框架, 通过几次视频会议确定了他们的方向和目标:
- Continuous integration
- 100% passing tests as a normal state of affairs
- Strict SemVer-compliant versioning
- Contributor ownership, outside of corporate control
- Transparent consensus-seeking governance
- Weekly releases
- Supported versions of V8
- Active development
- Predictable roadmap
- Community engagement
目前正忙于着手开发新版本, 打算在2015.1.13 发布 1.0 alpha 版. 另外值得一提的是, Ben 目前成为io.js的主力开发者, 以另外一种方式又回到了node的怀抱.
关于io.js, advisory board, node-forward的关系可以参看Isaacs的一篇博客, 其中提到io.js跟node并非竞争关系,并且希望将来某个时候能够合回node.
分裂在开源的世界中似乎是无法避免的问题. 竞争带来分裂的同时, 也为整个生态带来生机.
12.10 npmjs.com 改版
似乎这一年来唯一的好消息就是 NPM 了. npm,Inc 成立后, Isaacs通过架构重新设计和优化, 大大增加了服务的稳定性, 及响应速度(详见官方博客). NPM 在 06.27 超过 ruby 和 java 成为最大的包管理平台, 并在09.13发布了2.0版, 引入了包括私有模块在内的众多特性, 10.14成为第一个数量超过十万的包平台. npm 还重新设计了文档页面, 及首页. 并把域名从 .org 迁移到了 .com (盈利的化的前奏?)
除此之外他们还重新定义了 NPM. NPM不再只是node的包管理工具, 还是 browser, jquery, gulp, bower, mobile, angular, nodebots, grunt, tessel, browserify — javascript 的管理工具. NPM 不再是 node package manage 的缩写, 而是: nice people matter, nominally patriotric meathead, neoanthropic preternatural murmurings 等有趣单词的缩写(可能是 io.js 的出现才让他们想要强调这点, 也可能是他们想做更多,而不只是 node 平台)
2015
14 年 Noder 们把最坏的事情都经历了, 未来只会更好, 不会更差. 随着 node 0.12 和 io.js 1.0 的马上发布, 我们不仅能用上新版本的众多特性, 还能使用 ES6 中的许多语法: Generator, Promise等, 届时 koa 等框架将会得到大量采用. 15 年 node 会走出迷茫, 向着美好的未来前进.