当前位置:网站首页>(中)苹果有开源,但又怎样呢?
(中)苹果有开源,但又怎样呢?
2022-07-06 06:03:00 【微服务商城技术分享】
上篇(详情请戳:《(上)苹果有开源,但又怎样呢?
》)里说到,苹果首个开源项目 Darwin 的诞生,与乔布斯的复仇归来有着千丝万缕的关系。
作为一个开源的操作系统,Darwin 拥有非常纯正的开源血统,又有 FreeBSD 创始人 Jordan Hubbard 这样大佬级的人物加盟。在役期间,它为苹果作出了卓越的贡献,无论是 macOS、iOS 还是 iPadOS,甚至是 HomePod 和 Apple TV(TvOS)都是建立在 Darwin 的基础上。
可惜,Darwin 已经成为过去式,消逝于无声无息之中。但是,Darwin 开源后没几年,苹果另一个重量级开源项目 WebKit 被摆上台面,拿下了苹果开源的接力棒。
这次,苹果的开源又几斤几两、诚意如何呢?
中篇:浏览器二战功臣 WebKit 开源的爱与恨
上个世纪末,微软与网景的浏览器大战,至今都为人津津乐道。简单来说,当时微软已经依靠 Windows 成为商业巨头,而网络浏览器伴随着 NC、JAVA 等技术标准的提出,让微软开始感到自己的大厦岌岌可危。
当时,风头最劲的浏览器是网景(Netscape,Firefox 的前身)。针对网景, 比尔・盖茨用了 “杀手锏”:微软投入 20 亿迅速推出浏览器 IE2.0,并决定免费开放这一产品,同时宣布将 Windows95 与 IE 捆绑销售。
一套组合拳下来,微软成功利用垄断优势洗牌浏览器市场,IE 浏览器的市场占有率在 2002 年一度高达 96%。这场浏览器大战,微软并不是通过开发出一款性能更高、技术更好的产品获胜的,而是用了 “劣币逐良币” 的商业手段。
其后果就是,IE 这款虽然经典但毛病多多的浏览器大大降低了开发者的生活质量,它所遗留的各种问题至今仍然困扰着不少 Web 开发人员。有激进的观点认为,IE 浏览器逼着 Web 开发者在冰天雪地中爬坡前行,几乎毁掉了整个互联网。
浏览器的战争没有就此停息。2004 年,Firefox 从网景的灰烬里涅槃重生,再加上苹果 Safari 、挪威的 Opera 和谷歌 Chrome,第二次浏览器大战一触即发。在围攻下,微软 IE 份额被不断蚕食。
其中,Safari 通过捆绑和强大功能,迅速成为世界主流浏览器之一,甚至一度统治美国移动浏览器市场,一时风光无两。当中,开源的 WebKit(Safari 浏览器的引擎)是当之无愧的背后英雄。当然,Safari 最后不敌谷歌 Chrome,且在最近几年显出了疲态。Statcounter 统计显示,Safari 在 2022 年 2 月以 19.3% 的份额,居于第二。
但目前, Safari 面临的最严重的问题并非市场份额的下滑,而是 Safari 浏览器在支持 Web 功能方面远远落后于其他竞争对手,已经有不少人将其视为 “IE 精神” 留下的现实映射。
Jen Simmons 的身份是苹果 Safari & WebKit 开发者团队的布道师,2022 年 2 月 8 日,她在 Twitter 上发起了一场有关 Safari 问题的调查和讨论:
我遇到的每个人都在说 Safari 是最差劲的,是新时代的 IE...... 那就指出那些使你们失望、阻止你们构建网站 / APP 的具体 Bug 和支持缺乏的地方,请在 Tickets 提交。
在这里,我们无意去追究 Safari 到底是如何走到这一步的。从 WebKit 的开源故事入手,或许也能窥见几丝端倪。
01 火星撞地球,苹果的 “渣男” 开源
在 Safari 之前,苹果经历了一段被微软和 Adobe “控制” 的时光
。彼时,微软把持办公软件(Word、Excel 和 Powerpoint 等),Adobe 则控制着创意、设计人员使用的关键工具(Photoshop 和 Illustrator 等),他们几乎是第三方 Mac 软件生态系统的核心。
这种第三方比自身平台更强大的 “屈辱”,苹果是一口也咽不下去的。为了加强对自己平台的控制权,苹果不可能让 “网络浏览技术” 也陷入同样窘境,研发 Safari 势在必行。
2001 年,微软 IE 已经赢下与网景的大战,如日中天。这一年,苹果内部采取行动:组建一个新团队,启动一个新的、秘密的网络浏览器项目,以开发一个新的、可以替代微软 IE 的浏览器。当时,所有出售的 Mac 电脑都将 IE 浏览器作为默认配置,Mac 没有原生浏览器。
要想做成这件事情,一个浏览器内核是关键。浏览器内核也就是引擎,由两个部分组成:渲染引擎 (layout engineer 或者 Rendering Engine) 和 JS 引擎。它负责取得网页的内容(HTML、XML、图像等等)、整理讯息(例如加入 CSS 等),以及计算网页的显示方式,然后会输出至显示器或打印机。
不同内核,渲染效果也不同。苹果想在浏览器上拿出有竞争力的 “王牌项目”,就必须从内核入手。这次,被苹果相中的开源项目是 KHTML 和 KJS。
这两个开源项目包含 WebCore 和 JSCore 引擎,是 KDE( K Desktop Environment )在 1998 年开发的排版引擎,最初用于 Linux 和 Unix 等开源操作系统。在比较了 Gecko 引擎(Firefox 所用的)之后,苹果还是选择了 KHTML,它拥有更清晰的架构,而且更小巧。
KDE 社区图标
2001 年 5 月 25 日,苹果工程师 Don Melton(也是当时 Safari 项目的首席设计师)正式从 KHTML fork 出了一条分支,这也就是 WebKit 的前身。
值得注意的是, KHTML 及 KJS 引擎都是自由软件,遵循的是 GPL 许可证,同时支持 BSD 系统的开发。这也就意味着,从它们衍生出来的产品,都必须继续遵循 GPL 进行开源。
因此,当 2003 年 1 月,在旧金山的 Macworld Expo 主题演讲中,乔布斯亲自发布 Safari 的同时,也宣布了苹果 KHTML 引擎的移植 —— WebCore 开放源代码。(其实就是将从 KHTML 直接搬来的 WebCore 及 JavaScriptCore 这些不得不开源的开源出来)
在描述中,Safari 的主要特点是网络浏览速度快、原生平台整合多以及比大多数现有网站的兼容性强。重要的是,它为苹果取得了 Mac 产品系列中的一项关键技术的控制权。在一些看法中,苹果致力于开源的 WebKit 的首要原因就是要将微软拉下马,撼动其浏览器市场的王座。
这一商业目的,自然与开源世界所提倡的自由理想大相径庭,这里开源项目是工具、是武器、是用来突破苹果商业短板的利器。
当然,既然苹果已经打开了开源这一 “潘多拉魔盒”,开弓没有回头箭,苹果想要继续通过 WebKit 巩固自己的浏览器地位,就不得不深度参与到开源社区中去。但基于苹果自身的文化,这下可算是,火星撞地球了......
2003 年,旧金山 Macworld 大会的同一天,Don Melton 正式成立苹果 Safari 团队,并给 KHTML 和 KJS 的首席开发员发送了一封邮件,要与 KHTML 就 WebCore 尝试合作。
很显然,无论是苹果还是 KDE 对于这样的合作都是高兴和自豪的,Melton 信件中对这个开源代码充满溢美之词,而苹果推出 Safari 也无疑将 KHTML 发扬光大了,两者都是乐见其成的。
可惜,两者之间的蜜月期很短。不出两年,开源的 KDE 和苹果之间的龃龉就显露无疑了。据说,随着时间推移,WebKit 和 KHTML 之间交换代码变得越来越困难,苹果会间隔很长时间之后,提交一大批更改,而且没有文档,很多功能可能只开发了一半。(像不像渣男?)
对于 KDE 而言,将这些更改整合回 KHTML 是相当困难的。此外,苹果还要求 KDE 开发者阅览苹果代码之前必须签署保密条款,KDE 也很难接受这一点。
WebKit 中 WebCore 是被共享的
一场撕逼在所难免。2005 年,KDE 开发者开始公开攻击苹果的做法,并称两方的合作关系已经彻底瓦解了。那年春天,KHTML 的两个开发者 Zack Rusin 和 Carewolf 都在博客文章表达了他们的挫折感。
这几乎例证了苹果不太可能以开源社区为所用所享的方式去 “回馈” 开源社区。
事情被媒体报道之后,苹果做出了让步。2005 年,WWDC(苹果全球开发者大会)上,WebKit 从幕后走到了台前,苹果元老 Bertrand Serlet 正式宣布 WebKit 完全开源(之前只是 WebCore)。
至此,KDE 和苹果的关系也得到了一些改善。一些 KDE 的开发者们开始为 WebKit 提交更改,苹果的团队也复原了很多为苹果特定的修正,并且实现了平台层的抽象化,使引擎的核心代码可以在其他平台上运作。
但是,KDE 没有忘记苹果的 “渣男行为”,他们没有完全加入 WebKit 的开发,而是在 2010 年底推出了 KDE 开发平台 4.5,并列支持 KHTML 和 WebKit。
不管怎样,苹果主导的 WebKit 的确超越了 KHTML 和 KJS 本身,它在浏览器领域赫赫有名,且创新诸多,HTML5、CSS3 等潮流都和 Webkit 脱不开关系。
但在 WebKit 开源的过程中,苹果的 “控制欲” 和与开源社区的 “水土不服” 也是真实存在的。WebKit 的开源为苹果赢得了真真实实的口碑和市场,但事实上, WebKit 的完全开源却又显得那么地不爽不快。
02 半路杀出个谷歌,开源的 WebKit 竟站在垄断风波中央
2005 年完全开源之后,WebKit 开始出现在 Safari 以外的地方。比如,2005 年 11 月,诺基亚就为其 S60 平台发布了一个基于 WebKit 的网页浏览器。
WebKit 越来越炙手可热。2007 年 1 月 iPhone 发布,WebKit 作为 Mobile Safari 的基础在 iOS 平台发挥威力,开始席卷移动领域。
然而,对于一片商业沃土而言,从来都不缺竞争对手。iPhone 亮相的 10 个月,谷歌杀了出来,发布了收购的一项成果:Android 操作系统。得知消息后,乔布斯极为震怒:
我们没有进军搜索业务,他们却进军了手机业务,别搞错了,他们想干掉 iPhone。
一时间硝烟四起,谷歌和苹果进入了全面竞争状态,其中就包括浏览器业务。2008 年 9 月,Chrome 浏览器正式上线。有趣的地方在于,Chrome 也是由 WebKit 支持的,它使用了 Webkit 中的 WebCore 部分,而在 JS 引擎上则使用了谷歌自己的 V8 引擎,改良之后谷歌大大提高了脚本执行速度,Chrome 脱颖而出。
2009 年 7 月 7 日,谷歌又宣布了一项新的项目,启动 “Chrome 操作系统”。很显然,它的诞生就是为了争夺微软和苹果的市场。而且,它也是 WebKit 支持的。
苹果辛辛苦苦,从开源社区磨合出来的开源项目,又被另一家商业公司利用了?还成为了 Safari 最强大的竞争对手?甚至,到了今天两者还暗戳戳地你争我斗。比如,《Chrome 更快更强,在 Mac 上击败 Safari
》,这个新闻标题你品品。
那些在明面上的商业争夺,已经够看了。要命的是,因为谷歌浏览器是通过 WebKit 进行 fork 和改进而来的,苹果和谷歌不得不在开源层面上进行合作。
KDE 一家完全开源、和苹果没有任何实质性威胁的开发团体,和苹果的开源合作尚且不合,谷歌这家竞争对手就更不用说了。
有说法表示,谷歌不太用 WebCore 之外苹果开发的东西,而是使用自己开发的多进程浏览器架构等。而且,在一段时间内,WebKit 中约 50% 的 WebKit 更改来自于谷歌的开发者。但是,WebKit 的最终决策权是苹果的,据一些第三方的 WebKit 开发者透露,两者在开源合作上,没有一般开源开发者的那种相互支持的感觉,反而更像两头相互打量的狮子,气氛紧张。
这种微妙的关系于 2013 年被画上句点。 4 月,谷歌宣布 Chrome 将弃用 WebKit 而改用 Blink 排版引擎,原因是苹果在没有协商的情况下,单方面推出了 WebKit 2。
谷歌认为 WebKit 2 里有太多苹果专用的代码,不但对谷歌没有作用,而且还要花时间去处理兼容性的问题。而谷歌提交的很多修改,又最终很难获得苹果的同意,双方就 WebKit 的发展方向产生了极大分歧。
同时,苹果推出的 WebKit2 与 Chromium 的沙箱设计存在冲突,所以 Chromium 一直停留在 WebKit,并使用移植的方式来实现和主线 WebKit2 的对接。这增加了 Chromium 的复杂性,且在一定程度上影响了 Chromium 的架构移植工作。
Blink 引擎是谷歌从 WebKit 分支出的衍生浏览器引擎,旨在逐步脱离 WebKit 的影响,另立山头。至此,四大浏览器内核的格局(Trident 也称 IE 内核、WebKit、Blink 和 Gecko)就此形成。这些年,四方一直各占山头,直到最近才因为 Web 兼容性问题开始合力定制规范。
https://www.chromium.org/blink/
Blink 引擎的新闻爆出之后, Hacker News 上立刻开始有双方的开发者发表评论。多数评论认为,苹果 WebKit 的更改提交政策对非苹果的开发者是有敌意的,尤其在 WebKit 2 这块。更有人认为, WebKit 2 完全是苹果单方推出的一个产品,而且根本就没有和谷歌以及其它参与 WebKit 开发的人进行协商。
很难断定商业公司之间到底孰是孰非,毕竟很多时候是需要 “在商言商” 的。
但从 WebKit 开源这一系列的事情可以看出,大公司都是以利益为导向的,千万不要认为苹果开源了 WebKit 就为 “柏林墙砸开了一个缺口” 了。有人说的没错:“WebKit 对于苹果来说,只是它封闭性花园中一只开源的黑羊。”
作为苹果的开源项目,且功绩斐然,WebKit 有一种别扭的 “错位感”。这种 “错位感” 在最近的 “英国反垄断调查” 中,展现得淋漓尽致。
2022 年 2 月,英国竞争与市场管理局 (CMA) 首席执行官安德里亚・科斯切利 (Andrea Coscelli) 在新闻稿中宣布
:
苹果和谷歌对我们使用手机的方式已经形成了一种恶习,我们担心这会导致英国数百万人迷失方向。
在这些反竞争行为的指控中,苹果因要求浏览网络的应用程序在 iOS 和 iPadOS 上使用 WebKit 框架和 WebKit Javascript 而受到批评。Apple 的 App Store 审查指南指出:2.5.6 浏览网页的应用程序必须使用适当的 WebKit 框架和 WebKit Javascript。
很显然,监管机构认为这个行为会扼杀创新。而苹果为自己辩护的论点是:有必要保护用户的安全和隐私,以及防止 Chromium 的主导地位。
“我们真的想要生活在一个 Chromium 浏览器占据 95% 市场的世界上吗?对 Web 来说,这会是一个糟糕的未来”。上图中的 Jen Simmons 就是上文所提到的 苹果 Safari 布道师。
当然,其他人就不这么看了。比如曾因 App Store 高额分成政策与苹果闹得不可开交的 Epic Games 首席执行官 Tim Sweeney 就表示,WebKit 限制是反竞争且不包容的。
苹果 WebKit 是成功的吗?没有疑问,它是成功的。但是,从开源角度上看,WebKit 一直处于苹果的强力掌控之下,不仅在开源之初就充斥开源方面的争议,现在更是陷入了 “垄断” 和 “商战” 之中,呈现出一种别扭的姿态。
边栏推荐
猜你喜欢
ICLR 2022 spotlight | analog transformer: time series anomaly detection method based on correlation difference
The latest 2022 review of "graph classification research"
【Postman】Collections-运行配置之导入数据文件
Hongliao Technology: Liu qiangdong's "heavy hand"
【论文代码】SML部分代码阅读
Overview of three core areas of Mathematics: algebra
Market development prospect and investment risk assessment report of China's humidity sensor industry from 2022 to 2028
授予渔,从0开始搭建一个自己想要的网页
Usage of test macro of GTEST
[ram IP] introduction and experiment of ram IP core
随机推荐
Interface test: what are the components of the URL in fiddler
【Postman】Monitors 监测API可定时周期运行
Software test interview questions - Test Type
HCIA review
The ECU of 21 Audi q5l 45tfsi brushes is upgraded to master special adjustment, and the horsepower is safely and stably increased to 305 horsepower
[Thesis code] SML part code reading
【Postman】Collections配置运行过程
[ram IP] introduction and experiment of ram IP core
The ECU of 21 Audi q5l 45tfsi brushes is upgraded to master special adjustment, and the horsepower is safely and stably increased to 305 horsepower
Company video accelerated playback
数学三大核心领域概述:代数
SQLMAP使用教程(三)实战技巧二
養了只小猫咪
Hypothesis testing learning notes
误差的基本知识
Wib3.0 leapfrogging, in leapfrogging (ง • ̀_•́) ง
Nodejs realizes the third-party login of Weibo
Grant Yu, build a web page you want from 0
Commodity price visualization
[C language syntax] the difference between typedef struct and struct