ADR 0002:许可证选择 —— AGPL-3.0-or-later
日期:2026-09-16 · 状态:已采纳(可逆:单一版权持有者可随时改授权)
背景
M0 初始用 MIT,只是沿用 anki_mpv 的设定,没有分析过。项目现在的形态是:一个在本机运行、 通过局域网向手机提供 Web 界面的学习服务,而产品分析里认定的市场空位正是"唯一拥有完整学习闭环 的产品(Migaku)是闭源订阅制"。许可证需要和这两点对齐。
同类项目的实际选择
| 形态 | 项目 | 许可证 |
|---|---|---|
| 桌面采集工具 | GameSentenceMiner、LunaTranslator、YomiNinja、jidoujisho | GPL-3.0 |
| 浏览器扩展 / 播放器脚本 | Yomitan、mpvacious | GPL-3.0 |
| 带网络界面的学习应用 | Anki、Kamite、jimaku | AGPL-3.0 |
| 纯前端挖句工具 | asbplayer、lute-v3 | MIT |
GPL 家族是这个领域的主流;其中自己提供网络服务的那一类都选了 AGPL。
决策
代码采用 AGPL-3.0-or-later。
理由:
- 形态匹配。 本应用的手机端是通过网络访问桌面端的 PWA,AGPL 第 13 条("通过计算机网络与之 远程交互的用户有权获得源码")正好覆盖这种拓扑;GPL-3.0 对托管服务不产生义务。
- 保护差异化。 项目的差异点是"开放的学习闭环"。GPL 允许他人把它改造成闭源 SaaS 再卖订阅, 那正是我们要提供替代方案的那种产品;AGPL 关上这道门。
- 与最近的同类一致。 Anki 是最接近的参照(本地应用 + 网络同步 + 生态插件),它用 AGPL-3.0。
- 依赖没有冲突。 后端与前端依赖全部是 MIT / BSD / Apache-2.0,单向兼容 AGPL。
数据与代码分开授权
JMdict 系列数据属于 EDRDG,采用 CC BY-SA 4.0。EDRDG 明确说明使用这些文件的软件不必采用任何 开源许可证,但要求在文档与程序的相关界面中致谢并给出出处。因此:
- 数据的授权写在
NOTICE.md,与代码许可证分开; - 仓库内
backend/kotoba/data/jmdict_fixture.json是 JMdict 的派生子集,随之为 CC BY-SA 4.0; - 致谢出现在 README 与应用内 设置 → 词典 一节(此前缺失,本次补上,这是一个真实的合规缺口)。
代价与退出路径
- AGPL 会让一部分企业用户和贡献者却步;本项目面向个人学习者,影响有限。
- 若日后希望被更广泛地集成,改为 GPL-3.0(与领域主流一致)只需替换
LICENSE与少量引用; 作者是唯一版权持有者,也保留双重授权或商业授权的权利。
