「开源」一词对应英文 Open Source,最初起源于软件开发领域,因此也称为「开放源代码」,对应的软件则称为开源软件(Open Source Software,简称 OSS)。除了我们熟知的开源软件以外,开源的表现形式还有很多,例如开源硬件(Open Source Hardware)、开放设计(Open Design)、开放文档(Open Document)等等。开源的目的是分享共享、加速创新,可以说开源已经成为一种超越软件生产界限的运动和工作方式。
## 开源软件
我们先来看看开源软件的概念,很多人可能会认为只要把源代码公开了就是开源软件。实际上这种理解是不充分的,按照 OSI 组织 (opens new window)(Open Source Initiative Association)给出的 OSD 定义 (opens new window),除了公开源代码,开源软件的发行条款还必须符合以下十个条件。
```
Free Redistribution 允许自由地再发布软件
Source Code 程序必须包含所有源代码
Derived Works 可以修改和派生新的软件
Integrity of The Author's Source Code 发布时保持软件源代码的完整性
No Discrimination Against Persons or Groups 不得歧视任何个人或团体
No Discrimination Against Fields of Endeavor 不得歧视任何应用领域(例如商业)
Distribution of License 许可证的发布具有延续性
License Must Not Be Specific to a Product 许可证不能针对于某一个产品
License Must Not Restrict Other Software 许可证不能限制其他软件
实际上,在 UNIX 变成一个商业项目之前,由于硬件价格的不断下跌,制造商已经开始期望软件能够带来额外的收入。于是,开始出现种种保护软件、对其收费的措施,越来越多的厂商开始单独销售软件,也不再提供软件的源代码,软件工业开始独立出来了。1976 年,比尔·盖茨就曾发表《致计算机爱好者的公开信 (opens new window)》,明确提出了软件版权(CopyRight)的理念。
1983 年,由于私有软件的增长和对不再能自由使用计算机程序的担忧,MIT 的理查德·斯托曼(Richard Stallman)开始倡导自由软件运动,并发起了 GNU 计划。GNU 是「GNU is NOT UNIX」的无穷递归缩写,其目标是构建一整套完全由自由软件构成的 UNIX OS 体系。GNU 起初进展很顺利,开发出 GLibc、GCC、GDB 等一系列操作系统必备软件。
随着推动自由软件发展和成熟的愿景日益强烈,理查德·斯托曼意识到仅通过编写和分享 GNU 代码是远远不够的。于是,在 1985 年创建了自由软件基金会(Free Software Foundation,简称 FSF),其主要工作是运行 GNU 计划,开发更多的自由软件。同时,FSF 还创建了保护 GNU 和其他自由软件项目的法律和制度框架,提出了与 CopyRight 理念针锋相对的 CopyLeft(许可复制权)理念,其表现形式为 GPL,即公共许可证(General Pubic License)。
**Linux**
1991 年,林纳斯·托瓦兹(Linus Torvalds)公开发布了一个类 UNIX 操作系统内核 —— Linux,并接受 CopyLeft 理念。从 Linux 0.12 版本起,Linux 内核开始采用 GPL 许可证的新版权声明。虽然 Linux 内核并不是 GNU 计划的一部分,但由于 HURD 内核进展缓慢,使得 Linux 得到广泛关注并得以快速发展。GNU 与 Linux 的发展,可以说是相辅相成,因此 我们通常把使用 Linux 内核并且大量使用 GNU 组件的操作系统发行版称为 GNU/Linux。
正是 Linux 的出现,使得自由软件运动有了自己可以与 Microsoft 的 Windows 相抗衡的操作系统。自由软件运动初战告捷。但是,自由软件运动关于自由的追求,毕竟和现实的商业氛围格格不入,带有着过于理想化的色彩。这种反商业的信条,让一些本来也反对私有软件的人士对自由软件敬而远之。正是在这种背景下,一部分原有自由软件运动人士,开始尝试将理想的自由软件与现实的商业氛围进行某种衔接。