开源历史上的 6 个关键时刻

了解开源如何从 MIT 的打印机故障解决方案发展成为当今科技行业的主要开发模式。
529 位读者喜欢这篇文章。
All Things Open speaker support 'office hours' start today

Alan Levine. CC0 1.0

如今,开源在 IT 行业中扮演着重要的角色。它无处不在,从最小的嵌入式系统到最大的超级计算机,从您口袋里的手机到运行我们每天使用的公司网站和基础设施的软件。 让我们来探索我们是如何走到今天的,并讨论过去 40 年中为当今铺平道路的关键时刻。

1. RMS 和打印机

在 20 世纪 70 年代后期,Richard M. Stallman (RMS) 是麻省理工学院 (MIT) 的一名程序员。 当时,他的部门与许多大学一样,共享一台 PDP-10 计算机和一台打印机。 他们遇到的一个问题是,纸张经常卡在打印机中,导致一连串的打印作业堆积在队列中,直到有人修复卡纸为止。 为了解决这个问题,MIT 的工作人员想出了一个很好的社会解决方法:他们为打印机驱动程序编写了代码,以便在卡纸时,向所有正在等待打印作业的人发送消息:“打印机卡纸了,请修复它。” 这样,打印机就不会长时间卡住。

1980 年,实验室接受了一台全新的激光打印机的捐赠。 然而,当 Stallman 要求提供打印机驱动程序的源代码时,以便他可以重新实现社会解决方法,让系统通知用户卡纸,他被告知这是专有信息。 他听说另一所大学的一位研究人员拥有一个研究项目的源代码,当机会出现时,他要求这位同事分享它——但令他震惊的是,他们拒绝了。 他们签署了一份保密协议 (NDA),Stallman 认为这是对黑客文化的背叛。

70 年代末和 80 年代初代表着这样一个时代:软件传统上以源代码形式与硬件一起免费提供,但现在被认为是有价值的。 越来越多的 MIT 研究人员开始创办软件公司,而销售软件许可证是他们商业模式的关键。 保密协议和专有软件许可证成为常态,最好的程序员从 MIT 等大学被聘用到私人开发项目,在那里他们无法再分享或协作。

作为对此的回应,Stallman 决心创建一个完整的操作系统,该操作系统不会剥夺用户了解其工作原理的自由,并允许他们根据需要进行更改。 这是自由软件运动的诞生。

2. GNU 的创建和自由软件的出现

到 1983 年底,Stallman 准备宣布他的项目并招募支持者和帮助者。 1983 年 9 月,他宣布创建 GNU 项目(GNU 代表 GNU's Not Unix——一个递归缩写)。 该项目的目标是克隆 Unix 操作系统,以创建一个能够完全赋予用户自由的系统。

1984 年 1 月,他开始全职从事该项目,首先创建了一个编译器系统 (GCC) 和各种操作系统实用程序。 1985 年初,他发表了“GNU 宣言”,这是号召程序员加入这项工作的号召书,并成立了自由软件基金会,以便接受捐款以支持这项工作。 该文档是自由软件运动的创始章程。

3. GPL 的编写

直到 1989 年,自由软件基金会和 RMS 编写和发布的软件都没有一个单一的许可证。 Emacs 在 Emacs 许可证下发布,GCC 在 GCC 许可证下发布,等等; 然而,在一家名为 Unipress 的公司迫使 Stallman 停止分发他们从 James Gosling(Java 的创造者)那里获得的 Emacs 实现副本后,他觉得确保用户自由的许可证非常重要。

GNU 通用公共许可证的第一个版本于 1989 年发布,它概括了 Copyleft 的价值观(一个双关语——版权的反义词是什么?):您可以使用、复制、分发和修改该许可证涵盖的软件,但是如果您进行更改,您必须共享修改后的源代码以及修改后的二进制文件。 这个共享修改后的软件的简单要求,加上 20 世纪 90 年代互联网的出现,使自由软件运动的去中心化、协作开发模式得以蓬勃发展。

4. “大教堂与集市”

到 20 世纪 90 年代中期,Linux 开始流行起来,自由软件变得更加主流——或者说“不那么边缘”可能更准确。 Linux 内核的开发方式与人们以前所见过的任何东西完全不同,并且非常成功。 从内核社区的混乱中产生了秩序和一个快速发展的项目。

1997 年,Eric S. Raymond 发表了具有开创意义的文章“大教堂与集市”,比较和对比了 GCC 和 Linux 内核的开发方法和社会结构,并谈到了他自己在使用 Fetchmail 项目的“集市”开发模式方面的经验。 Raymond 在这篇文章中描述的许多原则后来将成为敏捷开发和 DevOps 运动的核心——“尽早发布,经常发布”、代码重构以及将用户视为共同开发者都是现代软件开发的基础。

这篇文章被认为将自由软件带给了更广泛的受众,并说服了当时软件公司的管理人员,以自由软件许可证发布他们的软件是正确的。 Raymond 后来在“开源”一词的创造和开源研究所的创建中发挥了重要作用。

“大教堂与集市”被认为是 1998 年 Netscape Web 浏览器 Mozilla 源代码发布的关键文档。 当时,这是首次将现有的、广泛使用的桌面软件作为自由软件发布的主要版本,这使其进一步进入了公众视野。

5. 开源

早在 1985 年,RMS 本人就认为,用于描述软件自由的“free”一词的模糊性存在问题。 在 GNU 宣言中,他指出“give away”和“for free”等术语混淆了零价格和用户自由。 当自由软件在 20 世纪 90 年代后期进入主流受众时,“自由如自由”,“言论而非啤酒”和类似的口头禅很常见,但许多著名的社区人士认为,需要一个术语来使该概念更容易被公众理解。

在 Netscape 于 1998 年发布 Mozilla 的源代码后(见第 4 点),包括 Eric Raymond、Bruce Perens、Michael Tiemann、Jon "Maddog" Hall 以及自由软件界的许多领军人物在内的一群人聚集在帕洛阿尔托,讨论一个替代术语。 术语“开源”是 由 Christine Peterson 创造的,用于描述自由软件,开源研究所后来由 Bruce Perens 和 Eric Raymond 创立。 他们认为,与专有软件的根本区别在于源代码的可用性,因此这应该首先在品牌宣传中提出。

当年晚些时候,在 Tim O'Reilly 组织的一次峰会上,当时自由软件界一些最具影响力的人聚集在一起,讨论自由软件的各种新品牌。 最终,“开源”胜过了“sourceware”,开源开始被社区中的许多项目采用。

然而,存在一些分歧。 Richard Stallman 和自由软件基金会继续支持“自由软件”一词,因为对他们来说,与专有软件的根本区别在于用户自由,而源代码的可用性只是实现这一目的的手段。 Stallman 认为,取消对自由的关注将导致未来源代码可用,但软件用户将无法利用修改软件的自由。 随着 Web 部署的软件即服务和嵌入设备中的开源固件的出现,这场斗争仍在继续。

6. 企业对开源的投资——VA Linux、Red Hat、IBM

在 20 世纪 90 年代后期,一系列备受瞩目的事件导致自由和开源软件的专业化程度大幅提高。 其中,最引人注目的事件是 VA Linux 和 Red Hat 在 1999 年的 IPO。 两家公司的股价在公开交易的首日都大幅上涨,证明开源现在正在走向商业化和主流化。

同样在 1999 年,IBM 宣布他们将通过投资 10 亿美元用于 Linux 的开发来支持 Linux,从而降低了传统企业用户的风险。 次年,Sun Microsystems 发布了其跨平台办公套件 StarOffice 的源代码,并创建了 OpenOffice.org 项目。

硅谷对开源项目的大量资金投入、华尔街对围绕开源软件建立的年轻公司的关注以及 IBM 和 Sun Microsystems 等科技巨头带来的市场信誉相结合,共同促成了开源的广泛采用,以及对其蓬勃发展的开放开发模式的拥抱,从而导致了 Linux 和开源在当今科技行业中的主导地位。

您会在此列表中添加哪些关键时刻? 请在评论中告诉我们。

User profile image.
Dave Neary 是 Red Hat 的开源和标准团队的成员,致力于帮助对 Red Hat 重要的开源项目取得成功。 自 1999 年向 GIMP 发送他的第一个补丁以来,Dave 一直在自由和开源软件世界中,身兼数职。

4 条评论

开源是一个骗局。 只有自由软件才能真正尊重用户权利。

嗨,Dave!谢谢你整理这些资料并开启这次对话。很多关键时刻啊。

我想补充一下1989年Cygnus Support的成立。Cygnus是第一家为自由软件(GNU工具)提供商业支持的公司。大约在1997年更名为Cygnus Solutions,并在1999年被红帽收购。

我很多年前刚出版的时候就读过《大教堂与集市》。现在回想起来,我认为它的论点有些夸大。事情几乎总是比这本书中严格的还原论观点复杂得多。这么多年过去了,我们仍然有像第一个评论者这样的宗教狂热者,他们热烈地区分开源软件和自由软件,好像你不能同时欣赏两者一样。

如果你问我,这都是语义上的问题。最根本的事实,开源软件和自由软件都存在的一个真正基本的事实是:源代码应该而且必须向所有人开放,可以随意使用,只要他们遵守基本原则,如果他们修改了代码中的任何内容,就必须向所有人开放......就像代码提供给他们一样。就这样。谁在乎它叫什么名字? 这与它应该被称为“Linux”还是“GNU/Linux”有关。 无论哪个术语都足以描述一组二进制文件,以及一个位于非专有框架之上的操作系统,该系统对所有人可用,(通常)可以免费下载和安装而无需为此付费......并且可以以你认为合适的任何方式使用和更改。 相当于

你即将从一座倒塌的建筑物前被救出……你看到一辆车里有人……你会在乎它是什么车吗? 你会大喊“嘿,你那辆2005年的梅赛德斯-奔驰“定制版”……来帮帮我”吗?……还是你只会尖叫“嘿,你那辆车里的人……救命”?

我知道80年代和90年代建立在“品牌认知度”之上……(还记得百事可乐和可口可乐之间的地盘战吗?)但在现在的时代?……由于大多数事情都是通过网络浏览器完成的,我觉得仅仅命名一个“类似于”其应该是什么的一般概念的东西就足够了。 你不会告诉别人“好的……打开你的Google Chrome 56开发者版浏览器”……你只会说……“好的,打开你的网络浏览器并访问某个网站”。 我并没有否定“RMS先生”以及他对整个开源/Linux/GNU社区的贡献。 但已经确定他是这一切的“原因”……没有必要再继续纠结于此。 但这只是我的意见……而且我意识到我已经完全离题了……抱歉。

Creative Commons License本作品采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可。
© . All rights reserved.