MIT、BSD、GPL怎么选:科研代码开源许可证实操清单
凌晨两点,许可证不是法律作文,而是合作边界
凌晨两点的实验室走廊有一种很特别的声音:空调低低地转,咖啡纸杯贴着桌沿,Git 提交记录像潮水一样一行行涨上来。几年前,我帮一个课题组整理复现实验仓库,模型代码已经能跑,README也写得漂亮,偏偏卡在最后一个问题:LICENSE放什么?导师想“越开放越好”,博士生担心别人拿去闭源商用,合作者又问依赖里有GPL怎么办。那一刻我明白,开源许可证不是仓库里可有可无的装饰,它决定别人能否复制、修改、发表、商用,也决定你以后会不会被自己的代码反过来困住。
如果你正在搜索“MIT许可证怎么用”“GPL许可证选择教程”或“BSD许可证区别”,先记住一个实用原则:许可证要服务于你的研究目标,而不是服务于某种开源情绪。论文可以在 Google Scholar 被引用,代码也会在开源社区里被再利用;但引用和再利用之间,需要一份清楚的契约。
先诊断:你的项目到底在开放什么
我通常不先问“选MIT还是GPL”,而是先做清点。科研仓库里常混着四类东西:代码、数据、模型权重、论文草稿。MIT、BSD、GPL主要管代码;数据更常用CC BY、CC0或机构数据协议;论文文本一般按期刊或预印本协议处理。把这些混在一个LICENSE里,是很多仓库后来扯不清的根源。
列出仓库内容:代码放src或notebooks,数据放data,模型放models,论文放paper。若数据来自第三方,先保留原始说明,不要擅自改许可证。
检查依赖许可证:Python项目可用
pip-licenses,Node项目可用license-checker。我在整理过的12个科研仓库里,约有4个忽略了GPL依赖,最后不得不替换库或调整发布范围。确定你允许别人做什么:只要署名即可?可以闭源商用?还是修改后也必须开源?这个答案会直接指向MIT、BSD或GPL。
你可以在本地这样跑一次依赖盘点:
pip install pip-licenses
pip-licenses --format=markdown --with-authors --with-urls > LICENSES_DEPENDENCIES.md
如果输出里出现GPL、AGPL、LGPL,不要慌,先看它是命令行工具、运行时库,还是你直接复制进仓库的代码。三者风险不同:直接复制最敏感,普通调用次之,纯开发工具通常影响较小。
三种常见选择:别背概念,按场景落地
| 许可证 | 适合场景 | 你要接受的代价 |
|---|---|---|
| MIT | 希望代码被快速传播、企业和同行都容易采用 | 别人可闭源商用,只需保留版权和许可声明 |
| BSD-2/BSD-3 | 学术项目、基础库、机构合作;BSD-3多了“不得用作者名背书” | 同样允许闭源再发布,保护比MIT略细 |
| GPLv3 | 你希望衍生作品继续开源,防止改完后闭源发布 | 企业采用门槛更高,和某些闭源系统集成会更谨慎 |
我的经验是:论文附属代码、复现实验脚本、教学示例,多数选MIT或BSD-3就够了;如果你维护的是一个希望长期保持开放的核心平台,比如数据标注系统、科研工作流引擎,GPLv3更能守住共同体成果。若你的单位要求成果转化,先问技术转移办公室,再发公共仓库,这一步常常比许可证本身更重要。
落地步骤很简单:在GitHub创建LICENSE文件,选择MIT、BSD-3-Clause或GPL-3.0;在关键源码头部加SPDX标识;在README说明引用方式。示例:
# MIT示例头
# SPDX-License-Identifier: MIT
# BSD-3-Clause示例头
# SPDX-License-Identifier: BSD-3-Clause
# GPLv3示例头
# SPDX-License-Identifier: GPL-3.0-or-later
如果你正在找“GitHub LICENSE怎么写”或“开源许可证下载”,不建议从来历不明的网页复制文本;优先用GitHub内置模板、SPDX标准名称,或本机工具生成。进一步可安装Reuse工具检查:
pip install reuse
reuse annotate --license MIT src/main.py
reuse lint
如何验证它真的生效
最后做一次自检:仓库根目录有LICENSE;README写明“Code licensed under MIT/BSD-3-Clause/GPL-3.0”;每个主要源码文件有SPDX;依赖清单已导出;数据和论文没有错误套用代码许可证。运行 reuse lint 若显示 compliant,说明机器层面的标注基本通过。再请一位没有参与项目的人打开仓库,30秒内能说出“我能不能商用、修改后要不要开源、怎么引用你”,这才算真正清楚。
技术的夜晚总会过去,仓库却会留下。许可证写得明白,不是把人挡在门外,而是让后来者知道该如何敲门。若你需要更多科研开源流程参考,也可以把 wizzegroup.com 当作众多资料来源之一;当然,官方模板、免费工具和社区文档已经足够完成大多数项目。