网络历史 作者 Jay Hoffmann 文章 RSS · 音频 RSS
iTunes · Spotify · Overcast

第 2 章:浏览器

音频版本由 Jeremy Keith 讲述

网络历史回顾…

蒂姆·伯纳斯-李爵士在欧洲核子研究组织(CERN)与一个小型团队一起创建了网络背后的技术——HTML、HTTP 和 URL,将超文本与互联网融合在一起。他成功说服组织的高层将网络置于公共领域,以便任何人都可以使用它。

丹尼斯·里奇遇到一个难题。

他正在开发一个全新的世界级操作系统。他和几位同事从头开始构建它,力求简洁、干净且用途广泛。它需要能够在任何地方运行,并且需要速度快。

里奇在贝尔实验室工作。贝尔实验室是 20 世纪 60 年代和 70 年代的创新温床,这里聚集了一些电信领域最优秀的人才。在那里,里奇曾参与了一个名为 Multics 的分时项目。他对分时计算的未来充满热情。然而,经过多年的开发却成果寥寥,贝尔最终放弃了该项目。但里奇和他的几位同事拒绝放弃梦想。他们将 Multics 转换为一个新的操作系统,使其具有足够的适应性和可扩展性,可用于网络化分时。他们称之为 Unix。

里奇遇到的问题与 Unix 的软件有关。更准确地说,他的问题在于软件运行的语言。他一直使用汇编语言编写大部分 Unix 代码,确切地说就是将纸带送入计算机,就像在计算机早期那样。直接用汇编语言编程——就像一些程序员所说的“贴近硬件”——使 Unix 速度极快且内存效率高。另一方面,这个过程非常繁琐且容易出错。

里奇的另一个选择是使用 B 语言,这是一种由他的同事肯·汤普逊开发的解释型编程语言。B 语言的编码要简单得多,比直接操作硬件抽象了许多步骤。但是,它缺少里奇认为至关重要的功能。B 语言也受自身设计的影响;执行速度缓慢,并且缺乏分时环境所需的弹性。

里奇的解决方案是两者都不选。相反,他创建了一种编译型编程语言,它拥有与 B 语言许多相同的功能,但能更好地访问汇编代码所能提供的东西。这种语言叫做 C 语言。

到 Unix 发布时,它已经完全用 C 语言重写,并且该编程语言捆绑在每个运行在其之上的操作系统中,事实证明,这样的操作系统有很多。随着越来越多的程序员尝试使用 C 语言,他们很快就适应了它。它完美地融合了——正如有些人所说——创建可预测软件模式的抽象函数和方法以及在需要时直接操作硬件的能力。它没有强制规定,但也不会让你完全迷失方向。Command Heroes 播客的主持人萨伦·伊塔布雷克将 C 语言描述为“一种近乎通用的编程工具;在个人电脑上与在超级计算机上一样强大。”

C 语言被称为瑞士军刀语言。它几乎无所不能,而且已经用它完成了许多事情。计算机科学家比尔·戴利曾说过:“它为编程的方式设定了基调,这种基调持续了几十年。” 确实如此。20 世纪后半叶开发的许多编程范式都起源于 C 语言。编译器在 Unix 之外得到了发展,并在每个操作系统中都可用。罗布·派克,一位参与 Unix 开发,后来又参与 Go 语言开发的软件工程师,对它有更简单的说法。“C 语言是荒岛语言。”

里奇自己也有一句他喜欢重复的话。“C 语言兼具汇编语言的优雅和强大以及……汇编语言的可读性和可维护性。” C 语言不一定是每个人最喜欢的编程语言,它也存在很多问题。(21 世纪初创建的 C# 是许多改进 C 语言的尝试之一。)然而,随着 C 语言在 X-Windows、Linux 和 Mac OSX 等类 Unix 操作系统中捆绑发布,并传播到世界各地,软件开发人员开始将其视为彼此交流的一种方式。它成为了一种通用语言。即使你不精通,你也能大概理解这种语言的对话。如果你需要打包和共享一些代码,C 语言是一个很好的选择。

1993 年,让-弗朗索瓦·格罗夫和蒂姆·伯纳斯-李爵士必须发布一个包含所有网络技术的软件包。它可以用来构建 Web 服务器或浏览器。他们称之为 libwww,并将其发布到公共领域。它是用 C 语言编写的。


想想你第一次浏览网页的情景。那个第一个网页。也许它给你带来了丰富的体验,充满了图片、精心设计的内容,以及你在其他地方找不到的内容。也许它朴实无华、毫无趣味且简短。无论那个页面是什么,我敢打赌它肯定有一些链接。当你点击那个链接时,就会发生神奇的事情。突然,一个新的页面出现在你的屏幕上。你现在正在浏览网页。那一刻,你理解了什么是网络。

蒂姆·伯纳斯-李爵士于 1990 年年底完成了第一个 Web 浏览器 WorldWideWeb 的编写。它运行在他的 NeXT 机器上,并且具有读写功能(后者可用于管理 Web 上的主页)。NeXTcube 不是你见过的最重的计算机,但它仍然是台式机。这并没有阻止伯纳斯-李在各个会议之间拖着它,以便他可以将其插入并向人们展示网络。

他一次又一次地遇到同样的问题。现在我们考虑在会议上单独演示一个运行在鲜为人知的操作系统(NeXT)上、在并不普及的计算机(NeXT 计算机系统)上运行的全球网络化超文本应用程序的难度时,这个问题似乎很明显。问题出现在演示之后,随之而来的是一个不可避免的问题:我该如何开始使用它?如果你无法自己连接到网络,网络就失去了它的魔力。它在单台计算机上完全没用。为了让这个想法流行起来,伯纳斯-李需要让每个人都开始浏览网页。而他不可能把自己的电脑借给任何想要使用它的人。

尼古拉·佩罗出现了。佩罗是莱斯特理工大学的一名本科生,当时还在欧洲核子研究组织(CERN)实习。她被分配到伯纳斯-李和卡利亚的团队,因此他们让她构建一个可以在任何地方安装的互操作浏览器。她没有编程背景(她学习的是数学),并且作为实习生在欧洲核子研究组织(CERN)工作,这些事实并没有让她太担心。在几个月内,她学习了一些 C 语言编程,并构建了行模式浏览器。

今天使用行模式浏览器,你可能会感觉自己像一位 20 世纪 80 年代的黑客。它是一个纯文本浏览器,设计为从命令行终端运行。在大多数情况下,只是纯白色的文本在黑色背景上,像素从边缘延伸到边缘。在浏览器中键入 Web 地址会将该网站的文本显示在屏幕上。键盘上的上下箭头可以用于导航。链接显示为编号列表,可以通过输入正确的数字从一个站点跳转到另一个站点。

这样设计是有原因的。它的简洁性保证了互操作性。行模式浏览器拥有独特的特性,即多年来唯一一个与平台无关的浏览器。它可以安装在任何地方,几乎任何计算机或操作系统上。它使上网变得容易,前提是你知道安装后该怎么做。佩罗在发布行模式浏览器几个月后离开了欧洲核子研究组织(CERN)。毕业后她又回到了这里,并帮助构建了第一个 Mac 浏览器。

佩罗离开后不久,伯纳斯-李和卡利亚又招募了一名成员。让-弗朗索瓦·格罗夫在欧洲核子研究组织(CERN)工作,就在隔壁办公室。格罗夫是一位经验丰富的程序员,他编写了布莱恩·柯林汉和 C 语言创建者丹尼斯·里奇合著的官方 C 编程指南的法语译本。当他有机会看到伯纳斯-李正在做什么时,他正在为 UNIX 系统开发一些物理软件。

并非每个人都理解网络的目标。如果没有我们今天所拥有的全球视野,就很难理解。格罗夫不是其中之一。他渴望得到像网络一样的东西。他完全理解网络的潜力。几乎在他看到演示后,他就请求调到该团队。

他马上注意到一个问题。“这个行模式浏览器,有点像先有鸡还是先有蛋的问题,”他曾在一次采访中描述道,“因为要使用它,你必须先下载软件并安装它,可能还需要编译它。” 你必须使用网络下载 Web 浏览器,但你需要 Web 浏览器才能使用网络。格罗夫找到了一个巧妙的解决方案。他构建了一个简单的机制,允许用户通过 Telnet 连接到 NeXT 服务器,并使用其内置的行模式浏览器浏览 Web。因此,世界上任何人都可以远程访问 Web,甚至不需要安装浏览器。他希望,一旦他们能够四处看看,就会被吸引住。

但格罗夫想要更进一步。他来自 UNIX 系统和 C 语言编程。C 语言是荒岛语言。其多功能性使其成为万能解决方案的宝贵选择。格罗夫希望网络成为一个荒岛平台。他希望它能够以他甚至无法想象的方式使用,以研究机构的科学家们无法想象的方式使用。一种可以做任何事情的媒介。为此,他需要使网络具有更高的可移植性。

格罗夫与伯纳斯-李一起开始提取 NeXT 浏览器的基本元素并将其移植到 C 语言。格罗夫选择 C 语言不仅因为他熟悉它,还因为他知道大多数其他程序员也会熟悉它。几个月内,他构建了 libwww 软件包(其正式名称将在几年后出现)。libwww 软件包是一组用于制作图形浏览器的通用组件。其中包括解析 HTML、处理 HTTP 请求和呈现页面的必要代码。它还提供了创建浏览器 UI 的起点,以及用于嵌入浏览器历史记录和管理图形窗口的工具。

伯纳斯-李于 1991 年 8 月 7 日首次向公众宣布了网络。他发布了一个简短的描述以及一条简单的说明

如果您有兴趣使用该代码,请给我发邮件。它还处于原型阶段,但可以通过 info.cern.ch 上的匿名 FTP 获取。它受欧洲核子研究组织(CERN)版权保护,但通常不会对免费分发和使用造成问题。

如果您给蒂姆·伯纳斯-李爵士发邮件,他会将 libwww 软件包发回给您。

到1992年11月,这个库已经完全成熟为一套可重用的工具。次年,当CERN将万维网开源时,其条款中包含了libwww软件包。到1993年,任何有一点时间和C编译器的人都可以创建自己的浏览器。

在离开CERN成为首批万维网顾问之一之前,Groff做了最后一件事情。他创建了一个新的邮件列表,名为www-talk,供新一代浏览器开发者交流。


1991年12月13日——在伯纳斯-李完成第一个浏览器的最后润色近一年后——魏培元在www-talk邮件列表上发帖。在与伯纳斯-李交谈后,他创建了一个名为ViolaWWW的浏览器。几个月后,它将成为早期浏览器中最受欢迎的一个。在他的帖子中间,魏不经意地——以一种如果不是那么真诚的话会显得自夸的语气——提到浏览器的构建是一个晚上完成的黑客行为。

一个晚上的黑客行为。即使是伯纳斯-李或佩洛也无法做到这一点。魏继续在帖子中说明了他能够如此快速地启动和运行的原因。但这种细微差别将被历史遗忘。程序员们会记住的是,构建一个浏览器只需要一天时间。它被“黑客”拼凑起来并发布到世界各地,虽然有漏洞,但可以使用。这句话至少在接下来的十年里将决定浏览器开发的基调和速度。可以说,这是当今浏览器制造商的主要意识形态。

具有讽刺意味的是,事实恰恰相反。ViolaWWW是多年工作的产物,只是在某个晚上达到顶峰。魏是一位优秀的软件程序员。但在他开始那个晚上之前,他已经拥有了所有必要的组件。

魏培元在万维网历史的前沿出现过几次。除了ViolaWWW浏览器外,他还受雇于Dale Dougherty,参与了GNN.com(第一个商业网站)的早期版本开发。在讨论创建万维网联盟(W3C)想法的那一天,他参加了一次万维网先驱们的会议。2012年,他出现在法庭上,作为证人讲述了《防止在线盗版法案》(SOPA)的诸多危害。在万维网的早期历史中,魏一直是一个持续存在的人物。

魏在90年代初是加州大学伯克利分校的学生。正是HyperCard激发了他对超文本软件的兴趣。HyperCard是80年代后期为Mac操作系统构建的一个应用程序。它允许用户创建虚拟“卡片”堆栈,每个卡片包含一些信息。然后,用户可以根据需要连接这些卡片,并快速对卡片堆栈进行排序、搜索和导航。人们用它来整理食谱、替换他们的通讯录、整理研究笔记以及其他无数的事情。HyperCard是一种吸引那些需要一定程度的数字细致程度的人的软件,这种用户会将他们的桌面文件夹整理成整齐的部分,并精确地标记他们的数据。这核心的一群高级用户使用其内置的脚本语言HyperScript操纵软件,将其扩展到新的高度。

魏在了解到自己需要使用Hypercard之前,只是瞥了一眼。但他使用的是X-Windows电脑,而HyperCard只能在Mac上运行。魏并没有被吓倒。他没有购买Mac电脑(这虽然昂贵,但却是解决问题的合理方案),而是开始编写自己的软件。他甚至更进一步。魏首先创建了自己的编程语言。他称之为Viola,并且用它构建的第一件东西就是一个HyperCard克隆。

魏认为HyperCard(以及他的超文本软件)最大的局限性在于它缺乏对网络的访问。如果数据被锁在一个单独的电脑里,还有什么用呢?当他得出这个结论时,时间已经接近1991年底,大约是他看到关于万维网的提及的时候。因此,在一个晚上,他使用了Viola,并将其与libwww结合,构建了一个网页浏览器。ViolaWWW正式发布了。

ViolaWWW之所以构建得如此之快,是因为在魏了解到万维网项目之前,大部分工作已经完成了。那时,Viola编程语言已经开发了几年。它已经构建为可以接受超链接和超媒体,用于HyperCard克隆。它被构建为可以扩展到其他可能的应用程序。一旦魏能够分解libwww,他就移植了他的软件以读取HTML,HTML本身仍然是一种非常简单的语言。而这部分,冰山一角的顶端,只花了他一个晚上。

ViolaWWW将成为早期万维网上大量实验的场所。魏是第一个加入早期样式表版本的人。他添加了书签功能。该浏览器支持表单和嵌入式媒体。在先见之明的一步中,魏还包含了可下载的小程序,允许在浏览器内部运行相当高级的应用程序。这成为了最终成为Java小程序的模板。

对于X-Windows用户来说,ViolaWWW是市场上最受欢迎的浏览器。直到下一件东西出现。


在90年代初发布浏览器几乎是一种仪式。下载libwww软件包并在文本编辑器中打开它是一个有用的练习。万维网并不复杂:有一些代码用于呈现HTML,以及处理来自Web服务器(或其他来源,如FTP或Gopher)的HTTP请求。万维网的程序员使用浏览器项目来熟悉其功能。这有点像早期万维网的“Hello World”。

1993年6月,全世界只有130个网站。有十几种浏览器可供选择。这大约相当于每个网站对应一个浏览器。

浏览器的快速发展是由万维网社区的创新性质驱动的。当伯纳斯-李将万维网开源时,他做的不仅仅是将其提供给世界。他将开放性置于其意识形态的核心。直到5年后——Netscape发布——万维网才获得其第一个商业浏览器。在此之前,“浏览器制造商”是一个由程序员组成的小型社区,他们在www-talk邮件列表上讨论问题,试图使网页浏览体验尽可能地具有革命性。

一些最早的项目将一个浏览器移植到另一个操作系统。偶尔,其中一位浏览器制造商会自发地发布一些现在看起来必不可少的东西。第一个在浏览器窗口内呈现PDF是Midas浏览器的一部分。HTML表格在另一个名为Arena的浏览器中被引入并正确布局。选项卡式浏览是InternetWorks中的一个突出功能。所有这些功能都是在1995年之前开发的。

大多数早期浏览器都已淡出人们的视野。但他们背后的那些人并没有。最早的浏览器制造商中包括Netscape的未来员工、万维网联盟(W3C)和万维网标准运动的成员、Cookie(以及blink标签)的发明者,以及一些早期万维网最重要的网站的创建者。

当然,当时没有人知道这一点。对大多数创作者来说,这仅仅是制作一些很酷的东西,以便传递给他们的互联网朋友的练习。


《纽约时报》在1993年12月8日向读者介绍了万维网。“把它想象成通往信息时代埋藏宝藏的地图,”第一行写道。但作者指的是“地图”——他在文章前半部分花了大量篇幅描述的那张地图——并不是万维网;而是它最受欢迎的浏览器。一个名为Mosaic的浏览器。

Mosaic的部分创建者是马克·安德森。与许多早期的万维网先驱一样,安德森是一个雄心壮志的人。他被宏伟的想法和宏大的言论所吸引(他曾经说过软件将“吞噬世界”)。在大学里,他以比普通软件工程师更健谈而闻名,谈论着下一个热门事物。

安德森对技术有着长达数十年的热情。几年后,他凭借世界上第一个商业浏览器——Netscape Navigator——抓住了公众的想象力。他登上了《时代》杂志的封面。他将成为硅谷的基石,多年来定义其快速“先发布,后思考”的理念,并在风险投资领域寻求和获取财富。

当蒂姆·伯纳斯-李在《纽约时报》文章发表前一年左右发布了关于万维网的初始公告时,安德森是伊利诺伊大学的一名本科生。在校期间,他在大学附属的计算实验室工作,该实验室被称为国家超级计算应用中心(NCSA)。NCSA与ARPA占据着类似的地位,它们都是国家赞助的项目,没有明确的目标,除了促进计算机科学的发展。如果你在NCSA工作,就可以在项目之间转换,而不会引起上级的太多怀疑。

但Mosaic的故事并非始于一位指挥若定的硅谷传奇人物,无论好坏,都掌控着技术的未来。它始于一位不安分的大学生。

安德森应该在开发可视化软件,他已经找到了一种让软件基本自动运行的方法。在业余时间,安德森会在办公室里四处走动,倾听每个人感兴趣的事情。正是在其中一次谈话中,一位同事向他介绍了万维网。他立即被震惊了。他下载了ViolaWWW浏览器,并在几天内决定万维网将成为他的主要关注点。他还决定了另一件事。他需要制作自己的浏览器。

在1992年,浏览器可能是笨重的软件。它们缺乏现代浏览器经过数十年的发展才具备的完善性和约定俗成。它们难以下载和安装,通常需要用户修改系统文件。而且早期的浏览器制造商过于专注于开发万维网,并没有过多地考虑其软件的视觉界面。

安德森想要构建一个设计精良、性能优越、易于安装的浏览器,同时在魏添加到ViolaWWW浏览器中的功能基础上进行构建。他向NCSA的一位程序员埃里克·比纳提出了他的想法。“马克是一个非常优秀的推销员,”比纳后来回忆道,所以他加入了进来。

效仿其他人的速度,安德森和比纳在短短几周内就完成了Mosaic浏览器的第一个版本。它适用于X Windows电脑。为了宣布该浏览器,安德森在www-talk邮件列表上发布了一个下载链接,并附上消息“根据我从无人处获得的权力,特此发布NCSA基于Motif的网络信息系统和万维网浏览器X Mosaic的alpha/beta版本0.5”。万维网不仅获得了一个受欢迎的浏览器,还获得了它的第一个推销员。

在当时竞争激烈的领域,该浏览器的第一个版本令人印象深刻。可以肯定的是,它在早期就具有表单和一些媒体支持。但它并不是最好的浏览器,也不是最先进的浏览器。相反,安德森和比纳专注于完全不同的东西。Mosaic之所以与众不同,是因为它最易于使用。安装过程很简单,界面相对直观。

Mosaic浏览器的秘密武器是它的迭代。不久之后,NCSA的其他程序员也希望参与到这个项目中。他们将不同的操作系统分配给不同的团队,以便将浏览器移植到这些系统上。一个团队负责Mac,另一个负责Windows。到1993年秋季,在其最初发布几个月后,Mosaic在Mac、Windows和Unix系统上都具有功能齐全的版本,以及兼容的服务器软件。

在那之后,开发速度进一步加快。测试版频繁发布,并可以通过FTP下载。新功能以惊人的速度添加,新版本似乎每周都在发布。NCSA Mosaic 积极参与网络社区,活跃于 www-talk 邮件列表,与用户交流并收集错误报告。提交错误报告后,几个小时内收到 NCSA 程序员的修复回复,这并非罕见。

安德森是一位特别活跃的人物,几乎每天都在论坛上发帖。当 Mosaic 团队决定是否要收集有关浏览器使用情况的匿名分析数据时,安德森在 www-talk 列表中进行了投票,以了解这是否是一个好主意。当他收到很多关于如何使用 HTML 的问题时,他编写了一份初学者指南。

当一位 Mosaic 用户发布了一些他遇到的问题时,导致了该用户和安德森之间的一段紧张的来回交流。他声称自己不是客户,安德森不应该太在意他的想法。 安德森回复道:“我们确实关心你的想法,仅仅是因为拥有这个群体赋予我们的这个优秀的分布式测试团队,使我们有机会使我们的产品比其他方式所能达到的更好。”安德森比任何早期浏览器制造商都更清楚地认识到,Mosaic 是一款产品,用户的反馈可以推动其发展。如果他们保持反馈循环的紧密性,他们可以在保持界面简洁和无错误的同时,保持在最新功能的前沿。这正是编程谚语“足够多的眼睛,所有缺陷都浅显易见”在浏览器开发中变成了现实。

NCSA 的 Mosaic 开发充满了活力。内部竞争促使操作系统团队加快功能发布速度。有时 Mac 版本会率先实现某些功能。有时是 Bina 和安德森继续致力于 X-Mosaic。“我们会聚在一起,在深夜,想出一些很酷的想法——例如图像——然后我们会分头行动,看看谁先完成,”Mosaic Windows 版本的创建者 Jon Mittelhauser 后来回忆道。有时,这些功能会失败,几乎不会被使用。其他时候,正如 Mittelhauser 指出的那样,它们绝对是必不可少的。

在发布后的几个月里,他们开始超越甚至他们最接近的竞争对手 ViolaWWW 的功能列表。他们添加了表单支持和富媒体。他们为用户添加了书签以跟踪他们的链接。他们甚至创建了自己的“最新消息”页面,每天更新,跟踪网络上最受欢迎的链接。当您打开 Mosaic 时,NCSA 的“最新消息”页面是您看到的第一个页面。他们不仅仅是在构建一个浏览器。他们正在构建一个通往网络的窗口。

正如 Mittelhauser 指出的那样,<img> 标签成为了 Mosaic 的标志性功能。它成功地做到了两件事。该标签是在没有蒂姆·伯纳斯-李爵士或更广泛的网络社区的输入的情况下添加的。(安德森只在它已经实现后才在 www-talk 上发布了一则通知。)因此,首先,这使得 Mosaic 团队与其他浏览器制造商和网络社区的一些部分之间产生了持续多年的冲突。

其次,它使 Mosaic 变得更加流行。<img> 标签允许将图像直接嵌入到 Mosaic 浏览器中。人们发现网络浏览很无聊。它是无菌的、僵硬的和科学的。内联图像改变了这一切。在几个月内,一批新的网页设计师开始尝试在网络上使用图像的可能性。在某种程度上,正是这个标签让网络闻名。

图像标签促使《纽约时报》发表了一篇报道,以及 《连线》杂志随后发表的一篇报道。当媒体开始谈论网络时,Mosaic 已经是最受欢迎的浏览器,并成为更大网络世界的代名词。“Mosaic”对于网络浏览就像现在的“Google”对于搜索一样。

最终,上层管理人员介入了。NCSA 不是一家科技公司。他们是一个超级计算实验室。他们介入是为了帮助使 Mosaic 浏览器更加协调,也许,更盈利。许可证被分配给了十多家公司。Mosaic 被捆绑到 Spry 的“Internet in a Box”产品中。它被 Santa Cruz Operation 嵌入到企业软件中。

最终,Mosaic 分成了两个方向。管理层的压力促使安德森离开并创办了一家新公司。它将被称为 Netscape。该软件的另一家许可证持有者是一家名为 Spyglass 的公司。他们开始与微软进行谈判。出于不同的原因,这两家公司最终都会选择从头开始重写 Mosaic 浏览器。然而,那个浏览器将是他们的起点,他们的产品将对浏览器市场产生长达数十年的持久影响,因为世界开始看到其第一个商业浏览器。


喜欢通过这样的故事来了解网络历史吗?Jay 正在讲述网络的完整故事,每两周都会有新的故事。 订阅他的时事通讯 以了解最新的……过去的信息。