AngularJS弃用致开发者流失,Google反思迁移策略

Google弃用AngularJS致开发者流失。前员工Stephen Fluin回顾指出,因迁移路径不明朗及架构彻底重写,数百万用户转向React或Vue.js。他强调不确定性扼杀动力,呼吁提供清晰过渡方案以留住开发者。

一张广为流传的前 Google 工程师漫画生动地描绘了开发者在 2014 年面临的困境:两条道路,一条标记为“废弃”,另一条标记为“施工中且危险”。这正是当时数百万前端开发人员在使用 JavaScript 框架 AngularJS 时遭遇的尴尬处境——Google 决定不再维护这一流行框架。

53%开发者转投React

面对不确定性,许多开发者转而投向了 React 或 Vue.js。前 Google 开发者倡导者、现 Buildkite 开发者关系负责人 Stephen Fluin 在上周的 All Things Open 会议上回顾了这段历史,指出“不确定性会扼杀动力”。当开发者所熟悉和喜爱的技术被剥夺时,挫败感随之而来。

Fluin 于 2016 年至 2021 年间在 Google 负责 Angular 项目。他形容当时的局面如同一场“死亡游行”:Angular 2 的发布时间表不明朗,核心基础架构也在不断变动。

从 AngularJS 到 Angular 2 的技术断层

Google 更新 Angular 的初衷具有合理性。随着 AngularJS 团队从基础设施部门转移至广告部门,以支持更大规模的业务应用,原有的架构已无法满足需求,需要更严格的工程规范。

原始的 AngularJS 诞生于 2009 年,由 Google 工程师 Miško Hevery 作为副项目发起,旨在扩展 HTML 功能。由于比基于 Java 的 Google Web Toolkit (GWT) 更易用,该框架迅速被 Google 内部及外部网页开发者采纳,其标志性的 HTML 角括号语法也由此得名。

Hevery 最初采用传统的控制器模型构建 AngularJS 1.3,通过 JavaScript $scope 对象处理用户输入、逻辑和数据传输。然而,2014 年在 ng-europe 会议上宣布的 Angular 2 代表了架构的根本性转变:每个 HTML 模板对应独立的类属性。在与 Google 的 Dart 语言经历短暂且不愉快的磨合后,团队最终选择使用 TypeScript 完全重写 Angular,且未保留任何向后兼容性。

这场开场演讲并未激励社区,反而引发了恐慌。对于每一个被移除的功能(如 IPRIP 控制器),演讲者都展示了墓碑图形并播放教堂钟声录音。Fluin 指出,这次演讲对社区造成的伤害至今仍有负面影响,因为它让开发者感觉所有关于 AngularJS 的认知都已“死亡”,而未来充满未知。

Fluin 将此次迁移与 Python 从版本 2 到 3 的艰难过渡、KDE 桌面从版本 4 到 5 的升级以及 GNOME 2 到 GNOME 3 的转变相提并论,强调软件大版本迭代往往伴随阵痛。

命名混乱与市场流失

Fluin 建议,若想留住开发者,必须提供清晰的迁移路径,并在新技术准备就绪后再进行推广。然而,现实情况是大量开发者转向了已经成熟且同样采用组件模型的 React 和 Vue.js。

2016 年的 JS 调查显示,React 是最受欢迎的前端框架,53% 的 JS 开发者表示曾使用过它;相比之下,仅有 13% 的人使用 Angular 2,另有 10% 的用户采用了仍在发展中的 Vue。

Angular 2 最终于 2016 年 9 月发布,随后在次年 3 月推出了 Angular 4,中间跳过了版本 3,原因并未公开说明。与此同时,经典的 AngularJS 直到 2021 年底才正式退役,其在 2016 年春季更新至 1.5 版本时引入了组件概念。

这种版本命名的模糊性令观察者困惑:AngularJS 与 Angular 2 是否为不同产品?“2”是版本号还是架构标识?Fluin 承认,公众沟通指南不得不修改,甚至需要修复 Google 知识图谱中关于世界事实数据库的相关条目。他强调,虽然命名和版本在纯技术层面可能无关紧要,但对人类认知而言至关重要。

现状与反思

尽管 Google 高层的策略一度被认为几乎毁掉了 Angular,但该框架已成功满足了 Google 内部的需求。如今,基于组件驱动的 Angular 支撑着 Gemini 界面、Google Analytics 以及无数其他 Google 应用程序。它正逐步与 Google 内部的高性能框架 Wiz(最初为 Google+ 设计)融合。

目前,Angular 已建立起更可预测和用户友好的更新模式:每年发布两次,严格遵循语义化版本指南,主要版本号变更代表破坏性更新。Google 会在公开发布前在其内部应用中测试每一个新版本,计划移除的功能通常会提前一年标记为过时。

即便这意味着要重建用户群体,Angular 依然存活了下来。Fluin 向 The Register 表示:“JavaScript 开发者喜欢尝试新框架。因此,有时将其包装成一个全新的框架可能反而是更好的策略。”

评论 0

0/500

评论需审核后展示,请文明发言

💬
还没有评论,来说两句

相关阅读