本篇文章2612字,读完约7分钟
网络开发人员诺兰·劳森(Nolan lawson)最近写道,苹果在实施网络标准方面落后于其他主流浏览器开发人员,许多新兴的api技术已经在safari中消失,safari已经成为新时代的ie。
以下是文章的主要内容:
上周末,我参加了edgeconf,一个由许多网络行业领袖发起的会议。会议中设立了许多研讨会,集中讨论新兴的浏览器技术,我们围绕相关技术进行了热烈的讨论,如服务工作者、web组件、影子dom、web清单等。
在网络社区中,超过10名参与者可以被称为真正的积极分子。主要浏览器的代表参加了edgeconf,如chrome、mozilla、ie和opera。每个人都兴高采烈,问主流浏览器开发者一些问题,比如什么时候发布应用程序接口。
“房子里的大象”
一家公司没有参加。他们可以说是无人愿意提及的“家中的大象”。他们不再直呼其名,而是称其为“加州公司”或“水果公司”。研讨会室内几乎所有的笔记本上都闪耀着公司耀眼的标志,但没有人敢说出它的名字。是的,它是苹果。
网络开发人员通常认为safari落后于其他浏览器,但是在像edgeconf这样的会议上,你会对此有更强烈的感受,你会惊讶于Safari和其他浏览器之间的巨大差距。上面提到的应用编程接口目前都没有在safari中实现,苹果公司似乎也无意这样做。
即使苹果真的采用了新的应用编程接口,他们也经常只是在鬼混。以indexeddb为例。indexeddb是5年前提出的,2012年开始出现在ie、firefox和chrome上。苹果直到2014年年中才推出indexeddb,但其实现出乎意料地糟糕,人们普遍认为它毫无用处。
现在,一年后,苹果已经修复了indexeddb中的两个大漏洞。他们声称indexeddb不值得一试,因为它“毫无用处”。如果浏览器支持一团糟,当然,没有人会使用indexeddb。
很难理解为什么苹果会是这样。他们从不派人去参加与网络相关的会议,他们的safari博客也很少更新,所以在一年一度的wwdc(全球开发者大会)开幕之前,没人知道下一代safari会是什么样子。从感觉上来说,苹果就像圣诞老人——它一年一次给你一些备受期待的礼物,而且不可能知道该送什么礼物。老实说,这些礼物近年来变得越来越小,所以这并不奇怪。
近年来,苹果的网络战略只能被形容为“仁慈的忽视”。虽然jscore和全新的wkwebview极大地提高了性能,但safari没有任何新的web平台功能,如离线存储、推送通知和“可安装”的web应用程序。这使得人们很容易将此解释为苹果蓄意破坏对其应用商店业务模式的任何威胁,但这种说法似乎没有意义,毕竟,这部分业务基本上是平衡的。另一种可能是,他们只是对ios开发者的要求做出了回应——基本上是:1)引入更多的本地api;2)快,快,快。由于苹果一直对其内部事务保密,没有人能说出真相。
另一个ie?
事实上,苹果从未对网络持怀疑态度。2010年,乔布斯公开讽刺flash,称html5是未来。苹果当时是网络的虔诚信徒。许多早期帮助网络应用赶上本地应用的特性,如应用缓存、网络sql、触摸事件和触摸图标,已经被开发者们热烈接受,其中许多甚至源于苹果。
与此同时,当websql被indexeddb所取代时,许多苹果员工站出来积极支持它,称它对于网络应用程序的高效运行是不可或缺的。从这些论点中,我们可以清楚地感受到苹果在赢得指数b之后的巨大失落感。具有讽刺意味的是,苹果公司几乎给了开发人员各种各样的工具来削弱他们的专有平台,相反,拒绝websql的开发人员给了他们重新思考策略和停止任何新的web api开发的机会。
应用程序缓存也面临类似的情况,在不久的将来,它可能会被服务人员所取代。当苹果还对网络感兴趣的时候,它曾经赢得了广泛的浏览器支持。不幸的是,这只是一个匆忙推出的半成品。如果苹果仍然落后于其他公司,恐怕服务人员将遭受指数化的命运。
目前,网络社区需要接受这样一个事实,即狩猎已经成为新时代的ie。微软最近改变了它的过去,谷歌在网络领域处于领先地位,而mozilla的发展速度一如既往。另一方面,苹果似乎在独自唱一首悲伤的歌。是我们公开讨论这个问题的时候了,而不是表现出禁忌和回避它。苹果是世界上最有价值的公司,他们仍然能够承受一些打击。
如何回应?
那么,当一个完全控制ios平台的主流浏览器提供商仍然坚持2010年的模式,表现得好像什么都没发生过,网络社区能做什么呢?我认为有三个主要的解决方案:
1)坚持2010年可行的方案,使用polyfills支持safari。通过使用appcache和pouchdb,您可以获得与服务工作者几乎相同的功能。这个方案应该能够吸引绝大多数的网络开发者。另一方面,这是迫使苹果升级和加强其技术的好方法。
2)使用诸如服务人员之类在狩猎中不容易使用的技术,并将其视为促进行业进步。Alex russell在“可安装的网络应用”研讨会上说得很好:如果我们使用服务工作者开发大量免费的网络应用,并且这些应用在android上运行得很好,但是只能在ios上运行,那么苹果公司将会有兴趣采用服务工作者来支持这个api。然而,尽管这对于整个网络社区来说是最好的结果,但是说服开发人员编写只覆盖一半受众的代码并不容易。
3)为网络工具包做出贡献。毕竟,safari的核心部分是一个开源项目,所以c++开发人员没有理由不自己实现这些新生的API。这个方案的主要问题是webkit不是safari,所以苹果仍然可以决定不在他们的旗舰浏览器中实现webkit特性。回到indexeddb,它很早就被谷歌很好地实现了。苹果可以在几年前直接并入谷歌的实施,但他们没有采取行动,最终得到了一个有很多漏洞的版本。很难保证他们对其他外部捐助也会这样做。
总之,我真的不知道什么是正确的解决办法。
许多网络工具包开发者正在做一些值得钦佩的事情,但在我看来,面对苹果,目前最好的策略可能是来之不易,而不是软弱。因此,我倾向于采用上面第二点提到的罗素的解决方案,即促进新兴网络技术的普及。
如果网络社区能够开始建立一个充满活力的网络应用生态系统,并把苹果排除在外,苹果可能不得不像微软一样做出改变。否则,开发者将不得不在2010年生活在网络上,让safari成为另一个可怕的ie。(乐邦)