Skip to content

第二章 历史-双流记

George Santayana

忘记过去的人,注定要重蹈覆辙

2.1 Unix 的起源及历史

小型实验原型系统的后继产品往往备受令人讨厌的“第二版效应”折磨。由于迫切希望将首次开发时遗漏的功能都添加进去,往往导致设计十分庞大,过于复杂。其实,还有一个鲜为人知的“第三版效应”:有时候,在第二系统不堪重负而崩溃之后,有可能返璞归真,走上正道。

最初的 Unix 系统就是一个第三系统。 Unix 的父辈是颇具开拓性的 Multics 项目,该项目试图建立一个具备众多功能的“信息应用工具”,能够很漂亮地支持大群用户对大型计算机的交互式分时使用。Multics 最后因不堪重负而本崩溃了。但 Unix 却正是从它的废墟中破壳而出的。

2.1.1 创世纪 1969——1971

Unix 于 1969 年诞生于贝尔实验室的计算机科学家 Ken Thompson 的头脑中。

2.1.2 出埃及记 1971——1980

最初的 Unix 用汇编语言写成,应用程序用汇编语言和解释型语言 B 混合编写。

C 语言从 1971 年其自 B 语言进化而来;1973 年,Thompson 和 Ritchie 成功地用 C 语言重写了整个 Unix 系统。这是一个大胆的举动——那时为了最大程度地利用硬件性能,系统编程都通过汇编器来完成。与此同时,可移植操作系统的概念几乎鲜为人知。

现代 Unix 程序员公认的第一个完全意义上的 Unix 是 1979 年发布的 V7 版本。 第一代 Unix 用户群一年前就已形成。John Lios 对 V6 版源码的注释成了 Unix 内核的第一个正式文档。

Unix 产业也初露端倪。 1978 年,第一个 Unix 公司成立,同年售出第一个商用 C 编译器(Whitesmiths)。 1980 年,西雅图一家还不起眼的软件公司——微软也加入到 Unix 游戏中,他们把 AT&T 版本移植到微机中,取名为 XENIX 来销售。

2.1.3 TCP/IP 和 Unix 内战 1980——1990

在 Unix 的发展过程中,加州大学伯克利分校很早就成为唯一最重要的学术热点。伯克利分校早在 1974 年就开始了对 Unix 的研究。

1977 年,当时还默默无闻的伯克利毕业生 Bill Joy 管理的实验室发布了第一版 BSD。

1880 年,美国国防部高级研究计划局(DARPA)需要请人在 Unix 环境下的 VAX 机上实现全新的 TCP/IP 协议栈。最后选择了伯克利 Unix 作为平台——显然可以毫无阻碍地拿到它的源码。

有了 TCP/IP,一切都变了。 ARPANET 和 Unix 文化开始融合,这种发展最终使得两者都免遭灭亡。不过首先还得经过炼狱,起因是两个毫不相干的灾难:微软的兴起和 AT&T 的拆分。

1981 年,比尔盖茨从西雅图计算机产品哦公司买下了 QDOS,修改后作为 MS-DOS 系统完成微软和 IBM 的历史性交易。后来,盖茨又说服了 IBM 公司允许微软将 MS-DOS 从硬件中剥离出来单独出售。接下来的十年中,盖茨利用这个非它所写的程序变成了超级亿万富翁。

1983 年,美国司法部在针对 AT&T 的第二起反托拉斯诉讼中获胜,并拆分了贝尔系统。这次判决将 AT&T 从 1958 年禁止将 Unix 产品化的和解协议中解脱了出来。 AT&T 马上忙不迭的将 Unix System V 商业化——这一举措差点扼杀了 Unix。那时,没有人意识到,Unix 的产业化会破坏 Unix 源码的自由交流,而后者恰是后者滋养了 Unix 系统早期的活力。

1989 年到 1993 年时 Unix 的中世界。PC 技术被无情地商业化了。 1970 年代的 Unix 黑客先锋人近中年,步履开始蹒跚。硬件便宜了,但 Unix 还是太贵。我们幡然醒悟:过去的 IMB 垄断让位于现在的微软垄断,而微软设计的糟糕软件像浊流一样,围着我们越涨越高。

2.1.4 反击帝国 1991——1995

1991 年 8 月,当时默默无闻的芬兰大学生 Linus Torvalds 宣布了 Linux 项目。据称 Torvalds 最主要的激励是学校里用的 Sun Unix 太贵了。

又过了两年,经历了 1993——1994年的互联网大爆炸,Linux 和开源 BSD 的真正重要性才为整个 Unix 世界所了解。

1995 年后,Unix 的故事就成了开源运动的故事。不过故事还有一半没讲,我们要回到 1961 年,从互联网黑客文化的起源开始讲起。

2.2 黑客的起源和历史

Unix 传统是一种隐性的文化,不只是一书袋的技术窍门。这种传统传达着一个有关美和优秀设计的价值体系,人们老是把这种文化称为“黑客文化啊”,从 1998 年起,这种文化已经很大程度上和计算机行业出版界所称的“开源运动”重合了。

2.2.1 游戏在校园的林间 1961——1980

黑客文化的根源可以追溯到 1961 年,这一年 MIT 购买了第一台 PDP-1 小型机。PDP-1 是最早的一种交互式计算机,并且在那时不想其他机器一样天价,所以没有对它的使用做太多限时规定。因此 PDP-1 吸引了一帮好奇的学生,他们来自技术模型铁路俱乐部(TMRC),带着一种好玩的心态摆弄这台设备。

TMRC 来实验的几个人后来是成了 MIT 人工智能实验室的核心成员,而这个是实验室在六七十年代称为前沿计算机科学的世界级中心之一。这些人也把 TMRC 的行话和内部笑话带了进来,包括一种精巧的恶作剧传统“hacks”。人工智能实验室的程序员应该是第一群自称“hacker”的人。

从技术性而言,早期的黑客文化大都基于 PDP-10 小型机。PDP-10 的黑客们后来接收运行 ARPANET ,因为别人不愿意干这件事。后来,他们成了互联网工程工作组(IETF,Internet Engineering Task Force)的创建骨干,并作为创始人,开创了通过 RFC(Requests For Comment)进行标准化的传统。

2.2.2 互联网大融合与自由软件运动 1981——1991

1983 年后,随着 BSD 植入了 TCP/IP, Unix 文化和 ARPANET 文化开始融合。ARPANET 黑客学起了 C 语言,用起了管道、过滤器和 shell 之类的行话。Unix 程序员学到了 TCP/IP,也开始互称“黑客”。

但是 TCP/IP 联网和行话并不是黑客文化从其 ARPANET 根源继承的全部东西,还有 Richard M. Stallman 和他的精神革命。RMS 早在 1970 年代就已经证明他是当时最优能力的程序员之一。Emacs 编辑器就是他众多发明中的一项。

1983 年,Stallman 创建了 GNU 项目,致力于编写一个完全自由的操作系统。尽管 Stallman 从来没有成为一个 Unix 程序员,但在后 1980 的大环境下,实现一个仿 Unix 操作系统成为了他追求的明确战略目标。

1985 年,RMS 发表了 GNU 宣言。在宣言中,他有意从 1980 年之前的 ARPANET 黑客文化价值中创造一种意识形态——包括前所未见的政治伦理主张、自成体系而极具特色的论述以及激进的改革计划。

RMS 的 GNU 宣言引发的争论至今仍存在于黑客文化中。他的纲要远不止于维护一个代码库,以及暗含了废除软件知识产权主张的精髓。为了追求这个目标,RMS 将“自由软件”这一术语大众化,他撰写了“通用公共许可证(GPL)”,后者成了一个即充满号召力又颇具争论的焦点。

2.2.3 Linux 和实用主义者的应对 1991——1998

1990 年代早期,价廉性优的 PC 机加上方便快捷的互联网,对寻找机会挑战自我的新生代年轻程序员是极大的诱惑。自由软件基金会编写的用户软件工具包铺平了一条摆脱高成本专有软件开发工具的前进道路。一些新手加入了 RMS 的革命运动,另一些人则更认同整体意义上的 Unix 传统,但其他大部分人置身事外,一心编码。

Linus Torvalds 巧妙地跨越了 GPL 和反 GPL 的派别之争。他利用 GNU 工具包搭器起了自创的 Linux 内核,用 GPL 的传染性质保活它,但拒绝认同 RMS 许可协议反映的思想体系计划。

Torvalds 令人愉快的实用主义及灵活而低调的行事风格,促使黑客文化在 1993 至 1997 年间取得了一连串令人惊奇的胜利,不仅仅在技术上的成功,还让围绕 Linux 操作系统的发行、服务和支持产业有了坚实的开端。结果,他的名望和影响也一飞冲天。Torvalds 成为了互联网时代的英雄。

2.3 开源运动

到 1998 年 Mozilla 源码公布的时候,黑客社区其实算是一个众多派系的松散集合,包括了自由软件运动、Linux 社区、Perl 社区、Apache 社区、BSD 社区、X 开发者、互联网工程工作组,还有至少一打以上的其他组织。

1995 年后,Linux 扮演了一个特殊角色,即是社区内多数软件的统一平台,又是黑客中最被认可的品牌。

1998 年 3 月,为了深入研究共同目标和策略,召开了一次空前的社团重要领导人峰会,与会者计划代表了所有的主要社区。这次会议为所有派系的公共开发方式确立了一个新标记——开源。

“开源”背后另一个意图是希望将黑客社区的方法以一种更亲和市场、更少对抗性的方式介绍给外部世界。幸运的是,在这方面,它取得了绝对的成功——这也重新激起了人们对齐根源的兴趣。

2.4 Unix 的历史教训

在 Unix 历史中,最大的规律就是:距开源越近就月繁荣。任何将 Unix 专有化的企图,只能陷入停滞和衰败。

虽然我们在软件设计这个重要但狭窄的领域比其他人聪明,但这不能使我们摆脱对技术与经济相互作用影响的茫然,而这些就发生在我们的眼皮底下。对今后的教训就是过度依赖一种技术或者商业模式都是错误的,保持软件机器设计传统的灵活性才是长存之道。

另一个教训是:别和低价而灵活的方案较劲。或者,换句话说,低档的硬件只要数量足够,就能爬上性能曲线而最终获胜。