前事不忘,后事之师,唠唠开源的前世今生

2022-02-21 15:33:27 浏览数 (1)

✏️ 编者按:

过去三十年,开源软件以开放、共享、协同的新型生产方式,成为全球信息技术发展的强大推动力。是什么造就了开源?一个小小的个人项目何以改变计算机工业乃至人类社会的?从历史的视角,我们可以得到哪些启发?

让我们跟随红帽工程师@醉卧沙场,回溯计算机系统发展的历史长河。

操作系统之初,人们追求分时复用的设计。在 Multics 项目因为不堪重负而消亡后,Unix 系统悄悄地从这个项目的残骸里出世。虽然 Multics 项目死掉了,但是人们对分时复用系统的追求没有停止,所以在 Multics “死后”,Unix 作为个人追求和爱好开始默默发展

Unix 的最初设计者 Ken Thompson 是 Multics 项目的研究员,他在 1969 年设计了Unix了系统的第一代雏形。开始的 Unix 是用汇编语言和 B 语言所写,后来 Dennis Ritchie 加入创作,开创了 C 语言,然后二人又用 C 语言重写了 Unix。不得不说,用 C 语言重写 Unix 系统对其影响很大。一个用高级语言编写的可读性可扩展性良好的支持分时复用的系统代码,很快在世界顶级黑客间得到广泛流传和认可。

由于 Ken 所在的贝尔实验室是 AT&T(美国电话电报公司)的下属机构,Unix 的版权归 AT&T 所有

1974年,Thompson 和 Ritchie 在 CACM(美国计算机通讯)发表论文,第一次展示了 Unix 和其数百个应用程序后,全世界各大研究室和高校都为之兴奋,并都要求获得 Unix 系统来研究。这个时候 AT&T 其实是很心痒痒的,因为显然 Unix 是是一个巨大的机遇。但是在 1958 年 AT&T 就被禁止进入计算机相关商业领域(为解决反托拉斯案件达成的和解协议),所以 AT&T 不能靠 Unix 来获取利润,而且根据协议,AT&T 下属的贝尔实验室必须将当时的 Unix 分给提出要求获取到它的人。所以 Ken Thompson 开始将载有 Unix 源码的磁带或磁盘一一寄出。然后就引发的 Unix 开发浪潮,各种民间黑客以及公立组织的黑客们开始争先恐后的扩展 Unix 系统,其中最出名的当属加州大学伯克利分校。

Unix V7 版本界面

Unix 系统得到前所未有的成功和发展,在 1979 年发布的 V7 版本可以称为第一个完整意义上的 Unix 系统。而当时对于 V6 版本的源代码注释,也成了 Unix 的最正式文档,流传至今。那个时候,作为一个从事计算机行业的人,没有一份 V6 注释版源码的拷贝,你简直都没法说自己是黑客。Unix 开始进入黄金发展的时期。

1978 年,第一家 Unix 的公司 SCO 成立,Unix 的产业开始初见端倪。微软当时也加入到 Unix 中,把 AT&T 版本移植到了微型计算机上,取名 Xenix 来卖(不过后来他们就另谋他路了)。

上面我们提到了加州大学伯克利分校,这是 Unix 发展史上的一个重要高校,他们对 Unix 的贡献非常巨大。为什么?因为 Ken Thompson 曾在此教学,并将 Unix 的研究深深地植入了这里,以至于他离开后,这里的老师和学生仍然持续的努力研究。1977 年,第一版的 Berkeley Software Distribution (BSD)问世,伯克利分校迅速成为一个核心开发点,很多创意被反馈回贝尔实验室。

1980 年,DARPA(美国国防部高级研究计划局)想要实现全新的 TCP/IP 协议栈,BSD 版 Unix 成为首选,因为这版代码最公开最容易得到,DARPA 选择和伯克利合作开发。

2015 年,时任自由软件基金会主席的 Richard Stallman 在意大利谈及自由软件运动

1983 年,TCP/IP 随着 BSD 4.2 版本一起发布,这历史性一刻让 BSD 版 Unix 红极一时。同年 DEC 公司取消 PDP-10 后续的开发计划,MIT 人工智能实验室以 PDP-10 为中心的黑客文化消亡,这刺激到 Richard Stallman,他开始思考创建 GNU,一个他心目中完全自由的 Unix 克隆版本。还是同年(1983年发生了很多很多事),美国司法部拆分了贝尔实验室,这个举动将 AT&T 从禁止 Unix 商品化的协议中解脱,AT&T 早就心痒难耐,立马开始 Unix System V(系统5)的商业化。就是这一举措,让 Unix 逐渐没落。

Unix 商业化后,原有的自由交流氛围消失。AT&T 用保密协议从软件中获利,严格管制源代码散发,对开发商的产品管制也很严格。这导致 Unix 失去绝大部分的贡献者,因为获取分发 Unix 源码属于非法交易了。祸不单行,在贡献源头枯竭后,各个厂商开始寻求产品的差异性,将 Unix 打造成各自的标准以争取市场。这一做法极大地破坏了 Unix 的跨平台兼容性,对 Unix 造成毁灭性打击。商业化的 Unix 开始和 BSD Unix 分歧不断,从技术层面的分歧,到文化层面的分歧不断加深,几乎到水火不容的地步。相关人员开始纷纷站队,技术人员一般站 BSD 这边,以利益为目标的人站 AT&T 的 System V 这边。

又是 1983 年,一件不大不小的事悄然发生。Larry Wall 先生(我曾有幸见过他和他的太太,并拿到他亲笔签名的 Perl 语言书籍)发明了一个应用程序,叫 patch。这个事件可算大可算小,因为它增进了程序员源码交流的效率,改善了交流方式,让开发人员可以通过传送补丁进行协作,让基于共享代码库的开发可以分开开发,并行进行,最后合并到一起。它引领了新的开发协作方式,为 Unix 的新生做了铺垫。

1985 年,Intel 的 386 芯片问世。这在当时还不是很起眼,因为当时大家的注意力还都在 Sun 公司的工作站上。当时可以很轻松地运行 Unix 的微处理器,在后来让 Sun 知道了什么叫无力回天。同年,Richard Stallman 发表 GNU 宣言,发起了自由软件基金会。只是当时没有人把他和他的组织放在眼里。

1986 年,IBM 开始在大型机市场失利,以 Intel 386 为基础,配合 Unix 跑起来的 PC 机开始占领市场。其实这个时候如果有人用 Stallman 的 GNU 项目配合 386 制作出 Unix 工作站,那将是最便宜的解决方案,而且便宜得不是一点。

Unix 的战争愈演愈烈,经历几轮战争后,Unix 社群的人们的梦想开始破灭。Unix 的商业化没有取得成功,成为鸡肋的存在。微软在 Unix 自相残杀的时候迅速占领了无人重视的小型机市场,赚得盆满钵满,并巩固了其统治地位。“自由”的梦想似乎就要在此终结。

但是曙光在这一刻悄然埋下。1988 年,伯克利分校的黑客 Keith Bostic 受到 Stallman 的影响(听说 Stallman 先生“游说”了当时的 BSD 老大很久,劝他移除并重写 BSD 中 Unix 商业代码相关的部分),开始尝试把 BSD 中 AT&T 的专有代码清除出去,之后 William Jolitz 在 1990 年把 BSD 移植到了 386 机器上。这一消息立刻引起不小的轰动,但是在 1991 年底到 1992 年初的时候,Jolitz 突然退出了这个项目,并毁掉了自己的成果。原因传说是项目的赞助商选择专有授权模式,而不同意他希望将源代码无条件无限制发布的愿望,于是,这个程序员就怒了。

2014 年 Linus Torvalds 在德国出席 LinuxCon

1991 年 8 月,默默无闻的大学生 Linus Torvalds 宣布了 Linux 项目,并加入 GPL 协议。因为 BSD 移植到 386 的项目在 1992 年才下线,所以 Torvalds 并不知道这个项目。他曾亲自表示,如果自己早知道,就一定会加入 BSD 移植 386 的那个项目。不过即便 Torvalds 宣布了 Linux 项目,但是这个开源的内核太弱小,GNU 也没有壮大起来。人们的热点还是停留在 Unix 如何复兴上面。

就这样又过了两年,1993 年到 1994 年,互联网大爆发!随着互联网的兴起,GNU、Linux、开源 BSD 项目才真正被整个 Unix 世界的人们所了解。但不幸的是,对 BSD 的支持者来说,AT&T 对 BSDI(赞助 Jolitz 移植 BSD 的创业公司)的诉讼消耗了大量时间(相当长的时间,而且对 BSD 的毁灭是灾难性的,甚至伯克利的计算机科学研究组都在 1992~1994 年间被关闭了),这使得 BSD 的主要开发者转向了 Linux,大部分原来贡献 Unix 的黑客也开始转向 Linux。这对 Linux 的开发无疑是重要的生命注入,要知道转向 Linux 的这些开发者,那才是远超越当时的 Torvalds 的技术水平的人们。可以毫不夸张地说,他们转向哪里,哪里就有操作系统,束缚他们的只是商业协议而已。

一直以来,主要反对 GNU 的不是以微软为首的商业软件体系,而是 BSD 等其它开源协议拥护者。他们并不认同甚至反感 GPL 协议。BSD 认为自己的协议比 GPL 更自由,GPL 反而是具有传染性的毒瘤。而 Stallman 又是个极致的“自由”崇拜者,他反对所有的私有软件,认为其系统上只能有“自由”软件,不能有不遵守 GPL 协议的“蛀虫”。这一点在思想上很大程度上不受传统 Unix 文化影响下的人们的支持,他们反而喜欢类似 BSD 的方式。Torvalds 在这一点上很聪明,他巧妙穿梭在 GPL 协议和反 GPL 协议之间。他利用 GNU 的软件集搭建 Linux 内核,用 GPL 协议保护自己的成果,但是拒绝认同 Stallman 的思想体系。他曾多次明确表示,自己认为自由软件非常好,但是他也用专有软件,他希望自己的内核上既可以跑自由软件,也可以跑专有软件,选择权交给用户。这样的观念平衡了两方的人,大家都愿意在 Linux 上开发贡献。

其实 Richard Stallman 只是固执了些,他作为一个大师级别的程序员,已经接近了“思想者”的地步,他们这样的人有自己独到的思想体系是非常正常的。就像中国古代百家争鸣时代的一大批哲学家思想家一样,一个人的能力高到一定地步,就开始创立思想体系。但是,作为计算机行业,实用主义还是最受欢迎的。

后来,Linux 抱到 Apache 服务器的大腿,开始一发不可收拾地发展起来。迅速成长为替代 Unix 的存在,受到各大厂商、开发者、使用者的多方支持。

其实仔细想想,Unix 文化从未离我们而去。它只是饶了一圈,在商业化的道路上消亡殆尽后,伴随着互联网的兴起,以另一种开源的形式重新出现,汇聚在它身边的还是以前那些抱着相同理想的黑客们(或他们的继任者们)。同时,Unix 的没落也告诉了我们,距离开源越近,越能得到好的发展。任何试图将 Unix 私有化的企业都逐渐消亡了。回归开源道路的 Unix 文化,才是如今发下去的动力。这是几十年下来,这些老黑客和他们的继任者们,在历尽挫折与失败后共同总结的经验,为此他们还形成了各种思想体系(开源协议)。尽管协议有不同,思想也有不同,但是相同点都是“开源”。

0 人点赞