深度GIT开源

开源许可证怎么选:MIT、Apache-2.0、GPL、AGPL 的区别

「开源」不等于「随便用」。同样一行代码,换个许可证,你的商用空间可能从「完全自由」变成「必须整体开源」。这篇把常见许可证讲清楚,并给出可以直接照做的选择路径。

一、先分清三类许可证

宽松型(Permissive):MIT、Apache-2.0、BSD。核心要求只有一条——保留原作者的版权声明,剩下的随你怎么用,包括闭源商用。

弱著佐权(Weak Copyleft):LGPL、MPL-2.0。只要求「被修改的那部分」开源,你自己的代码可以闭源。适合做库和组件的项目。

强著佐权(Strong Copyleft):GPL、AGPL。只要你的作品构成了「衍生作品」,整个作品都得按同样的许可证开源。AGPL 更进一步,把「通过网络提供服务」也算作分发。

二、常见许可证对照表

许可证类型核心义务适合场景开源范围
MIT极宽松保留版权声明即可,可闭源商用几乎所有场景无
Apache-2.0宽松保留声明,修改需注明,含专利授权商用、需要专利保护的项目无
BSD-3-Clause宽松保留声明,禁止用作者名背书商用、学术项目无
MPL-2.0弱著佐权修改的文件需开源,可与闭源代码共存想在开源与闭源之间折中仅修改文件
LGPL-3.0弱著佐权动态链接可闭源,修改库本身需开源库/组件类项目库的修改
GPL-2.0/3.0强著佐权衍生作品必须同样以 GPL 开源愿意整体开源的项目整个衍生作品
AGPL-3.0最强著佐权网络提供服务也视为分发,需开源能接受开源的 SaaS整个服务端代码
Unlicense / CC0公共领域放弃著作权,随便用工具、示例代码无

三、按你的场景选

做一个商业闭源产品

只用 MIT、Apache-2.0、BSD 的项目最安全。GPL 类项目要谨慎:如果你修改了它并分发,整个作品都可能被要求开源。LGPL 的库可以动态链接使用,但别把它的代码拷进自己的源码里。

做 SaaS,不对外分发软件

GPL 通常不触发(因为没有「分发」),但 AGPL 会——AGPL 明确把网络交互视为分发。如果你的服务端用了 AGPL 组件,理论上需要向用户提供完整源码。这一点在选型时最容易被忽略。

自己写一个项目要开源

想让别人用得最放心,选 MIT 或 Apache-2.0;涉及专利,优先 Apache-2.0(它包含明确的专利授权条款)。想让衍生作品也保持开源,用 GPL-3.0。做基础设施、又希望云厂商的改动回流社区,AGPL 是常见选择。

四、三个容易踩的坑

五、怎么快速确认一个项目的许可证

GitHub 仓库首页右侧会显示识别出的许可证名称,点进去能看到完整条款。本站的项目详情页也标注了每个项目的许可证(取自 GitHub API 的 SPDX 标识),可以先做一轮粗筛。

相关阅读:如何挑选一个值得长期使用的开源项目 · 浏览全部开源项目