---
title: 再谈自由软件
abbrlink: 945d7e3a
date: "2025-09-17 17:25:25"
updated: "2025-09-17 18:31:24"
desc: 当我们第一次接触到自由软件的概念时，往往会被其“自由”二字所吸引，认为自由软件就是可以随意使用、修改和分发的软件。然而，随着对自由软件的深入了解，我们会发现自由软件的“自由”不仅仅是使用上的自由，更涉及到用户的权利和义务。但这些知识的学习来源似乎都不是那么正统？一个亟待解决的问题是，有多少人真正地在GNU官网上阅...
categories:
    - 自由软件
tags:
    - 自由软件
    - 开源软件
    - 软件许可
    - gnu
---

## 前言

当我们第一次接触到自由软件的概念时，往往会被其“自由”二字所吸引，认为自由软件就是可以随意使用、修改和分发的软件。然而，随着对自由软件的深入了解，我们会发现自由软件的“自由”不仅仅是使用上的自由，更涉及到用户的权利和义务。但这些知识的学习来源似乎都不是那么**正统**？一个亟待解决的问题是，有多少人真正地在GNU官网上阅读学习过自由软件的四大自由？又有多少人真正理解了这些自由的含义和重要性？而不被那些营销号、自媒体、甚至是一些大公司的宣传所误导？是的，我回忆了一下，我确实没怎么看过，于是我打算**深入了解**一下。

### 注意⚠️

:::warning

本博文中若出现来自 GNU 官网的内容，均为**逐字引用**,**未作任何修改或演绎**，并已在引用处明确标注原文链接与原作者。该部分内容以 CC BY-ND 4.0 协议发布，仅用于非商业目的。本博整体仍以 CC BY-NC-SA 4.0 协议发布，不因引用而改变。

:::

## 自由软件的四大自由

如果程序的用户拥有以下四个基本自由，则该程序是自由软件： [^1] (来源: [https://www.gnu.org/philosophy/free-sw.html](https://www.gnu.org/philosophy/free-sw.html))

- 随意运行程序的自由，可用于任何目的（自由 0）。
- 研究程序如何工作的自由，并对其进行更改以使其按照您的意愿进行计算（自由 1）。访问源代码是此项的前提条件。
- 重新分发副本的自由，以便您可以帮助他人（自由 2）。
- 向他人分发修改版本的副本的自由（自由 3）。通过这样做，您可以让整个社区有机会从您的更改中受益。访问源代码是此项的前提条件。

[^1]: 它们被编号为 0、1、2 和 3 的原因是历史原因。大约在 1990 年，有三个自由，编号为 1、2 和 3。然后我们意识到需要明确提及运行程序的自由。它显然比其他三个更基本，所以它应该在它们之前。与其重新编号其他自由，我们将其设为自由 0。来源：[https://www.gnu.org/philosophy/free-sw.html](https://www.gnu.org/philosophy/free-sw.html)

很多人总是狭义化地理解自由软件，认为似乎只有GPL,LGPL,AGPL等**Copyleft**许可证才是自由软件，而MIT,Apache,BSD等**Permissive**许可证就不是自由软件。其实不然，如果你仔细查看那四大自由，你会发现很多开源协议其实完全符合这四大自由的要求。

## 观念改观

若是要彻底地从狭义化的思想中解放出来，那还得进一步查看[GNU官网](https://www.gnu.org/licenses/license-list.html)上对各种许可证的评价。GNU官网将许可证分为三类：1.兼容 GPL 的自由软件许可证 2.不兼容 GPL 的自由软件许可证 3.非自由软件许可证

## 常见开源许可证的兼容性

基于GNU许可证列表页面（https://www.gnu.org/licenses/license-list.html）的分析，GNU将许可证分为以下类别：

- **GPL兼容的自由软件许可证**：这些许可证授予用户四大自由（运行、复制、分发、修改和分发修改版本），并与GNU GPL兼容。
- **GPL不兼容的自由软件许可证**：这些是自由软件许可证，但由于某些条款（如专利条款、选择法条款或分发限制）与GPL不兼容。
- **非自由软件许可证**：这些不授予四大自由中的全部，或有额外限制，使其不符合自由软件标准。

### GPL兼容的自由软件许可证（为什么兼容）

这些许可证被GNU评为自由软件，并与GPL兼容，因为它们允许用户自由使用、修改和分发软件，而不添加与GPL冲突的条款。它们通常是宽松的（permissive）许可证，鼓励开源协作。

- **Apache License, Version 2.0**：
    - **为什么兼容**：它授予用户四大自由，包括专利终止条款（如果有人因专利起诉，许可证自动终止）。这与GPL兼容，因为它不限制GPL下的代码组合。Apache 2.0 被GNU推荐用于大型程序，因为它防止“专利背叛”（patent treachery），即专利持有者通过许可证诱导用户侵权。
    - **常见用途**：Android、Hadoop 等项目。

- **MIT License (Expat License)**：
    - **为什么兼容**：这是一个简短的宽松许可证，明确授予复制、修改和分发自由。它不添加GPL冲突的条款，如专利或广告要求。GNU认为它是小型程序的良好选择，但对于大型程序，更推荐Apache 2.0 以避免专利风险。
    - **常见用途**：Node.js、jQuery 等。

- **Modified BSD License (3-clause BSD)**：
    - **为什么兼容**：它移除了原始BSD的广告条款，授予四大自由。与GPL兼容，但GNU建议避免使用“BSD License”一词，以防混淆为非自由的原始BSD。
    - **常见用途**：FreeBSD 内核部分。

- **ISC License**：
    - **为什么兼容**：类似于MIT，但更简洁。授予四大自由，与GPL兼容。GNU鼓励使用它作为宽松许可证的替代品。
    - **常见用途**：OpenBSD 项目。

- **X11 License**：
    - **为什么兼容**：授予四大自由，包含X Consortium名称的使用条款（不构成重大问题）。GNU推荐用于小型程序。
    - **常见用途**：X Window System。

这些许可证兼容的原因是它们不添加GPL禁止的限制，如强制专利许可或分发费用。

### GPL不兼容的自由软件许可证

这些是自由软件许可证，但由于特定条款（如专利终止、选择法或分发限制）与GPL不兼容。GNU不推荐在GPL项目中使用它们，因为它们可能导致法律冲突。

- **Apache License, Version 1.1**：
    - **为什么不兼容**：它有强力禁止使用Apache相关名称的条款，这与GPL的兼容性要求冲突。GNU建议升级到Apache 2.0。

- **Original BSD License (4-clause BSD)**：
    - **为什么不兼容**：包含“令人讨厌的BSD广告条款”（要求在广告中提及原始作者），这违反GPL的兼容性。GNU建议使用Modified BSD。

- **Common Public License (CPL)**：
    - **为什么不兼容**：弱copyleft和选择法条款使其与GPL不兼容。GNU不推荐用于新项目。

- **Eclipse Public License (EPL)**：
    - **为什么不兼容**：类似于CPL，有弱copyleft和专利终止条款。GNU建议避免。

- **Mozilla Public License (MPL) 1.1**：
    - **为什么不兼容**：文件级copyleft与GPL冲突（不能自由链接GPL和MPL模块）。MPL 2.0 通过间接兼容性有所改进，但仍不完全兼容。

这些不兼容的原因通常是条款过于严格或与GPL的copyleft精神冲突。

### 非自由软件许可证

这些许可证不授予四大自由中的全部，或有额外限制，使其不符合自由软件标准。GNU强烈反对使用它们，因为它们剥夺用户权利。

- **Anti-996 License**：
    - **为什么非自由**：它限制用户使用软件的目的（禁止996工作制，即长时间工作），这违反自由0（随意运行软件的自由）。GNU认为这剥夺了用户的权利，即使出于善意，也不应在软件许可证中添加此类限制。
    - **建议**：GNU建议避免此类许可证，并开发自由替代品。

- **Anti-Capitalist Software License**：
    - **为什么非自由**：它仅向某些组织（非资本主义实体）授予四大自由，而非所有人。这违反了自由软件的核心原则，即所有用户都应享有平等权利。GNU认为这赋予了过多的权力给许可证制定者。
    - **建议**：GNU敦促拒绝此类软件，并开发自由替代品。

- **其他常见非自由协议**：
    - **No License**：代码无许可证意味着用户无权复制或修改（除非明确置于公共领域）。这违反四大自由。
    - **Commons Clause**：禁止销售副本或商业使用，违反自由2和3。
    - **JSON License**：添加“用于善而非恶”的条款，限制使用目的，违反自由0。
    - **TrueCrypt License 3.0**：有条件限制分发和使用，违反四大自由。

## 结论

一个很显然的事实是，尽管绝大部分**开源许可**都未标榜自己是**自由软件许可**,但绝大部分**开源软件**事实上都是**自由软件**,所以当你以MIT协议开源的时候，你可以自豪骄傲地说**这是开源软件，更是自由软件！**


---

**作者：**xingwangzhe

**本文链接：**[https://xingwangzhe.fun/posts/945d7e3a/](https://xingwangzhe.fun/posts/945d7e3a/)

本文采用[知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议](https://creativecommons.org/licenses/by-nc-sa/4.0/)进行许可。