利用版权守护自由的方法
著佐权(copyleft)是对版权(copyright)一词的反转。它是 20 世纪 80 年代理查德·斯托曼和自由软件基金会(FSF)为 GNU 项目提出的概念,是利用著作权法防止软件自由消失的机制。版权所有者允许任何人使用、修改和分发,但附加一个条件:「分发基于此代码制作的东西时,也必须给予接收者同样的自由。」
宽松型许可证(MIT、BSD、Apache)没有这个条件。因此,有人修改宽松型代码后作为闭源产品出售也是可以的。著佐权阻止了这种走向,让改进后的版本也继续保持公开。由于这一性质,著佐权许可证也被称为「互惠(reciprocal)许可证」。
义务在「分发」时产生
著佐权的条件在把代码交给他人时触发。GPL-3.0 将此称为「convey(传递)」。
- 如果用 GPL 代码制作只在公司内部使用的工具,并且不对外分发,就不会产生公开源代码的义务。
- 以安装文件形式将应用提供给客户,或将其装入设备中销售,就属于分发。
- 只在服务器上运行、用户通过网页访问的情况,在 GPL 中不算分发。填补这一空白的是 AGPL。
按范围分为三类
强著佐权
以 GPL-2.0、GPL-3.0 为代表。与 GPL 代码结合后作为一个程序分发的整体都必须遵守 GPL 条件。FSF 的立场是,无论静态链接还是动态链接,只要构成一个程序就视为结合。
弱著佐权
这是缩小了义务范围的许可证。
- LGPL:库级别。只需公开库本身的修改部分,使用该库的程序只要遵守条件(可重新链接等)就可以不公开。
- MPL-2.0:文件级别。修改了适用 MPL 的文件,只需公开该文件。
- EPL-2.0:模块级别。公开 EPL 代码及其修改部分,独立模块可以使用其他许可证。
网络著佐权
AGPL-3.0 规定,仅仅通过网络提供修改后的程序,就负有向用户提供源代码的义务。它是为了填补网络服务时代 GPL 的空白而制定的。
| 许可证 | 公开范围 | 仅运营服务器时 |
|---|---|---|
| GPL-2.0 / GPL-3.0 | 结合后的整个程序 | 无义务 |
| LGPL-2.1 / LGPL-3.0 | 库及其修改部分 | 无义务 |
| MPL-2.0 | 修改过的 MPL 文件 | 无义务 |
| EPL-2.0 | EPL 代码及其修改部分(模块) | 无义务 |
| AGPL-3.0 | 结合后的整个程序 | 若为修改版则须提供源代码 |
常见误解
- 「著佐权禁止商业使用」 — 并不禁止。GPL 软件可以出售,也有许多公司通过付费支持和托管获得收入。它禁止的是剥夺接收者的自由。
- 「哪怕只看过一行 GPL 代码,我的代码也会变成 GPL」 — 许可证涉及的是作品的复制、修改和分发。看代码获得思路本身并不是著作权的对象。但如果实际上达到了照抄的程度,就可能被视为复制。
- 「违反许可证后,我的代码会自动变成 GPL」 — 违反许可证的后果通常是丧失权利和承担著作权侵权责任。你的代码并不会被强制公开,而是要在遵守条件和停止分发之间做出选择。
- 「著佐权代码绝对不能用于宽松型项目」 — 这句话的意思是:合并分发时,组合作品须遵守著佐权条件。还可以采用拆分为独立程序,或按条件链接弱著佐权库等方法。请参阅兼容性基础。
判断是否选择著佐权的问题
- 修改我的代码得到的成果进入闭源产品也没关系吗?
- 作为库被广泛采用更重要,还是改进能够回馈更重要?
- 主要使用形态是安装型,还是在服务器上运行的服务?
根据这三个问题的答案,选择向导会帮你缩小候选范围。更详细的对比请见宽松型 vs 著佐权。
本文为一般信息,不构成法律意见。重要决定请咨询专业人士。
参考来源
- GNU — What is Copyleft? — https://www.gnu.org/licenses/copyleft.html
- GNU 许可证常见问题 — https://www.gnu.org/licenses/gpl-faq.html
- GNU GPL v3.0 原文 — https://www.gnu.org/licenses/gpl-3.0.html