Node.js发展史

论坛 期权论坛 期权     
ayqy   2019-6-30 19:18   3280   0

        感谢支持ayqy个人订阅号,每周义务推送1篇(only unique one)原创精品博文,话题包括但不限于前端、Node、Android、数学(WebGL)、语文(课外书读后感)、英语(文档翻译)        
        如果觉得弱水三千,一瓢太少,可以去 http://blog.ayqy.net 看个痛快
        
[h1]诞生[/h1]
  • 取名 Node:Major refactoring: program name now “node”
Ryan Dahl在 2009/3/3 的这次代码提交将蛋壳中的 NodeJS 项目命名为 node,从此,世界上多了一个 Node.js
[h1]2009[/h1]
  • 讨论 npm(Node package manager):First very early preview of npm, the Node package manager
  • 首次公开演进:Ryan Dahl’s (Creator of Node.js) Original Node.js Talk
Package Manager 是第一件要考虑的事情,目的在于解决代码复用的问题:
There are a lot of very useful modules out there, but it’s tricky right now to actually use more than one of them together.
通过一套模块定义规范来实现复用,目标是:
  • 易声明易公开:很容易定义一个 package 并公开出去
  • 易安装易引用:要能轻易引用开源模块,而不需要提供太多的 package 元信息,并且装完之后能够很方便地引用其功能
  • 即取即用:package 的版本、校验、配置、安装位置等都不必关心,所有对可用性没有明显影响的问题都应该推迟
  • 集中管理:共享同一个 package,方便维护
迄今(2019/6/29)为止,npm 仍具有这些特征,也是早期设计所决定的
同年,Ryan Dahl 在 JSConf 发表了关于 Node.js 的首次公开演讲,尝试走出去
[h1]2010[/h1]
  • Express 诞生:Express: A Node.js web development framework
  • Socket.io 诞生:Socket.io initial release
  • Heroku 提供 Node.js 支持:Experimental Node.js Support on Heroku
  • 第二次公开演讲:Ryan Dahl’s Google Tech Talk on Node.js
  • Node.js 发布 v0.2.0:Node.js 0.2.0 released
Express 与 Socket.io 是生态发展的必然产物,Express 作为 Node.js 生态中资格最老的 Web 开发框架,至今仍有一些难以替代的优势(比如成熟可靠的生态支持)
Heroku 对 Node.js 提供了实验性的支持,这意味着走出去了一小步。同时,一边推广(Google Tech Talk),一边持续演进(迭代 v0.2.0)
[h1]2011[/h1]
  • 出现新手教程:Node.js Guide
  • 开设论坛:Ryan Dahl’s AMA on Reddit
  • npm 正式发布:npm 1.0: Released
  • 出现新手教程电子书:The Node Beginner Book, an introduction to Node.js, is now complete
  • 投入生产使用:LinkedIn uses Node.js
  • 讲述 Node.js 的故事:Ryan Dahl talks about the history of Node.js and why he created it
  • 又一个大型企业用了起来:Node.js in production at Uber
一系列新手教程的出现意味着大家发现了 Node.js 的(学习)价值,之后 LinkedIn、Uber 陆续上船更是印证了这一点,也标志着 Node.js 正式投入生产使用,算是一个重要的里程碑
Node.js 诞生 2 年后,其 Package Manager 终于正式面世,就叫 npm。最后集成到 Node.js 安装包中,成为Node 模块管理的事实标准
Ultimately I included NPM in the Node distribution, which much made it the defacto standard.
同时,通过 Reddit 论坛、Youtube 讲故事的方式与社区联动,让更多的思想汇聚起来
[h1]2012[/h1]
  • 创始人离开:Node.js creator Ryan Dahl steps away from Node’s day-to-day
  • Node.js 发布 v0.8.0:Node.js v0.8.0 [stable] is out
  • 出现商用解决方案框架:Hapi, a Node.js framework
重构完 libuv 之后,Node.js 核心部分已经趋于完备,创始人 Ryan Dahl 功成身退,将决策权交给 npm 的创始人Isaac Schlueter
Node.js 发展趋于成熟的另一个标志是生态中出现了面向企业的解决方案,例如Hapi:
hapi
is a simple to use configuration-centric framework with built-in
support for input validation, caching, authentication, and other
essential facilities for building web and services applications.
[h1]2013[/h1]
  • 出现 CMS:Ghost: Blogging with Node.js
  • 出现生态技术栈组合最佳实践:The MEAN Stack: MongoDB, ExpressJS, AngularJS and Node.js
  • eBay 上船:How We Built eBay’s First Node.js Application
  • 暴露出内存问题:Node.js Memory Leak at Walmart
  • PayPal 开源类 Express 框架:PayPal releases Kraken, a Node.js framework
  • 出现激进派 Web 开发框架:Koa – Web framework for Node.js
MEAN 组合实践、Web 开发框架的更迭、CMS 的出现意味着Node.js 生态发展进入百花齐放的阶段
另一方面,伴随着在企业场景中的大规模应用,也逐渐暴露出 Node.js 自身的一些潜在问题,如内存管理
[h1]2014[/h1]
  • 再次交棒:TJ Fontaine takes over Node project
  • 成立顾问委员会:Node.js Advisory Board
  • Netflix 上船:Node.js in Flame Graphs – Netflix
  • 走向分裂:IO.js – Evented I/O for V8 Javascript
Node.js 又一次交棒,由一直在项目中起重要作用的Timothy J Fontaine接管
同年,Joyent 公司(Node.js 创始人所在的公司,拥有 Node.js 商标)提议成立顾问委员会,打算从完全开放走向自治
As
the community becomes more complex, it is important that we find ways
to balance the needs of all constituents and provide a platform for
these organizations to come together and to provide input into the
project.
这意味着话语权将从开放的开源社区转移到正在使用 Node.js 的几家大公司手里(Joyent、Netflix 等):
Previously,
Node.js was run via mailing lists, GitHub issues, and anyone could
contribute their idea. This idea started getting some hate because it
brought control away from your average, everyday contributor and moved
the power to the “big shots”: companies such as Walmart, Yahoo, IBM,
Microsoft, Joyent, Netflix, and PayPal.
此举招致开源社区的强烈抵触,因而 fork 出了 IO.js,继续以完全开放的社区驱动模式快速发展:
This
repository began as a GitHub fork of joyent/node where contributions,
releases, and contributorship are under an open governance model.
至此,Node.js 第一次走向分裂
[h1]2015[/h1][h2]Q1[/h2]
  • IO.js 率先走向 1.0:IO.js 1.0.0
  • 成立 Node.js 基金会:Joyent Moves to Establish Node.js Foundation
  • IO.js 与 Node.js 和解:IO.js and Node.js reconciliation proposal
这场冲向 1.0 版本的竞速赛以 IO.js 获胜告终。继而,顾问委员会中的几大公司联手成立了 Node.js 基金会,表态支持社区驱动的开放管理模式:
Joyent,
IBM, Microsoft, PayPal, Fidelity, SAP and The Linux Foundation Join
Forces to Support Node.js Community With Neutral and Open Governance,
Resources for Developers
紧接着开源社区作出回应,提议和解,因为管理模式上的冲突已经消除了
[h2]Q2[/h2]
  • npm 支持私有模块:npm Private Modules
  • 第三任领袖离开:Node lead TJ Fontaine is stepping down and leaving Joyent
  • IO.js 合入 Node.js:Node.js and io.js are merging under the Node Foundation
Node.js 基金会成立后不久,第三任领袖 TJ Fontaine 宣布离开,交由基金会与社区管理
It’s
because of this strong team, community, and the formation of the
Foundation that it makes it the right time for me to step back.
紧接着,和解之后,IO.js 合入 Node.js,从分裂走向统一
另外,npm 还提供了私有模块支持,类似于Github 私有仓库,算是对商用的支持
[h2]Q3[/h2]
  • 4.0 is the new 1.0
IO.js 合入之后,Node.js 迎来了真正意义上的 1.0 版本,版本帝正式从混乱的 0.x 进入 4.x 时代
[h2]Q4[/h2]
  • 首次发布 LTS:Node v4.2.0, first Long Term Support release
  • 新成员加入基金会:Apigee, RisingStack and Yahoo join the Node.js Foundation
  • Node Interactive 大会:Node Interactive
发布了第一个 LTS 版本,标志着Node.js 进入稳定发布阶段
同时,Yahoo、RisingStack 等大公司也纷纷加入基金会,共同参与 Node.js 建设。此外,还召开了第一次 Node Interactive 大会,分享 Node.js 在生产中的应用价值
[h1]2016[/h1][h2]Q1[/h2]
  • Express becomes an incubated project
  • The leftpad incident
  • Google Cloud Platform joins the Node.js Foundation
一个沸沸扬扬的新闻是 leftpad 事件,暴露出 npm 设计/管理上的一些问题:
This
hasn’t been the first time that members of the community have disagreed
over a name. In a global namespace for unscoped modules, collisions are
inevitable. npm has a package name dispute resolution policy for this
reason. That policy encourages parties to attempt an amicable solution,
and when one is impossible, articulates how we resolve the dispute.
另外,Express 被纳入孵化项目(incubated project),将获得 Node.js 基金会的技术支持:
The
Node.js Foundation Incubator Program was launched last year. Projects
under the Node.js Foundation Incubator Program receive assistance and
governance mentorship from the Foundation’s Technical Steering Committee
and related working groups. The Incubator Program is intended to
support the many needs of Node.js users to maintain a competitive and
robust ecosystem.
同时,Google 也加入 Node.js 基金会,队伍越来越壮大
[h2]Q2[/h2]
  • npm has 210.000 users
npm 注册用户突破 21 万,其中 7 万多人发布过 package。npm 已经成为一个相当庞大的东西,在 Node.js 生态起着不可替代的作用
[h2]Q3[/h2]
  • npm 新任 CTO:CJ Silverio becomes the CTO of npm
  • 欧洲首次 Node Interactive 大会:The first Node Interactive in Europe
npm 的变化也关乎 Node.js 的发展,像集成安装包一样绑定在一起。另外,第二次 Node Interactive 大会在欧洲举行
[h2]Q4[/h2]
  • The yarn package manager got released
  • Node Interactive North America in Austin, Texas
  • Node.js 6 becomes the LTS version
  • IBM,
    Intel, Microsoft, Mozilla and NodeSource Join Forces on Node.js API;
    Node.js Build System will Start Producing Nightly node-chakracore Builds
Yarn 适时推出,算是 npm 客户端的增强版
The product of that work is called Yarn — a fast, reliable, and secure alternative npm client.
服务端仍使用 npm registry,这无可撼动
继首个 LTS 版本(v4.2.0)之后,v6.0 成为第二个 LTS 版本。同时,IBM、Microsoft 等巨头开始发力,将 Node.js 推向 8.0 版本
另外,继续疯狂开会,第三次 Node Interactive 选在北美
[h1]2017[/h1][h2]Q1[/h2]
  • 启动开发者认证计划:Node.js Certification Program to be launched by the Node Foundation
  • NASA 上船:NASA’s Node.js Case Study Released
Node.js 的高速发展对行业传统技术栈造成了冲击,为了解决企业面临的人才技能问题,Node.js 基金会推出开发者认证计划,期望通过认证的开发者具备 Node.js 开发能力
NASA 上船标志着“Node.js 上天了”……玩笑,毕竟大型企业上船已经不新奇了
[h2]Q2[/h2]
  • 发布 v8.0:What’s new in Node 8
  • N-API 支持:N-API: Next generation Node.js APIs for native modules
  • 基金会新任领袖:Mark Hinkle becomes the new executive director of the Node Foundation
Node.js v8.0 发布,巨头发力告一段落,最重要的应该是N-API 支持:
This
API will be Application Binary Interface (ABI) stable across versions
of Node.js. It is intended to insulate Addons from changes in the
underlying JavaScript engine and allow modules compiled for one version
to run on later versions of Node.js without recompilation.
在社区+基金会的开放管理模式下,基金会更换领导人已经不再是成立顾问委员会一类的大事了
[h2]Q3[/h2]
  • 原生支持 HTTP2:HTTP2 Arrives into the Node.js Core
  • 首份 Node.js 调查报告:The Node.js Survey of 2017 Released
  • 迎来新 V8 引擎:A new V8 is coming, Node.js Performance is Changing
  • 搭载新 V8 引擎:Node.js 8.3.0 is now available shipping with the Ignition + TurboFan execution pipeline
  • 再次走向分裂:Node.js Forked Again Over Complaints of Unresponsive Leadership
特性持续迭代,并借助最新 V8 引擎得到一波性能提升
另一件值得关注的事情是,因为 Node.js 基金会下 TSC( Technical Steering Committee,技术指导委员会)的执行力问题,Node.js 再次走向分裂(新的 fork 称为 Ayo,还念 IO.js)
[h2]Q4[/h2]
  • 首份官方发展现状报告:Node.js State of the Union 2017
  • 8.x 步入稳定阶段:Node.js 8 Moves into Long-Term Support and Node.js 9 Becomes the New Current Release Line
  • 继续疯狂开会:Node.js Interactive 2017 Vancouver
  • npm 账号安全性提升:Two-factor authentication & read-only tokens arrive to npm
从官方报告来看,Node.js 已经达到了相当大规模的应用
Every
day there are more than 8.8 million Node instances online, that number
has grown by 800,000 in the last nine months alone. Every week there are
more than 3 billion downloads of npm packages. The number of Node.js
contributors has grown from 1,100 contributors last year to more than
1,500 contributors today.
同时,v8.9.0 成为 8.x 的首版 LTS,进入稳定阶段
另外,npm 在安全性上也迈出了一小步,支持账号双因子认证
[h1]2018[/h1][h2]Q1[/h2]
  • 搜罗案例展示:Announcing The Node.js Application Showcase
  • 创立 JS Interactive 大会:Introducing JS Interactive: An Event for the JavaScript Ecosystem
基金会建站搜罗 Node.js 应用案例,见[https://foundation.nodejs.org/resources/app-showcase](Application Showcase):
Amazing apps, products and projects built with Node.js
另一方面,由于 Node.js 与 JavaScript 密不可分,干脆合作一起开会,就叫 JS Interactive
[h2]Q2[/h2]
  • 支持 HTTP2 push 特性:Node.js can HTTP/2 push!
  • 开启 10.x:The Node.js Project Introduces Latest Release Line: Node.js 10.x
  • 发布 npm 6:Announcing npm@6
  • 发布第三份年度调查报告:Third Annual Node.js User Survey Data Now Available
npm 6 在安全方面做了更多的事情,对存在安全问题的 package 有了一些管控措施,如
  1. npm audit
复制代码
HTTP2 等前沿特性也在持续推进,用户调查也没有停下,关注 Node.js 应用趋势
另一方面,8.x 时代落幕,进入 10.x,期望搭载V8 引擎 v6.6
[h2]Q3[/h2]
  • Node.js 创始人道出 10 大懊悔:Ryan Dahl: 10 Things I Regret About Node.js
  • Google App Engine支持 Node.js 部署:Now, you can deploy your Node.js app to App Engine standard environment
  • 跨 LTS 的 N-API 支持:N-API: Next generation APIs for Node.js native addons available across all LTS release lines
9 年后,Node.js 的创始人 Ryan Dahl 指出 Node.js 的 10 大设计失误,包括加进来又去掉的 Promise API、安全问题、GYP 构建系统、package.json 入口字段、node_modules 结构等等
回过头看,npm 上大量的案例表明跨版本(从 6.x 到 10.x)的 N-API 支持确有其实践意义
[h2]Q4[/h2]
  • 开会,疯狂开会:Node+JS Interactive 2018 Videos released
  • 10.x 迎来 LTS,11.x 提上日程:October Brings Node.js 10.x to LTS and Node.js 11 to Current!
  • 重新计划 ES Module:ECMAScript modules in Node.js: the new plan
继实验性支持(Node.js 8.5.0 (2017-09-12))之后,正式的 ES Module 支持终于进入议程
[h1]2019[/h1][h2]Q1[/h2]
  • 介绍 Node.js 各个工作组:Introducing Node.js Working Group Series: From Security to Performance
  • nodejs.dev 上线:Node.js Selected by Google for .dev Top Level Domain Early Access
  • Node.js Foundation + JS Foundation = OpenJS Foundation:Introducing the OpenJS Foundation: The Next Phase of JavaScript Ecosystem Growth
  • 准备开会:Now Open! Call For Papers for Node+JS Interactive 2019
首次介绍基金会内部的工作机制,进一步公开透明。紧接着,Node.js 基金会与 JS 基金会合并,成立 OpenJS 基金会
[h2]Q2[/h2]
  • 迎来新的实验性 ES Module 支持:Announcing a new –experimental-modules
  • npm 人事变动:Nice People Matter? NPM may stand for Not Politely Managed – job cuts leave staff sore
  • Node.js 创始人启动 deno:Ryan Dahl: Deno, a new way to JavaScript
  • 发布 Node.js 12:Introducing Node.js 12
  • npm 开源与盈利的矛盾:The Economics of Open Source by C J Silverio
Node.js 创始人再度出发,希望重新建立更好的 Node.js,即deno:
A secure JavaScript/TypeScript runtime built with V8, Rust, and Tokio
同时,Node.js 增强了实验性的 ES Module 支持,包括动态引入(
  1. import()
复制代码
)等,并伴随着 V8 引擎版本升级以及 ES 特性支持,进入 12.x 迭代
另外,npm 经营上似乎有一些变化,出现一波人事变动,可能关乎 Node.js 的发展:
The
actual concern I have is that the JavaScript package manager and
language commons are in the hands of a VC-funded company, which may or
may not be having financial trouble, If they’re not okay, this is
something the entire JavaScript language community needs to pay
attention to now.
因为 Node.js 语言的发展与盈利性质的 npm 公司绑定在一起,一直以来都是个隐患
The
JS package commons is in the hands of a for-profit entity. We trust npm
with our shared code, but we have no way to hold npm accountable for
its behavior. A trust-based system cannot function without
accountability, but somebody still has to pay for the servers. How did
we get here, and what should JavaScript do now?
[h2]参考资料[/h2]
  • History of Node.js on a Timeline
  • A brief history of Node.js
  • “I regret…” says the creator of Node.js and dawn of Deno
  • Design Mistakes in Node
  • What is the difference between node.js and io.js?
联系ayqy
      如果在文章中发现了什么问题,请查看原文并留下评论,ayqy看到就会回复的(不建议直接回复公众号,看不到的啦)
特别要紧的问题,可以直接微信联系ayqywx
      
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:
帖子:
精华:
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP