开源协议精讲 / 第一章:开源运动的起源与定义
第一章:开源运动的起源与定义
引言
要理解开源许可证,必须先理解开源运动的历史与哲学根基。本章将带你从 1970 年代的黑客文化出发,穿越自由软件运动,到达现代开源生态的全景。
1.1 前开源时代:Unix 与早期共享文化(1960s-1980s)
1.1.1 早期计算机社区的共享精神
在 1960-70 年代,软件通常随硬件一同分发,源代码(Source Code)共享是常态。大学实验室和企业研究部门之间自由交换代码,形成了最早的"开源"雏形。
关键事件:
- 1969 年:AT&T 贝尔实验室开始开发 Unix
- 1970 年代:Unix 源代码在大学间广泛流传
- 1979 年:AT&T 开始对 Unix 商业化,限制源代码分发
1.1.2 商业化带来的裂变
当 AT&T 将 Unix 商业化并禁止源代码分发时,社区中的许多人感到背叛。这一事件成为自由软件运动的导火索之一。
1.2 自由软件运动(Free Software Movement)
1.2.1 Richard Stallman 与 GNU 项目
Richard Stallman(理查德·斯托曼),MIT 人工智能实验室的程序员,是自由软件运动的发起人。
背景故事:
1980 年代初期,Stallman 面临一个困境:他想修改一台打印机的驱动程序,但厂商拒绝提供源代码。这件事让他意识到——用户应该拥有控制自己所使用软件的自由。
1983 年,Stallman 发起了 GNU 项目(GNU’s Not Unix),目标是创建一个完全自由的操作系统。
1985 年,他发表了《GNU 宣言》(GNU Manifesto),系统阐述了自由软件的哲学。
1.2.2 自由软件的四项基本自由
Stallman 定义了软件自由的四项基本自由(Four Freedoms):
| 自由 | 编号 | 描述 |
|---|---|---|
| 使用自由 | 自由 0 | 可以出于任何目的运行程序 |
| 研究自由 | 自由 1 | 可以研究程序如何工作并修改它(前提:能访问源代码) |
| 分发自由 | 自由 2 | 可以自由重新分发副本 |
| 改进自由 | 自由 3 | 可以将修改后的版本分发给他人(前提:能访问源代码) |
注意:这里的"自由"是 freedom,而非免费(free of charge)。“Free as in freedom, not as in free beer.”
1.2.3 自由软件基金会(FSF)
1985 年,Stallman 创立了 自由软件基金会(Free Software Foundation, FSF),作为 GNU 项目的法律和财政支持组织。
FSF 的主要贡献:
- 维护 GNU 项目及其核心组件(GCC、Emacs、Bash 等)
- 发布和维护 GPL 系列许可证
- 推动自由软件的法律保护
- 维护自由软件目录(Free Software Directory)
1.2.4 GPL:版权左位(Copyleft)的诞生
1989 年,Stallman 创建了 GNU 通用公共许可证(GNU General Public License, GPL),这是第一个广泛使用的 Copyleft 许可证。
Copyleft 的核心理念:
版权所有(Copyright)→ 版权左位(Copyleft)
保留权利 → 保留自由
Copyleft 利用版权法的框架,确保软件及其衍生作品始终保留四项基本自由。简而言之:
如果你分发了修改后的版本,你必须以相同的许可证(GPL)发布,且必须提供源代码。
1.3 开源运动的诞生(1990s)
1.3.1 从"自由"到"开源"的转变
1990 年代后期,一部分人认为"自由软件"(Free Software)的名称在商业界不够友好,容易被误解为"免费软件"。
1998 年,Eric S. Raymond、Bruce Perens 等人发起了 开源运动(Open Source Movement),创造了"开源"(Open Source)这一术语。
核心区别:
| 维度 | 自由软件 | 开源软件 |
|---|---|---|
| 哲学基础 | 道德与自由 | 实用与协作 |
| 关注重点 | 用户权利 | 开发方法论 |
| 商业友好度 | 中立 | 高度友好 |
| 核心组织 | FSF | OSI |
| 代表人物 | Richard Stallman | Eric S. Raymond |
1.3.2 开源定义(Open Source Definition, OSD)
开源倡议组织(Open Source Initiative, OSI) 于 1998 年成立,基于 Debian 自由软件准则(Debian Free Software Guidelines, DFSG) 制定了 开源定义(OSD)。
OSD 的 10 条标准:
- 自由再分发(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)
- 许可证必须技术中立(License Must Be Technology-Neutral)
1.3.3 “大教堂与集市”
Eric S. Raymond 在 1997 年发表了著名的论文《大教堂与集市》(The Cathedral and the Bazaar),对比了两种软件开发模式:
- 大教堂模式(Cathedral):源代码在发布时才公开,开发过程封闭
- 集市模式(Bazaar):源代码从一开始就公开,开发过程透明
这篇论文深刻影响了开源运动的理论基础,并直接促成了 Mozilla 项目和 Netscape 的源代码开放。
1.4 OSI 与 FSF:两大支柱
1.4.1 开源倡议组织(OSI)
| 项目 | 描述 |
|---|---|
| 全称 | Open Source Initiative |
| 成立时间 | 1998 年 |
| 创始人 | Bruce Perens、Eric S. Raymond |
| 官网 | https://opensource.org/ |
| 核心职能 | 审批和维护"经 OSI 批准"的许可证列表 |
| 许可证列表 | 约 80+ 个经批准的许可证 |
OSI 批准的许可证意味着:
- 符合开源定义(OSD)的 10 条标准
- 在法律上被认为是"开源"的
- 被全球大多数开源社区认可
1.4.2 自由软件基金会(FSF)
| 项目 | 描述 |
|---|---|
| 全称 | Free Software Foundation |
| 成立时间 | 1985 年 |
| 创始人 | Richard Stallman |
| 官网 | https://www.fsf.org/ |
| 核心职能 | 维护 GNU 项目、GPL 许可证、自由软件目录 |
| 许可证分类 | 自由/非自由/非软件 |
FSF 的许可证分类体系:
- 自由许可证(Free Licenses):满足四项自由
- 非自由许可证(Non-Free Licenses):不满足四项自由
- 非软件自由许可证(Free Non-Software Licenses):如 Creative Commons
1.4.3 OSI 与 FSF 的关系与分歧
虽然 OSI 和 FSF 的目标高度重叠,但在哲学和实践上有明显分歧:
| 维度 | FSF | OSI |
|---|---|---|
| 核心关注 | 用户自由 | 开发方法论 |
| 对"自由"的强调 | 极高 | 中等 |
| 商业态度 | 中立(不反对商业) | 积极拥抱 |
| 代表协议 | GPL 系列 | 所有经批准的许可证 |
| 对 BSD 的态度 | 自由的 | 开源的 |
| 对 MIT 的态度 | 自由的 | 开源的 |
关键区别:FSF 认为"开源"一词淡化了自由的道德维度;OSI 认为"自由软件"在商业界容易引起误解。
1.5 开源运动的重要里程碑
1.5.1 时间线
1983 ──── GNU 项目启动
1985 ──── FSF 成立
1989 ──── GPL v1 发布
1991 ──── Linux 内核发布(GPL v2)
1997 ──── 《大教堂与集市》发表
1998 ──── OSI 成立;Netscape 开源(Mozilla)
1999 ──── Apache 基金会成立
2000 ──── Python 转向开源许可证
2004 ──── Ubuntu 发布
2005 ──── Git 诞生;OpenOffice.org 转向开源
2007 ──── GPL v3 发布
2008 ──── GitHub 成立
2009 ──── Android 开源
2010 ──── NASA 开源代码
2014 ──── 微软拥抱开源(.NET 开源)
2018 ──── IBM 收购 Red Hat(340 亿美元)
2020 ──── 开源成为软件行业默认模式
1.5.2 关键转折点
1. Linux 的成功(1991)
Linus Torvalds 发布的 Linux 内核采用 GPL v2 许可证,证明了开源协作模式可以产生世界级的软件。
2. Apache HTTP Server 的崛起(1995-1999)
Apache 成为最流行的 Web 服务器,推动了 Apache 许可证的广泛采用。
3. Google 与开源(2000s)
Google 通过 Android、Chromium、TensorFlow 等项目,极大推动了开源在移动端和 AI 领域的普及。
4. 微软的转变(2014-至今)
微软从"开源是癌症"(Steve Ballmer, 2001)转变为全球最大的开源贡献者之一,是开源运动的重要转折点。
1.6 现代开源生态
1.6.1 开源的现状
截至 2026 年,开源已成为软件开发的主流模式:
- GitHub:超过 4 亿个代码仓库
- npm:超过 200 万个包
- PyPI:超过 50 万个包
- Maven Central:超过 40 万个包
1.6.2 开源供应链
现代软件开发高度依赖开源组件:
你的应用
├── 直接依赖(Direct Dependencies)
│ ├── 库 A(MIT)
│ ├── 库 B(Apache-2.0)
│ └── 库 C(GPL-3.0)← 潜在风险
└── 间接依赖(Transitive Dependencies)
├── 库 D(BSD-2-Clause)
├── 库 E(LGPL-2.1)
└── 库 F(AGPL-3.0)← 高风险
1.6.3 为什么许可证仍然重要
尽管开源已成为常态,但许可证合规性仍然面临挑战:
- 许可证种类繁多:80+ 种 OSI 批准的许可证
- 兼容性复杂:不同许可证之间可能存在冲突
- 供应链风险:一个 AGPL 依赖可能影响整个项目
- 法律不确定性:许多许可证未经法院充分检验
- 企业合规要求:收购、融资、上市都需要合规审计
1.7 本章小结
| 概念 | 核心要点 |
|---|---|
| 自由软件 | 基于四项基本自由,强调用户权利 |
| 开源软件 | 基于 OSD 10 条标准,强调实用与协作 |
| FSF | 维护 GNU 项目和 GPL 许可证 |
| OSI | 审批和维护开源许可证列表 |
| Copyleft | 利用版权法保障软件自由 |
| 开源供应链 | 现代软件深度依赖开源组件 |
扩展阅读
- 《GNU 宣言》:https://www.gnu.org/gnu/manifesto.html
- 《大教堂与集市》:http://www.catb.org/esr/writings/cathedral-bazaar/
- 《自由软件,自由社会》(Richard Stallman 著)
- OSI 官方定义:https://opensource.org/osd
- 《开源之道》(Chris DiBona 等著)
- 《The Success of Open Source》(Steven Weber 著)
- 《Working in Public》(Nadia Eghbal 著)— 现代开源经济学分析