Skip to content

ADR 0002:许可证选择 —— AGPL-3.0-or-later

日期:2026-09-16 · 状态:已采纳(可逆:单一版权持有者可随时改授权)

背景

M0 初始用 MIT,只是沿用 anki_mpv 的设定,没有分析过。项目现在的形态是:一个在本机运行、 通过局域网向手机提供 Web 界面的学习服务,而产品分析里认定的市场空位正是"唯一拥有完整学习闭环 的产品(Migaku)是闭源订阅制"。许可证需要和这两点对齐。

同类项目的实际选择

形态项目许可证
桌面采集工具GameSentenceMiner、LunaTranslator、YomiNinja、jidoujishoGPL-3.0
浏览器扩展 / 播放器脚本Yomitan、mpvaciousGPL-3.0
带网络界面的学习应用AnkiKamitejimakuAGPL-3.0
纯前端挖句工具asbplayer、lute-v3MIT

GPL 家族是这个领域的主流;其中自己提供网络服务的那一类都选了 AGPL。

决策

代码采用 AGPL-3.0-or-later

理由:

  1. 形态匹配。 本应用的手机端是通过网络访问桌面端的 PWA,AGPL 第 13 条("通过计算机网络与之 远程交互的用户有权获得源码")正好覆盖这种拓扑;GPL-3.0 对托管服务不产生义务。
  2. 保护差异化。 项目的差异点是"开放的学习闭环"。GPL 允许他人把它改造成闭源 SaaS 再卖订阅, 那正是我们要提供替代方案的那种产品;AGPL 关上这道门。
  3. 与最近的同类一致。 Anki 是最接近的参照(本地应用 + 网络同步 + 生态插件),它用 AGPL-3.0。
  4. 依赖没有冲突。 后端与前端依赖全部是 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 与少量引用; 作者是唯一版权持有者,也保留双重授权或商业授权的权利。

代码 AGPL-3.0-or-later · 词典数据 © EDRDG,CC BY-SA 4.0