本文来自微信公众号:InfoQ (ID:infoqchina),编译:褚杏娟、核子可乐,原文标题:《为什么谷歌和苹果都要杀死移动Web?资深工程师揭秘大厂从吹捧到扼杀“内幕”》,题图来自:视觉中国


有一种普遍性认知:只要可以,大型平台厂商一定希望每个人都只为他们自己的平台编写专有应用程序。但现在的厂商们还做不到这一点,所以 Web 就天然获得了市场优势。可人们心里的天秤总在摇来晃去,在 Web 和本机之间游移不定。回顾历史,苹果、谷歌等都为 Web 的发展努力过,但为什么他们后来都放弃了 Web 应用,转而走向本机应用了呢?  


近日, CodePen 联合创始人、网页开发者 Chris Coyier 写了一篇关于不同平台的“本机应用程序”和“Web”之间总是剑拔弩张、相互竞争的文章。


他在文章中指出了如果在这场竞争中 Web 最终败下阵来,可能出现的结果:


  • 设计师和开发者们要么重新专注于单一特定平台,要么被迫分散注意力,做出愈发平庸的软件成果。


  • 一座座“围墙花园”将拔地而起,各有自家优势。于是用户们深感无力,不管怎么选择都会错过种种精彩。


  • 我们都将生活在这些封闭、私有系统的统治之下。如果厂商不喜欢你或者你的应用程序,你就没活路了。虽然他们现在也在这么干,但 Web 消失将意味着毫无退路。


  • URL 属于 Web,而非本机应用。URL 让搜索引擎成长为一股影响世界的力量。所以当 Web 消失,那么实用性的全局搜索也将就此消失。

……


但是,Chris 表示不理解为什么苹果和谷歌这样的公司总在强调本机应用要优于 Web 应用,更不理解为什么就连谷歌 /Android 也走本机应用路线:


谷歌其实有理由把 Web 推向高峰,而且实际表现也算不错。现在 Google Play Store 已经接纳渐进式 Web 应用(PWA)了,但却明显将其当成了“二等公民”,真的奇怪。


虽然 Chris 表示理解企业为什么更愿意选择本机、而非 Web 应用。可反例同样很多,基本一切最大、最好的应用都拥抱了 Web——Figma、Slack、Discord、GitHub、Spotify、Netflix 等。“这又跟我的认知有所抵触了。”


对此,曾任谷歌 Chrome 工程师、现任微软 Edge 项目经理、Blink API 创建者 Alex Russell 发布系列帖子对 Chris 的疑问进行解答,也透露出了一些行业内幕。


一、各家的本机与 Web 之争,究竟是在争什么?


苹果


根据 Alex 的说法,苹果最早是支持 Web 的。苹果还是一家小众 PC 制造商时,它需要用 Web 技术来打消客户们购买这款价格接近奢侈品的高端电脑的顾虑。虽然文化影响力巨大,但苹果 Mac 一直没有足够的份额来建立起一个独立于 Web 之外的、足够庞大的软件生态系统。


从 1998 年到 2012 年,Web 技术成为一道弥足珍贵的桥梁,帮助开发者跨过技术巨头靠自家专有堆栈建立的护城河。Web 跨越了 PC 和 Mac,虽然苹果也在努力推广自己的本机应用构建器,但苹果也很聪明,知道想在市场上卖得好,Mac 必须能提供出色的 Web 应用体验。


之后,iOS 出现了。


不少年长的 Web 开发者都听过这个故事:iOS 实际并不是要反 Web,乔布斯当初就将其定位为 Web 优先的操作系统。iOS 初亮相时人们的印象也确实如此。直到一年后 iOS 2.0 的发布,这种印象才逐渐消失。


乔布斯从未明说过(虽然在后来的法庭文件中得到了证实),2007 年初代 iPhone 的 iOS 1.0 主屏和第一方应用之所以不基于 Web,是因为他们没做出来。


苹果内部曾经有过 Web 版和本机版两套操作系统原型,只是 Web 版未能最终落地。就在乔布斯在莫斯康展览中心宣布 Web 是一款“伟大的应用平台”时,Cocoa(苹果为 Mac OS X 创建的原生面向对象的 API)已经成了优先选项。


当时,外部应用程序似乎可以帮助提高该设备的受欢迎程度,乔布斯希望开发人员使用标准 Web 技术来构建应用程序。(PWA ,即 Progressive Web App 的想法也是乔布斯在 2007 年 iPhone 推出期间首次向世界展示的。)


所以这里对 Web 的强调同样是“桥梁理论”的延伸。别看现在智能手机无处不在,但在 iOS 刚发布时没人敢确定这一点。所以,为了降低初代 iPhone 面临的巨大市场风险,必须通过 Web 强调其访问丰富内容和应用的能力。


而随着 App Store、iOS 2.0 乃至 2009 年 iOS 3.0 的发布,苹果开始在首选专有平台和开放 Web 间划分出了功能鸿沟。这道鸿沟至今仍未消失,所以尽管苹果确实拥有强大的浏览器开发能力,但很多人仍然把 Safari 的优势地位视为一份历史性遗产。


那么,苹果为什么不继续拥抱 Web?因为他们从 Web 平台上挣不着钱。


App Store 的巨大成功甚至超出了苹果自己的预期。(App Store 刚推出不久就大获成功,开发者在一个月内就从 App Store 获得超过 3.6 亿美元的收入。这让乔布斯都大吃一惊,“移动行业从未见过这样的事情”,乔布斯当时在采访中说道。)


而在其站稳脚跟之后,苹果开始全面调整自己的 Web 战略:市场领导者才不需要什么桥梁,拆了桥挖条更宽更深的护城河才是正事。出于这个理由,苹果在过去十年间对 WebKit 的投入一直显得犹犹豫豫、畏畏缩缩。


而在刚刚到来的 2023 年,苹果之所以又对 Web 旧事重提,是因为看到了 Web 对于 Windows 的冲击。同样的事绝不能发生在 iOS 身上。这样一套开放、可互操作的元平台肯定会削弱苹果赚钱的能力,过去它不受苹果待见,现在就更不可能。


谷歌


为什么谷歌也在削弱 Web 在移动设备上的存在感?


要回答这个问题,我们先要了解谷歌是个什么状态。其实跟苹果等其他大型企业一样,谷歌本质上也是一群小公司的集合体,各部门只是碰巧把收入都汇总在“谷歌”这面大旗之下。不同团队间不但没有爱,反而可能充满抵触和仇恨。


就连 Android 也来自对 Sidekick 手机开发商 Danger 的收购。(Danger 公司由三名前苹果工程师于 2000 年创立,其开发的 Sidekick 手机凭借出色的网络功能和高速即时消息能力赢得了众多美国青少年的喜爱。)


遥想 2008 年,当时苹果已经推出了 iPhone,而谷歌手中的 Android 系统还在挣扎求存。


那是个奇迹频发的年代:AT&T 拿下了在美国独家销售 iPhone 的渠道,把其他电信企业和手机厂商都吓坏了。如果大家还记得 2009 年那会大众媒体上的舆论导向,肯定还记得 Verizon(美国电信运营商)怎么努力宣传摩托罗拉 Droid。那是种绝望、但又无可奈何的最后挣扎。


基于同样的绝望情绪,各方决定放弃自家底层软件堆栈,转而为单一厂商的硬件发布开展联合营销。电信企业不想这么做,但他们不敢不跟进。


把握住这个难得的机会窗口,Android 团队开始大展身手。他们开始用笨拙但有效的方式争取单独的办公环境、单独的配套设施,也确实拿到了。你可以讨厌 Andy Rubin(被业内称为“安卓之父”,据报道因与女性下属发生不正当关系被举报后离开谷歌),但他确实为 Android 争取到了独属于自己的生存空间和项目文化。他就像严控自己小国的暴君,他成功了。至此,Android 实质上已经脱离了谷歌的掌控。


当然,这种不满是双向的。Android 对谷歌也颇有微词,因为谷歌那边总强调 Web 会是个理想的解决方案。(谷歌在 2015 年对 PWA 做了定义。当时还在谷歌工作的 Alex 写了一篇文章“Progressive Web Apps: Escaping Tabs Without Losing Our Soul”对 PWA 进行详细阐述。)


但 Web 真的靠谱吗?Web 应用可怕的内存用量和极高的无响应频率,经常会把 Linux+Java 的系统组合拖向崩溃的边缘。所以 Android 团队产生了一种本能的感觉,虽然把 Java 开发者团结起来确实困难,但 Web 开发才是那个陷进去就爬不出来的大坑。从表面上看,他们的判断没错,而且他们也不喜欢这套不归自己完全把控的平台。


在战略层面,Android 这边拉起的连横阵营主要依靠“搜索布局加市场份额”。Android 非常重视市场份额,而谷歌的短期管理文化意味着只要 Android 系统能及时把谷歌搜索栏呈现在用户面前,别的生态系统问题都可以往后稍稍。所以,Play 应用商店的头顶始终笼罩一层阴云,Android 的反 Web 主张一直在发挥作用。


当然,随着时间推移,Android 和 Play Store 团队的反 Web 态度开始跟苹果合流,最终奠定了 Java/ 本机才是王道的基本理念。


既然原本的方针没出啥问题,手机出货量和搜索份额都有增长,那谷歌何必还要费劲支持什么 Web 呢。


经验和贪婪结合起来,成为横亘在移动 Web 面前的一座大山。


直到 2013 年,Chrome 才正式登陆 Android,并在 2014 年成为默认浏览器选项。同时,Android 照搬自 iOS 的“本机至上”原则正继续制造着本机与 Web 之间的巨大功能 / 特性差距。


我们可能很难想象在谷歌内部开发 PWA、WebAPk、TWA 乃至 Web Push 等项目是有多痛苦,外部世界的 Web 偏见在 Android 之内不仅没有减弱,反而愈演愈烈。但 PWA 和 Push 等成果还是顺利落地,与 Fugu 的合作大门也被打开并维持至今。


微软


Chris 在文章里说到,巨头里对 Web 应用态度最友善的似乎就是微软了。微软最开始并不像谷歌那样大力支持,但跟进得跟快。为此,我们补充了微软的一些措施(并非 Alex 回答内容)


2018 年,微软宣布,Microsoft Edge 网络浏览器支持 PWA,Windows 商店的应用程序,如 Slack 和 Trello,将 PWA、Electron 和通用 Windows 平台(UWP)混合使用。2020 年,微软和谷歌合作,将 PWA 推上 Play Store,加速其在 Android 平台上的普及。


谷歌开发出名为 Bubblewrap 的指令行应用程式,让开发人员只要安装 Node.js,无需完整 Android SDK,即可将 PWA 网站打包成 Play Store 上的 Android App。微软则提供并开源 PWA 开发及发布工具 PWABuilder.com。两家合作后,让 PWABuilder 使用 Bubblewrap 为底层,并推出新功能。


今年 9 月,为了弥合 Web 应用程序和本机桌面应用程序之间的差距,微软宣布了 Window Controls Overlay 功能,允许开发人员创建自己的标题栏,而不是强迫他们使用默认标题栏。看得出来,微软现在仍在努力让 Web 应用跟本机应用平等。


Alex 最后在文章里总结道,Web 正在移动设备上节节败退,这也敲响了其作为技术平台的消亡丧钟。


在这样的背景之下,前端领域的动向甚至已经无关紧要,因为其最终只会陷入僵化。Web平台不会突然消失,它只是在逐渐失去人们的关注和投入。


而Web开发者们也未做反应——没有还击、没有斗争,人们选择屈服于这股大势。如今,全球大部分新增用户终端计算设备是智能手机,其中80%以上是配置较低的Android机。当然,即使Android是完美的,也不足以扭转时局、挽救Web。为什么?因为掏得起高价的用户都买iPhone,技术行业必然会跟着钱走。


只要苹果还能继续在富裕地区(美国、英国、日本等市场)依靠垄断地位扭曲立法决策、阻止真正的浏览器竞争,Web就永远无法恢复活力。


所以,我们才应该支持 Open Web Advocacy,这将是决定Web命运的一战。


二、结束语


在 Hacker News 上,有人对 Alex 的帖子表示质疑,尤其是乔布斯对 Web 态度上,也有人认真讨论了 PWA。


开发者“ryanyl”提出,有没有真正出色的移动 PWA 示例?“我发现,公司的移动网站体验总是比应用程序(例如 YouTube 或 Spotify)差很多,我不确定是我缺乏关注,他们有意将用户推向应用程序,还是一直如此。”然后有开发者为其提供了星巴克的案例。


一定程度上,只喊口号并不能挽救 Web 应用,找到真正可以利用 Web 优势的场景、并有效形成商业闭环才能让其更好发展。


参考链接

https://chriscoyier.net/2023/01/04/what-does-it-look-like-for-the-web-to-lose/

https://toot.cafe/@slightlyoff/109632248664696707

https://www.macrumors.com/2018/07/25/steve-jobs-app-store-interview/

https://www.windowscentral.com/what-are-progressive-web-apps-video

https://www.ithome.com.tw/news/138814

https://news.ycombinator.com/item?id=34252196


本文来自微信公众号:InfoQ (ID:infoqchina),编译:褚杏娟、核子可乐