blankyao's blog

Review | Should web browsers have stuck to being document viewers?

February 28, 2021

前阵子一个叫 Ken Kocienda 的人在 twitter 上发了条关 tweet 表达了对浏览器的看法:

Web 浏览器不是操作系统,也不是应用开发环境,而是文档浏览器。为了让浏览器超出文档浏览器所做的努力是计算历史最大的错误之一。

如果是一般人这么说可能也无所谓,但是 Kocienda 确实不太一般,所以引起了很多讨论。Kocienda 在乔布斯时代任职 iPhone 首席软件工程师,在 Apple 工作有 15 年之久,还将在 Apple 的经历写了《创意选择》一书,而且也参与过 Safari 浏览器的开发,所以 Kocienda 自认为是比较有发言权的。在讨论中也不乏有 Fuchsia 工程师、Flutter 负责人、Stack Overflow 创始人以及 Alan Kay 这种大名鼎鼎的人物。


Kocienda 的主要论据是用 Web 技术开发应用不管是开发还是使用都不合适,因为 Web 技术设计的初衷就不是为了做应用开发,而是为了做文档的分发和浏览,跟原生应用没法比。在 twitter 上大部分反对 Kocienda 观点的人普遍认为 DOM 确实不太适合做应用开发,但是 Web 浏览器用来做应用的分发实在是太有优势了。

Alan Kay 在 Quora 上写了一大段内容来参与这个话题的讨论,是我目前看到的关于这个话题最认真的观点,本文主要是转述 Alan Kay 的观点。

Kay 在开头就表明了自己的观点:如果这里的「文档」指的是对古老的静态文本媒介(包括图片、音频和视频)的模仿的话,那么恰恰相反。如果在这之前对 Kay 不了解的话应该很难理解这句话, Kay 是一个个人电脑历史里鼻祖式的人物,参与了 GUI 的发明,可以说没有 Kay 就没有今天我们所使用的个人电脑;发明了 Smalltalk, 提出了面向对象编程;另外,Kay 也在 Apple 工作过,发明了第一个平板电脑 Newton. 在我 Smalltalk 与面向对象编程 这篇文章里有对 Kay 的详细介绍,简单来说,Kay 认为电脑不是笨重的计算工具,而是任何人都可以使用的动态媒介,是儿童都可以用来编程的工具,是进行创作的工具,是思想的自行车。

Kay 引用了 1960 年代 Licklider 的观点来表达自己的观点:计算的使命是成为所有全球联网人类的交互式的智力放大器。如果只是模仿老旧的媒介是不可能完成这个使命的,必须要包括电脑能够支撑的所有媒介,而且必须以让所有用户平等读写的方式。然后讲一个当年在施乐的案例:

当激光打印机被发明后,想要用在联网的 Alto 电脑上,施乐的工程师最开始的做法设计一种规定文档发送到打印机的「打印标准」,当数据发送到打印机后由打印机进行解析并打印出结果。但是几个星期后出现了更多的文档打印相关的需求,这就导致了一个悲哀的发现:如果想在发送端拥有比较大的自由度,发送一个数据结构到打印机是一个糟糕的想法。 不过好在最终还是有一个不错的结局:通过发送一段程序来实现实现这种自由度,John Warnock 和 Martin Newell 发明了被称之为 JAM 的语言,后面发展成为了 Postscript. John Warnock 和 Martin Newell 也因此创办了 Adobe.

除了正面表达对于这个话题的观点外,Kay 还讲了在 WWW 刚被发明时给 Apple 提的两点建议:

  1. Hypercard 是一个很棒的创作系统,作为一个媒介,可以编程、支持可见即所得,而且对作者和使用者来说是完全对称的,这应该成为 web 内容「用户体验」的指导方针。
  2. 浏览器的底层应该是一个可以安全执行被封装的系统的操作系统,而不是一个应用。Web 内容应该是完全开放的,而不是和浏览器的功能子集绑定在一起。

可惜 Kay 的想法并没有得到实现。所以 Kay 对现在的 WWW 和浏览器非常失望,他认为主要的原因是 Internet 的现状逼着浏览器越来越像操作系统,但是没有经过预见性的设计,这主要体现在两点:

  1. 不管是架构还是语言,都不是为终端用户所设计的,对终端用户来说使用门槛极高。
  2. 现在的浏览器更像是一个为未封装内容提供特性的提供者。

之所以这样是因为开发者和用户对这些都很满意,但是并没有想过应该是怎样的

后面 Kocienda 回复了一下 Kay, 详细阐述了一下自己为什么会提出来最开始的观点,然后 Kay 在回复中表达了对「应该是怎样的」的看法。Kay 提到了一个新的概念:WIAN(What is actually needed). WIAN 是一个定性的阈值,在阈值之下,做的更好是解决不了问题的,而在阈值之上,如果去追求完美,也解决不了问题,只有 WIAN 能解决问题。而过去那么多年,浏览器都只是在 WIAN 之下变得更好而已。


Written by blankyao who lives and works in Amoy building useful things.