不要让 Chrome 成为下一个 IE!
IE 的历史证明,如果一个浏览器占据绝对主导地位,那么就会带来一系列负面的连锁反应!当整个网络都以某一个浏览器引擎为标准时,那么开发人员很可能就会忽略其他浏览器,只针对主流浏览器支持的 CSS 和 JavaScript 功能集,而不会考虑在其他浏览器中测试交叉兼容性——且事实不止于此!现在的 Chrome 正在重蹈覆辙,开发者又该怎么应对呢?
作者 | Ken Bellows
译者 | 弯月,责编 | 郭芮
出品 | CSDN(ID:CSDNnews)
以下为译文:
我一直在思考Web开发社区中一个老生常谈的问题,自从Web浏览器诞生以来这个问题一直都是网上争论不休的话题:浏览器单一化的问题。最近,由于微软放弃了EdgeHTML浏览器引擎,并将Edge转移到Google Chromium引擎上,于是这个话题再次被引爆。
我有一个疯狂的想法,但我自己也没有完全被说服,我觉得我的考虑并不周全,所以我想要一些反馈。但首先,让我交代一下背景故事。
浏览器单一化意味着什么?
浏览器单一化指的是当一个浏览器占据绝对主导地位时引发的一系列连锁反应:某个浏览器是唯一的选择,所以所有人使用的浏览器只有这一种,所以所有人关心的浏览器只有这一种,所以开发人员编写代码时需要考虑的也只有这一种。
我们主要的顾虑在于:如果一个浏览器占据绝对主导地位,那么开发人员可能会忽略其他浏览器,只针对主流浏览器支持的CSS和JavaScript功能集,而不会考虑在其他浏览器中测试交叉兼容性。
这并非毫无根据,二十一世纪初,在浏览器大战的高峰时期就发生了这样的事情:Internet Explorer占据了绝对主导地位,开发人员经常编写专门针对IE浏览器的功能,许多网站根本无法在任何其他浏览器中运行。最糟糕的是,IE超级古怪,不遵循标准,而且它自身的变化或改进也非常缓慢。
另一个主要的顾虑在于:当市场上一家独大时,你就无法推动该浏览器供应商遵循标准和规则,他们可以为所欲为。你可能会认为开发人员社区会对此不满,并远离该浏览器,然而问题在于,大多数浏览器用户不是Web开发人员。大多数用户不知道也不关心这些问题,他们才不会因为一些“钻牛角尖”的人抱怨“API”和“标准”,就转而使用其他浏览器。
也就是说,第三个顾虑就在于非开发人员不关心:如果每个人都使用同一个供应商提供的浏览器,那么该供应商就可以访问每个人的用户数据等。这也不是没有根据,很多人都认为过去Google在处理用户隐私问题方面存在很大问题。
Chromium引发了单一化?
我们再来看一看最近发生的事情。
Google Chrome的底层浏览器引擎是一个名为Chromium的开源项目开发的。它的设计可以作为新型浏览器的基础,如今许多浏览器都是在其基础之上构建的,包括那些你所熟知的浏览器。2013年,Opera和三星网络都采用了Chromium,还有本文开头介绍的今年的重大新闻:微软的 Edge也将转向Chromium。
所以问题就来了:如果绝大部分的浏览器都采用Chromium,那么最终我们就会陷入Chromium的单一化。
从目前的统计数据来看,我们似乎正朝着这个方向发展:
2019年5月全球浏览器使用率超过1%的浏览器使用状况统计信息
(2019年6月7日,摘自statcounter.com)
仅Chrome一家就占全球浏览器市场份额的60%以上。再加上三星网络、Opera和Edge(这几家顶级的浏览器统统采用了Chromium),这个数字就高达70.8%!想象一下,如果苹果厌倦了每个人都抱怨Safari缺少的功能(因为现在Safari确实远远落后于新型网络平台API的实现),而决定步微软的后尘。虽然不太可能,但我可以预见这一幕的出现。
在过去几年中,许多新型的实验性浏览器项目也基于Chromium,例如Vivaldi、Brave和Epic。我觉得这很合情合理:Chromium是一个非常完善、易于维护且易于扩展的浏览器引擎。从头开始创建完整的JavaScript、HTML和CSS引擎是一项巨大的任务。Chromium已经发展了数十年(考虑到是建立在WebKit上的),所以不可能追赶它的发展,特别是对于一个刚刚建立的创业公司而言。此外,这些浏览器主要不是为了改善Web语言的状态,它们专注于更高级别的功能,如安全性、隐私等。它们只是使用Chromium作为基础并专注于各自关心的功能,所以我不会因此而怪罪它们。
然而,我想表达的观点是:如今Chromium的定位变成了浏览器引擎的标准,类似于W3C规范的规范实现。但是这个问题先放一放。
Firefox浏览器的情况又如何呢?
回到浏览器大战的时代,Firefox是我们所有人心中的英雄,它打破了Internet Explorer的垄断局面,并推动浏览器迈入了多样性和合作网络标准的新时代。
然而不幸的是,多年来Firefox的使用量一直在急剧下降,自Chrome出现以来一直都是如此。我认为最近Mozilla与Quantum一起做了一件了不起的事情,而且他们经常负责实施新的网络平台功能,特别是在CSS(subgrid !!!)中。
但根本问题在于:Google的规模太大了,他们拥有大量员工。我认为Mozilla和围绕Firefox的开源社区没有足够的人力和机构支持来跟上Google的步伐。
而且,我认为正确的解决方案是Google解散他们的浏览器团队,让Firefox跟上,我喜欢他们不断尝试很酷的新事物。那么我们该怎么办?
如今的浏览器陷入了单一化吗?
是的,这其中的意义重大。在接下来的5-10年里,很有可能会出现浏览器单一化的问题。目前,Chromium的两个主要对手是Safari和Firefox,他们总共占据了大约21%的使用量。多年来Chrome的使用一直在缓慢而又稳步地增长,而且接下来还会继续。如今连Edge也采用了Chromium,所以我觉得这个数字还会增加。
但是,我不得不提出异议。我想指出,现在的情况与我们在2000年代使用Internet Explorer 6时看到的单一化不一样,或者我们不应该使用“单一化”这个词来描述。
单一化是坏事吗?
那么,让我们来深入争议的本身。以下是我的看法:
之前我提出的三个顾虑的根据都是单个浏览器占据绝对主导地位的情况,包括将用户挂钩到拥有独立业务目标的特定公司结构以及该公司专有的生态系统中(例如将你的Google账号挂钩到你的浏览器中)。但Chromium并不是这种情况,它的情况有可能恰恰相反。
回顾一下,我提到的浏览器单一化的三个主要顾虑:
占据绝对主导地位的浏览器会导致开发人员只考虑该浏览器,而忽略与其他浏览器的兼容性;
当某个浏览器占据绝对主导地位时,就不受通用Web标准的控制;
使用某个浏览器的人越多,拥有该浏览器的公司就可以获得更多用户的数据,这会引发隐私问题。
如果你意识到我们讨论的不是Chrome单一化的问题,就会明白情况并不一样。我们讨论的是浏览器引擎的基础——Chromium。就目前而言,Chromium是各个浏览器的基础,而不仅仅是Google的旗舰产品。据我所知,引起隐私权拥护者关注的Google产品与核心Chromium浏览器引擎没有关系。我的意思是,显然微软的Edge不会与Google的生态系统挂钩,因此这两者应该很容易区分。
隐私
对我来说,“浏览器”和“浏览器引擎”之间的区别已经解除了有关隐私的主要顾虑,引擎本身并不会引发隐私问题。我之前提到的两个基于Chromium的实验性浏览器——Brave和Epic,都提供了更安全和保护隐私的措施。
单一的主导平台
至于担心某个Web引擎过分受到开发人员的喜爱,这种情况确实属实。有人声称Chrome就是这样。
然而问题在于:因为Chromium是多种浏览器的基础,因此当推出新的JavaScript或CSS功能时,它所推动的不仅仅是Chrome,而是所有这些浏览器的发展。因此,当Verge说Chrome会成为第二个IE时,他们指的应该是“基于Chromium的浏览器”,而不是“Chrome”。针对Chrome的优化也同样Opera、Vivaldi、三星浏览器和Edge,因为它们都使用相同的引擎。
话虽如此,对于Firefox、Safari和其他任何仍在维护并行实现的人来说这都是一个问题。现在让我们再来看看这个问题。
Web标准
这确实是一个大问题。Google在推动和开发Web平台标准方面历来都有着重要的影响力,但正如Verge指出的那样,在过去几年中Google偏离了这一轨道:
无论你认为是Google的问题,还是万维网联盟(W3C)的发展得过于缓慢,整个2017年的局势已经十分明朗。越来越多的网站开始打出“最适合Chrome浏览器”的消息。Google Meet、Allo、YouTube TV、Google Earth以及YouTube Studio Beta都阻止了来自Windows 10默认浏览器微软Edge的访问,要求用户下载Chrome。Firefox上也不支持Google Meet、Google Earth和YouTube TV,访问时会显示下载Chrome的消息。Google公开承诺支持在Edge和Firefox上运行Google Earth,而且他们正在“努力在更多浏览器上运行YouTube TV。”
摘自The Verge,“Chrome成为了第二个Internet Explorer 6”(https://www.theverge.com/2018/1/4/16805216/google-chrome-only-sites-internet-explorer-6-web-standards)。
这可不是好消息。但据我所知,这并不一定意味着Google无视标准。通常情况下,其他浏览器跟不上Google实现API的领先技术。而且,Google有钱有势,因此在我看来,在某种程度上这是不可避免的。但是话说回来,Google也贡献了Chromium,而不仅仅是Chrome,所有基于Chromium的浏览器都能从中受益。
我的疯狂想法
好了,背景故事的交代就这么多了。读到这里,我的看法已经呼之欲出了:
如果整个网络都以某一个浏览器引擎为标准,结果会怎样呢?如果Chromium成为Web标准参考实现的基础,而且所有浏览器都遵循它的标准,情况会怎样呢?
在你给我寄刀片之前,容我详细说明一下。
协作引擎
我希望你能明白:我并没有说要将网络控制权移交给Google。事实恰恰相反。我希望,如今的开发人员花费了无数的时间在各自的代码库中并行编写相同的代码,如果将他们统一到同一个代码库中,不是更好吗?
理想情况下,这个代码库不归任何一家公司控制。我希望看到一个独立的非营利基金会控制的通用浏览器引擎,例如Python软件基金会,成员由每家浏览器供应商的代表组成。
想象一下:如果Safari和Firefox以及其他所有人都停止维护各自的代码库,大家齐心协力开发一个共享代码库,那么就无需再重复大量的工作,也无需拼命地跟上Google庞大的开发团队的节奏,那不是更好吗?如果每个人都能受益于其他人的工作,不好吗?
其实,先前就有这样的例子。Opera开发人员就曾经做到了这一点,而Edge团队也在朝着这个方向努力,两个团队都将他们的专业知识带到了Chromium。
如今我有点灰心丧气,虽然CSS subgrid已经在Firefox Nightly中实现,但Chromium还没有开始动手。想象一下,如果Firefox开发人员的工作也可以贡献到Chrome!这个问题就迎刃而解了!
这是一个很常见的Web平台的问题:当某个浏览器展示新Web API时,我们都感到很兴奋,但立即涌现的问题就是:“还要多久我们才能使用这个功能?其他浏览器会实现吗?”现在我们就有机会永远摆脱这个问题。
失去实现的多样性?
这也是我所担心的一个缺点:我喜欢各种各样的浏览器引擎,他们常常以不同的方式实现相同的功能,一个比一个快。有时,我不禁会想如果Chrome开发人员能够借鉴Firefox的解决方案,不是很好吗?反之亦然。我们有什么损失吗?会有多大的损失?
我有两个想法。
首先,我认为这对其他平台来说并不是什么大问题。我并没有听到太多人抱怨CPython没有激烈的竞争来鼓励实现功能的替代方法,但也许这算不上反驳。也许这对Python社区来说可能是件坏事,他们会从竞争中受益。我不太清楚。
其次,我们还有其他方法在某种程度上保留Web的这一特性。所有浏览器都将构建在同一个引擎上,但也许引擎的构建方式可以让每个浏览器都在核心引擎之上构建自己的功能实现。也许这可以发展成一个常规的流程:在讨论新API的时候,或者甚至在发布最初的规范之后,每个感兴趣的浏览器都可以编写自己的功能实现。比如我们花6个月在Firefox、Chrome和Opera中构建了不同版本的功能,然后再由基金会决定哪些实现应该合并到主分支中。
希望大家能够针对这一点提供具体的反馈。我不确定具体的做法,但感觉应该有办法实现。
总结
感谢阅读本文。而且我也非常希望您能提供反馈!针对浏览器之间日益扩大的差异,我反复思考了很长时间。
我认为当前的方式没有可持续性,我不希望某个受科技巨头控制的浏览器占据绝对主导地位,也不希望某个浏览器因为资源优势而领先于其他浏览器,而其他浏览器一边努力追赶,一边抱怨“第二个IE6”。
以下是评论:
评论1:
所有人都使用Chromium的主要问题在于:Google控制着Chromium,因为他们做了很多工作。其他公司使用Chromium只是因为他们希望坐享其成Google的劳动成果,所以即使Google决定开始专制统治,这种局面也不会发生改变,何况目前也没有任何迹象表明Google会这么做。Google真的应该通过Web获得所有权利吗?
单一的浏览器代码库会损害Web平台的可维护性。如果Chromium垄断浏览器,那么Chromium的bug就会变成“标准”,而且所有网站都会依赖“标准”。某种程度上,目前事态确实如此,但情况可能会更糟。所以修复bug会变得更难。
单一代码库也会增加实验性实现的难度。各个可以打Chromium的补丁,但分支会迅速增加。假设你想重写Chromium式的系统,来实现Rust的并行性,就像Mozilla用Firefox那样,Google会说不吗?
另一个问题是,你很难禁用Google在Chromium中已经实现的Web功能。
评论2:
曾经,IE与如今的Chrome一样占据主导地位,并且它已经被取代了。许多人似乎无法想象Chrome将来会如何陨落,但这种情况可能就会很快发生。例如,Google限制Chrome上的广告拦截的行为肯定会让Firefox市场份额增加。
但是,发生这种情况的唯一原因,是因为我们拥有独立于浏览器和供应商的Web标准。如果我们完全放弃标准,只是使用Chromium的话,那么开放的网络也就完了。
投入大量资金,在Chromium之上构建产品的情况最为糟糕,因为这会让Google在未来拥有控制Web的无上权威。这与Chromium是否开源根本就没有关系。
现实情况是,维护Chromium是一项艰巨的工作。这需要像Mozilla这样的组织将其从Google中分离出来,并朝着全新的方向发展。既然我们现在已经拥有了Mozilla和Firefox,那么就应该确保它们继续存活下去。
原文:https://dev.to/kenbellows/chromium-and-the-browser-monoculture-problem-420n
本文为 CSDN 翻译,转载请注明来源出处。
软件开发中遇到编程工作枯燥、交付质量不高、缺乏有效评审等问题?华为云MVP、资深敏捷创新专家来支招!立即免费报名学习:https://edu.csdn.net/huiyiCourse/detail/1136
☞2019 区块链数据报告:广东省拥有全国最多的区块链公司;中国至亚洲在出块方面表现均比欧洲强