伦敦奥运会的开幕式上,Tim Burners Lee 爵士坐在场地中央,面对全场打出了「This is for every one」。的确,当所有人都在关注「如何让万维网为我所用」时,只有他这样的执剑人,还在关注「如何使万维网为大家所用」。之所以想要研究 Tim Burners Lee,是想看看最初的万维网是如何设计出来的,以及他的背景经历如何使其选择了这样的设计哲学。
历史诞生
其实万维网(即 www),并不是互联网,只是一个互联网的应用,同期的应用还包括 Email,FTP,talent 等,并且万维网当年其实很孱弱 —— 1992 年夏天,在上线一年以后,整个万维网的每天的点击只有区区一千次。
万维网的诞生的背景其实很朴素,彼时 Tim Burners Lee 在欧洲核子研究中心的物理实验室工作,当时由于此地有粒子加速器,所以全球各地的人们都会带着各种计算机来这里进行实验,记录与分享数据,然后再带回去。这时候让数据在各种不同的计算机之间互通,还不如请他们喝杯咖啡来得快。
所以让「文档」互联互通,便成了整个万维网要解决的基础问题。 关于万维网的发明,Tim Burners Lee 很谦虚的说自己其实只是把几个已有的东西组合在了一起:超文本和互联网。
在 1965 年提出超文本系统的概念,而 1980 年代开始在一些应用程序中出现,比如 HyperCard 等。HyperCard 由 Card 和 Stack 构成,可以存储各种媒介,用来收集、组织、展示、搜索和定制信息。但是那个时代获取信息是很难的事情,如果你经历过没有万维网的时代就知道,要么人肉从别的机器拷贝过来一些东西,要么自己人工输入,要么是系统自带一些内置的,多数人由于其数据量级不够,导致超文本的「探索」很容易被穷尽,而没有发挥更大的价值。
而彼时的互联网基石都已经设计完成,大概由下面几个核心要素构成。你可以点此访问万维网的第一个网站。
- HTTP 协议:确定了哪一方先发言,以及如何发言,基于 TCP/IP 协议,可以让浏览器和服务器「协商」,浏览器告诉服务器他能处理什么,服务器返回他能处理的东西。
- HTML 语言:非常简洁,规定了超文本如何编写。浏览器能显示 HTML,HTML 告诉浏览器如何显示。
- URL 地址:规定了资源在万维网上的格式。URL 是具体地址,是 IP 地址更易读的形式。URL 设计的非常自由,协议可以不是 HTTP,结尾更是无穷的扩展。这意味着几乎可以指向任何资源。
- DNS:IP地址的电话本
整个流程即:浏览器遵照 HTTP 协议向 web 服务器发出请求,请求中包含 URL 地址指向某个 HTML 网页(或其他资源),服务器收到请求后将指定的资源发回浏览器。我们通过输入网址或点击网页上的超文本,不断地重复上面这个动作,便完成了「在网络上冲浪」这个动作。
只有概念显然还是不够,因为对于大多数普通人来说,显示器 + GUI 才是让计算机普及的关键。而浏览器之于万维网,就像是显示器之于计算机 —— 我们可以直接看到远程文档的样子,以及在文档之间通过超链接进行跳跃。所以 1990 年,Tim Burners Lee 和团队开发了第一款浏览器,并且整合了 FTP 协议(即 ftp://xxx/xx.jpg)。从这里开始,万维网就渐渐的融合其他互联网服务,而在人们心中,上网这个概念也就等于打开浏览器、输入网址,看到网页这个动作。
风起于青萍之末。万维网的第一个「杀手级」应用,其实是 Cern 的内部电话簿,这样人们终于可以接近实时的更新和查询电话。但由于技术栈的选型,第一个浏览器只能跑在乔老爷当年的 NeXT 的机器上,由于设备数量导致始终无法出圈。
下面的故事我们就熟悉了,1993 年,安德森开发了通用的跨平台浏览器 Mosaic ,能同时显示图片和文字。第一年下载了 200w 次,之后人们就把浏览器访问万维网,当做了普遍意义的「互联网」。万维网之所以变得流行,是因为其让互联网变得没有那么复杂难用。而万维网最初的设计,也并非是宏大的构想,反而是有一个具体的场景(访问远程计算机文档),利用现有的技术进行最小化设计与组合,最终成长为今天人类再也无法离开的一张网络。
设计原则与哲学
坊间经常传说,Tim Burners Lee 如果申请了专利,早就发大财了。但并非所有人都是围绕着经济第一来的。正是由于他的理想主义,早期的网络社区产生了一些革命性的想法,如今这些想法已经远远超出了技术领域。
下面是设计万维网的一些基础原则:
- 简单:简单很容易被引用,但却常常以奇怪的方式被忽略。简单并不等于「易于理解」,用较少元素达到同样功能的语言更加的难。
- 模块化设计:当你设计一个系统,或者一门语言时,如果功能可以被分解成相对松散的、相对紧密联系的功能组,那么这种分解是一件好事。这意味着,当你想要改变系统时,你可以在未来只改变一部分。模块化设计取决于模块间接口定义的简单性和抽象性,而不需要彼此了解内部构成。以及有必要认识到,你自己的系统,不管它现在看起来有多大多好,总是应该被设计成另一个更大系统的一部分。(虽然这很难)
- 去中心化:在网络上发布任何东西都不需要中央权威的许可,没有中央控制节点,所以没有单点故障... ... 也没有「终止开关」!这也意味着免于不加区别的审查和监视。互联网像是市场经济,在市场经济中,任何人都能与其他人进行交易,而且并非需要到某个集市上才能交易。
- 不歧视:如果我付费连接到互联网与一定质量的服务,你付费连接或更高质量的服务,那么我们可以在同一水平的沟通。这个公平原则也被称为网络中立。
- 自下而上的设计:代码不是由一小群专家编写和控制的,而是在所有人的充分视野下开发的,鼓励最大限度的参与和实验。
- 宽容:要求自由,做事保守。当浏览器不能很好地满足用户的期望时,也要确保系统能工作。但这个原则同时也会鼓励网页编写者的松懈。公差原则并不妨碍对一个完全明确的协议规范的需要,该规范对一致性和不一致性作出精确的区分。容忍原则不是产品违反标准的借口。
- 普遍性:任何人都可以在网络上发布任何东西,所有涉及的计算机必须彼此使用相同的语言,不管人们使用的是什么样的硬件;不管他们住在哪里;或者他们有什么样的文化和政治信仰。通过这种方式,网络打破了孤岛,同时仍然允许多样性蓬勃发展。
- 共识:要使普遍标准发挥作用,每个人都必须同意使用它们。通过在 W3C 透明的、参与性的过程,给予每个人创建标准的发言权,从而达成了这一共识。
我们的互联网病了
Tim Burners Lee 人生的经历了三个阶段:
第一个阶段,互联的文本,从1989年到1999年,他重点在发明和推广互联网。
第二个阶段,互联的知识,从1999年到2009年,他的目标是让互联网能进一步升级,让知识能够互联起来,这是所谓的语义网。
第三个阶段,互联的社会,从2009到现在,他的重心是推动数据的开放、安全与隐私。他提出了一个问题:大公司控制了个人数据,但却建立了不能互联的数据孤岛,数据的集中导致了包括它们滥用这些数据,虚假信息泛滥、误导网民。
他在2017 年底启动了去网络中心化的 Solid 项目,(缩写自Social Linked Data,意为社交互联数据)。该项目为需要链接数据的应用程序开发了一个分布式网络平台,这个平台完全由用户控制,而不是由其他组织或个人控制。简单来说,就是我们可以随时把我们的个人数据放到一个 「POD」 中进行插拔,比如使用今日头条的时候授权读取我们的个人数据来进行推荐,而当我使用完之后,可以把我所产生的新数据从同步到「POD」中,然后同时在服务器端擦除我的个人数据。
当然,在当下的世界里面,显得那么纯粹,但又充满了堂吉诃德的影子。
关于 Lee 的故事还有很多,后续打算慢慢的积累这个专题。引用一段他介绍万维网给孩子们的信作为结尾:
有些人指出,网络可以用来做所有错误的事情。下载可怕的、可怕的、暴力的、淫秽的东西的图片,或者制作恐怖分子可以使用的炸弹的方法。 另一些人说他们的生命是如何被拯救的,因为他们在网上发现了他们所患的疾病,并找到了治愈它的方法。 我认为最重要的是要记住,任何真正强大的东西都可以被用来做好事或者做坏事。炸药可以用来建造隧道或制造导弹。引擎可以装在救护车或坦克上。核能可用于制造炸弹或电力。 所以什么是网络取决于我们,你,我,还有其他所有人。 这是我的希望。 网络是一种交流工具。 通过网络,你可以了解其他人的意思,你可以了解他们来自哪里。 网络可以帮助人们相互理解。 想想你生活中人与人之间发生的大多数坏事。也许他们中的大多数都归结为一个人不理解另一个人。甚至是战争。 让我们用网络来创造一些新奇的事物吧。 让我们利用网络来帮助人们相互理解。
推荐阅读: