开源协议精讲 / 第五章:公共领域与极简许可
第五章:公共领域与极简许可
引言
有些开发者不想被任何许可证条款束缚——他们想让代码完全自由,不受任何限制。公共领域(Public Domain)和极简许可就满足了这种需求:将代码交给人类公共财产,任何人可以为任何目的使用它。
但这背后有复杂的法律问题:不同国家对"公共领域"的理解不同,放弃版权在某些法域甚至不被允许。
5.1 公共领域的概念
5.1.1 什么是公共领域?
公共领域(Public Domain)是指不受版权保护、任何人都可以自由使用的创作成果。
进入公共领域的常见方式:
| 方式 | 说明 |
|---|---|
| 版权过期 | 版权保护期限届满 |
| 版权放弃 | 作者主动放弃版权 |
| 不可版权 | 某些创作不受版权保护(如政府文件) |
| 作者声明 | 作者明确将作品放入公共领域 |
5.1.2 公共领域的法律效力
| 法域 | 放弃版权的法律效力 | 说明 |
|---|---|---|
| 美国 | ✅ 有效 | 可以主动放弃版权 |
| 英国 | ⚠️ 存疑 | 部分学者认为可以 |
| 德国 | ❌ 不可 | 版权不可放弃(人身权) |
| 法国 | ❌ 不可 | 版权不可放弃 |
| 日本 | ⚠️ 存疑 | 法律不明确 |
| 中国大陆 | ⚠️ 存疑 | 实践中常见,但法律不明确 |
关键问题:在版权不可放弃的法域,“公共领域奉献"可能被解释为最宽泛的许可证授权。
5.2 Unlicense
5.2.1 概述
Unlicense 是最常用的公共领域奉献工具之一,试图在全球范围内将代码放入公共领域。
| 项目 | 内容 |
|---|---|
| SPDX 标识 | Unlicense |
| OSI 批准 | ✅ 是 |
| 发布年份 | 2010 |
| 使用项目 | 约 200,000+ GitHub 仓库 |
5.2.2 许可证全文
This is free and unencumbered software released into the public domain.
Anyone is free to copy, modify, publish, use, compile, sell, or
distribute this software, either in source code form or as a compiled
binary, for any purpose, commercial or non-commercial, and by any
means.
In jurisdictions that recognize copyright laws, the author or authors
of this software dedicate any and all copyright interest in the
software to the public domain. We make this dedication for the benefit
of the public at large and to the detriment of our heirs and
successors. We intend this dedication to be an overt act of
relinquishment in perpetuity of all present and future rights to this
software under copyright law.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.
For more information, please see <https://unlicense.org/>
5.2.3 Unlicense 的双层结构
Unlicense 采用了精心设计的双层结构:
第一层:公共领域奉献
"released into the public domain"
→ 尝试在法律上将代码放入公共领域
第二层:后备许可证
"In jurisdictions that recognize copyright laws..."
→ 在不承认公共领域奉献的法域,提供最宽泛的许可
这种设计使 Unlicense 在全球范围内都有效。
5.2.4 与其他许可证的兼容性
Unlicense 代码可以与任何其他许可证的代码组合使用:
| 组合 | 是否允许 |
|---|---|
| Unlicense + MIT | ✅ |
| Unlicense + GPL | ✅ |
| Unlicense + Apache-2.0 | ✅ |
| Unlicense + AGPL | ✅ |
原因很简单:公共领域代码没有附加任何限制,不会引入兼容性问题。
5.3 CC0(Creative Commons Zero)
5.3.1 概述
CC0(Creative Commons Zero)是 Creative Commons 组织推出的公共领域奉献工具,比 Unlicense 更具法律严谨性。
| 项目 | 内容 |
|---|---|
| SPDX 标识 | CC0-1.0 |
| OSI 批准 | ❌ 未申请(但被广泛认可) |
| 发布年份 | 2009 |
| 使用项目 | SQLite、Node.js 生态、许多科学数据集 |
5.3.2 CC0 的三层法律结构
CC0 是目前法律设计最精巧的公共领域工具,采用三层结构:
┌─────────────────────────────────────────────────┐
│ 第一层:公共领域奉献 │
│ 在承认公共领域奉献的法域,直接将作品放入公共领域 │
├─────────────────────────────────────────────────┤
│ 第二层:后备许可证 │
│ 在不承认公共领域奉献的法域,授予尽可能宽泛的许可 │
├─────────────────────────────────────────────────┤
│ 第三层:后备后备许可 │
│ 如果前两层都不适用,授予不可撤销的使用权 │
└─────────────────────────────────────────────────┘
5.3.3 CC0 vs Unlicense
| 维度 | CC0 | Unlicense |
|---|---|---|
| 法律严谨性 | 高(三层结构) | 中(双层结构) |
| OSI 批准 | ❌ | ✅ |
| 国际适用性 | 极好 | 好 |
| 文本长度 | 长(含法律文本) | 短 |
| 科学数据 | ✅ 首选 | 不常用 |
| 软件代码 | ✅ | ✅ |
| 创意作品 | ✅ | 不适用 |
5.3.4 CC0 的注意事项
⚠️ CC0 的专利问题
CC0 明确不授予专利权。许可证文本中包含:
“No trademark or patent rights held by Affirmer are waived, abandoned, surrendered, licensed or otherwise affected by this document.”
如果你的代码可能涉及专利,CC0 可能不是最佳选择。
⚠️ CC0 与道德权利
在某些法域(如法国、德国),作者拥有不可放弃的道德权利(Moral Rights),包括:
- 署名权
- 保护作品完整权
CC0 不影响这些道德权利。
5.4 WTFPL
5.4.1 概述
WTFPL(Do What The F*** You Want To Public License)是一个戏谑性的公共领域许可证。
| 项目 | 内容 |
|---|---|
| SPDX 标识 | WTFPL |
| OSI 批准 | ❌ 未申请 |
| 发布年份 | 2000 |
| 当前版本 | v2 |
5.4.2 许可证全文
DO WHAT THE F*** YOU WANT TO PUBLIC LICENSE
Version 2, December 2004
Copyright (C) 2004 Sam Hocevar <sam@hocevar.net>
Everyone is permitted to copy and distribute verbatim or modified
copies of this license document, and changing it is allowed as long
as the name is changed.
DO WHAT THE F*** YOU WANT TO PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. You just DO WHAT THE F*** YOU WANT TO.
5.4.3 WTFPL 的法律地位
| 维度 | 分析 |
|---|---|
| 有效性 | ⚠️ 存疑——未经法律检验 |
| OSI 批准 | ❌ |
| 企业使用 | ❌ 不建议 |
| 缺少免责条款 | ⚠️ 可能带来法律风险 |
| 缺少版权声明格式 | ⚠️ 不规范 |
不建议使用:WTFPL 缺少标准的免责条款和版权声明格式,在商业环境中可能带来法律风险。建议使用 CC0 或 Unlicense 替代。
5.5 各国法律差异
5.5.1 版权放弃的国际比较
版权可放弃吗?
├── 是 → 使用 Unlicense/CC0
│ 美国、英国、澳大利亚...
│
├── 不确定 → 使用 CC0(三层保护)
│ 中国、日本、韩国...
│
└── 否 → 不能真正放入公共领域
德国、法国、意大利...
→ 使用最宽泛的许可证(如 MIT)
5.5.2 特殊法域分析
美国:
- 公共领域奉献被广泛认可
- CC0 和 Unlicense 都有法律效力
- 政府作品自动进入公共领域
欧盟(德国为例):
- 版权(Urheberrecht)不可转让、不可放弃
- 但可以授予无限许可
- CC0 的后备条款在这种法域生效
中国:
- 法律未明确规定版权放弃
- 实践中广泛使用 CC0
- 一般被视为有效的许可声明
日本:
- 类似德国,版权不可完全放弃
- CC0 的后备条款适用
- 著作権放棄的有效性存疑
5.5.3 推荐策略
| 目标法域 | 推荐工具 | 理由 |
|---|---|---|
| 仅美国 | CC0 或 Unlicense | 法律效力明确 |
| 全球(包括大陆法系) | CC0 | 三层结构最安全 |
| 全球(软件项目) | MIT | 法律确定性最高 |
| 科学数据 | CC0 | 学术界首选 |
5.6 公共领域的实际应用
5.6.1 SQLite 的选择
SQLite 是最著名的使用公共领域奉献的软件项目:
| 项目 | 信息 |
|---|---|
| 名称 | SQLite |
| 许可证 | Public Domain(通过 CC0 实现) |
| 使用量 | 全球数十亿设备 |
| 理由 | 最大限度的使用自由 |
SQLite 作者 D. Richard Hipp 的解释:
“我们选择公共领域奉献是因为我们希望 SQLite 能在任何地方被任何人使用,没有任何限制。包括嵌入到商业产品中,不需要任何归属声明。”
5.6.2 科学数据与 CC0
在科学数据领域,CC0 是事实标准:
- Figshare:学术数据共享平台推荐 CC0
- Zenodo:CERN 运营的数据仓库支持 CC0
- Dryad:科学数据仓库首选 CC0
原因:科学数据需要最大化的可重用性,任何归属要求都会阻碍数据整合和再分析。
5.6.3 Node.js 生态中的 CC0
许多 Node.js 包使用 CC0:
# 在 npm 中搜索 CC0 包
npm search --license=CC0-1.0
5.7 公共领域的风险与注意事项
5.7.1 风险清单
| 风险 | 严重性 | 缓解措施 |
|---|---|---|
| 法律效力不确定 | 中 | 使用 CC0(三层保护) |
| 缺少免责条款 | 高 | 使用 CC0 或 Unlicense(含免责) |
| 专利问题 | 高 | 如涉及专利,使用 Apache 2.0 |
| 道德权利 | 低 | 在大陆法系国家注明放弃意愿 |
| 企业合规 | 中 | 提供 CC0 声明作为法律依据 |
5.7.2 何时不应使用公共领域奉献
- ❌ 涉及专利的发明
- ❌ 需要强制署名的场景
- ❌ 企业核心知识产权
- ❌ 法律要求特定许可证格式的场景
5.7.3 何时适合使用公共领域奉献
- ✅ 工具和辅助代码
- ✅ 示例代码和教程
- ✅ 科学数据和数据集
- ✅ 算法实现
- ✅ 测试数据和 mock 数据
- ✅ 你希望被最广泛使用的代码
5.8 与开源许可证的关系
5.8.1 OSI 的立场
OSI 批准了 Unlicense 为开源许可证,但未批准 CC0(因 CC0 未申请)。
注意:OSI 批准不等于法律效力,未批准也不等于无效。
5.8.2 FSF 的立场
FSF 认为:
“将软件放入公共领域是将其变为自由软件的一种方式。但我们通常建议使用 copyleft 许可证,因为 copyleft 保护所有用户的自由。”
FSF 建议:
- 如果想放入公共领域 → 使用 CC0
- 如果想保护自由 → 使用 GPL
5.8.3 公共领域代码与 GPL 的混合
公共领域代码可以与任何许可证的代码混合:
公共领域代码(CC0) + GPL 代码 = 可以以 GPL 发布
原因:公共领域代码没有附加任何限制,GPL 的传染性仍然适用于组合作品中的 GPL 部分。
5.9 本章小结
| 工具 | 适用场景 | 法律严谨性 | OSI 批准 |
|---|---|---|---|
| CC0 | 科学数据、通用代码 | 极高 | ❌(未申请) |
| Unlicense | 通用软件代码 | 中高 | ✅ |
| WTFPL | 个人项目 | 低 | ❌ |
| MIT(替代方案) | 需要法律确定性 | 高 | ✅ |
选型建议:
- 需要最大法律保护 → CC0
- 纯软件项目 → Unlicense
- 法律效力存疑 → MIT(退而求其次)
- 企业环境 → 避免公共领域,使用 MIT 或 Apache 2.0
扩展阅读
- CC0 全文:https://creativecommons.org/publicdomain/zero/1.0/legalcode
- Unlicense 官网:https://unlicense.org/
- Creative Commons - CC0 常见问题:https://creativecommons.org/faq/#cc0
- SQLite 版权说明:https://www.sqlite.org/copyright.html
- SPDX - CC0:https://spdx.org/licenses/CC0-1.0
- Open Data Commons - PDDL:http://opendatacommons.org/licenses/pddl/
上一章:弱 Copyleft 许可证 下一章:知识共享协议