开源协议¶
MIT License¶
MIT License 是一种非常宽松的许可协议,允许使用者自由地使用、修改和分发软件。它是最常用的开源许可证之一,广泛应用于各种软件项目中。
许可内容¶
- 使用者可以自由地使用、修改和分发软件。
应用场景¶
基本上只要是不需要太严格限制使用者行为的软件,都可以使用 MIT License。如果没有特别的需求,一般推荐使用 MIT License,因为它简单宽松。
Apache License 2.0¶
Apache License 2.0 与 MIT License 类似,也是宽松的许可协议。二者的区别在于前者的条款更长、更详细,结构化且包含更多具体规定。
许可内容¶
-
软件使用、修改和分发协议基本与 MIT License 相同,但条款更长、更详细,结构化且包含更多具体规定。
-
核心要求是保留版权声明和许可文本,还包括专利授权、免责条款和贡献者义务等。
应用场景¶
与 MIT 的简洁相比,Apache License 2.0 提供了更清晰的法律框架,适合需要明确保护的大型项目或企业使用。
GNU GPLv3 & AGPLv3¶
GPLv3¶
GNU GPLv3 是 GNU General Public License 的第三个版本,是 GNU 通用公共许可证的缩写。它是一种Copyleft许可证,要求所有修改和分发都必须包含原始许可证文本。
简单来说,GPLv3 同样允许人们几乎可以随心所欲地使用应用该协议的项目,但禁止分发闭源版本。
AGPLv3¶
GNU AGPLv3 则在 GPLv3 的基础上增加了网络服务的限制,旨在确保通过网络提供服务的软件也能触发开源义务,传染性比 GPLv3 更严格。
简单来说,AGPLv3 在 GPLv3 的基础上要求当修改版本用于提供网络服务时,必须履行开源义务。
应用场景¶
如果关心分享改进成果,或者项目就是以促进开源为目的而创建的,那么就可以考虑使用这两个协议。
二者对比案例¶
以一个web插件与应用了该插件的网站为例:
-
如果该插件是 GPLv3+:
-
构建出来的文档和网站 可以不开源
-
但如果项目直接引用或修改插件源码,则必须开源
-
-
如果该插件是 AGPLv3:
-
若插件的代码在网站运行时被用户使用(例如前端 JS),那么网站源码必须开源;
-
若它只是构建工具(构建后不包含 AGPL 代码),则仍可闭源。
-
| 情况 | GPLv3 插件 | AGPL 插件 |
|---|---|---|
| 仅用于构建(离线使用) | ✅ 可闭源 | ✅ 可闭源 |
| 引用了插件源码(集成或修改) | ❌ 必须开源 | ❌ 必须开源 |
| 插件代码在网页运行时被用户访问(例如 JS 部分) | ✅ 可闭源 | ❌ 必须开源(触发网络条款) |
非软件许可证¶
对我而言,最常用的的非软件许可证应该是用于数据、文档的许可证。
需要注意的是,任何开源软件许可证或媒体开放许可证(见上文)同样适用于软件文档,软件与其对应文档可采用不同的协议。
CC-BY-4.0 & CC-BY-NC-4.0¶
二者都来自 Creative Commons(知识共享组织),都是知识共享许可协议。