强曰为道
与天地相似,故不违。知周乎万物,而道济天下,故不过。旁行而不流,乐天知命,故不忧.
文档目录

开源协议精讲 / 第一章:开源运动的起源与定义

第一章:开源运动的起源与定义

引言

要理解开源许可证,必须先理解开源运动的历史与哲学根基。本章将带你从 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. RaymondBruce Perens 等人发起了 开源运动(Open Source Movement),创造了"开源"(Open Source)这一术语。

核心区别:

维度自由软件开源软件
哲学基础道德与自由实用与协作
关注重点用户权利开发方法论
商业友好度中立高度友好
核心组织FSFOSI
代表人物Richard StallmanEric S. Raymond

1.3.2 开源定义(Open Source Definition, OSD)

开源倡议组织(Open Source Initiative, OSI) 于 1998 年成立,基于 Debian 自由软件准则(Debian Free Software Guidelines, DFSG) 制定了 开源定义(OSD)

OSD 的 10 条标准:

  1. 自由再分发(Free Redistribution):许可证不得限制任何一方出售或赠送软件
  2. 源代码(Source Code):程序必须包含源代码,或提供公开获取源代码的途径
  3. 派生作品(Derived Works):许可证必须允许修改和派生作品
  4. 作者源代码的完整性(Integrity of The Author’s Source Code):可以限制以补丁形式分发修改
  5. 不得歧视个人或群体(No Discrimination Against Persons or Groups)
  6. 不得歧视领域(No Discrimination Against Fields of Endeavor)
  7. 许可证分发(Distribution of License):权利适用于所有再分发者
  8. 许可证不得特定于产品(License Must Not Be Specific to a Product)
  9. 许可证不得限制其他软件(License Must Not Restrict Other Software)
  10. 许可证必须技术中立(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 的目标高度重叠,但在哲学和实践上有明显分歧:

维度FSFOSI
核心关注用户自由开发方法论
对"自由"的强调极高中等
商业态度中立(不反对商业)积极拥抱
代表协议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 为什么许可证仍然重要

尽管开源已成为常态,但许可证合规性仍然面临挑战:

  1. 许可证种类繁多:80+ 种 OSI 批准的许可证
  2. 兼容性复杂:不同许可证之间可能存在冲突
  3. 供应链风险:一个 AGPL 依赖可能影响整个项目
  4. 法律不确定性:许多许可证未经法院充分检验
  5. 企业合规要求:收购、融资、上市都需要合规审计

1.7 本章小结

概念核心要点
自由软件基于四项基本自由,强调用户权利
开源软件基于 OSD 10 条标准,强调实用与协作
FSF维护 GNU 项目和 GPL 许可证
OSI审批和维护开源许可证列表
Copyleft利用版权法保障软件自由
开源供应链现代软件深度依赖开源组件

扩展阅读

  1. 《GNU 宣言》:https://www.gnu.org/gnu/manifesto.html
  2. 《大教堂与集市》:http://www.catb.org/esr/writings/cathedral-bazaar/
  3. 《自由软件,自由社会》(Richard Stallman 著)
  4. OSI 官方定义:https://opensource.org/osd
  5. 《开源之道》(Chris DiBona 等著)
  6. 《The Success of Open Source》(Steven Weber 著)
  7. 《Working in Public》(Nadia Eghbal 著)— 现代开源经济学分析

下一章:宽松许可证(Permissive Licenses)