《架构师》2023年2月
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

为什么谷歌和苹果都要杀死移动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平台不会突然消失,它只是在逐渐失去人们的关注和投入。

<blockquote>而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