**一、如何理解“开源许可协议**之间彼此兼容”
1.如果想把两个开源程序(或主要部分)合并成一个大的程序,需要得到某种开源许可才可以。如果两个开源程序的许可证都允许这么做,那么他们就是彼此兼容的,反之,则两种许可证彼此不兼容。
2.对有些许可证来说,两个开源程序的合并方式也会影响许可证是否兼容,例如A许可证允许把两个模块连接在一起,但是却不允许将两个代码合成一个模块;B许可证允许将两个代码合成一个模块,但不允许把两个模块连接在一起,如果两个程序合并方式是代码合并,则AB许可证彼此无法兼容。
3.当然如果只是将两个程序安装在一个系统中,则不需要许可证彼此兼容,因为安装到同一系统,并不属于合并成一个集合体程序。
二、GPL许可证与其他许可证的兼容问题
1.GPL不同版本之间
GPLv2 本身不兼容 GPLv3。不过,大多数使用 GPLv2 发布的软件也允许使用 GPL 的以后版本。这样的话,就能够按照 GPLv3 做合理的代码合并。
2.GPL与Apache
Apache v2兼容GPL v3,但不兼容 GPL v2,因为它的一些要求没有包含在 GPL v2 中。
3.GPL与BSD
修改版BSD(删除了原始版 BSD 许可证的广告条款之后的修改版许可证)与GPL兼容
4.GPL与MPL
MPL v2兼容 GNU GPL v2.0、GNU LGPL v 2.1、GNU AGPL v 3 以及所有这些许可证以后版本的说明。当你获得采用 MPL 2.0 许可证的作品,你可以把它和其他采用以上 GNU 许可证的作品组合在一起,创作 “较大作品”。
5.GPL与LGPL
(1)LGPLv2.1:兼容 GPLv2 和 GPLv3
(2)LGPLv3:GPLv3兼容LGPLv3,但LGPLv3 本身不兼容 GPLv2。不过,大多数使用 GPLv2 许可证的软件也允许使用 GPL 以后版许可证的条款。在这种情况下,可以使用 GPLv3 的条款来做代码合并。
6.GPL与AGPL
AGPL 和 GPLv2 不兼容。从技术上说,它也不严格兼容 GPLv3:无法随意将按照 AGPL 发布的软件按照 GPLv3 的条款输送或修改,反之也不行。不过,你可以把按照这两种许可证发布的独立模块或源代码合并为一个单一的项目。
7.GPL与EPL
如果原始贡献者将某些代码发布,并指明以 GNU GPL 版本 2 或以后版本作为次级许可证,那么这个代码就兼容 GPL 的这些版本。(对用户来说,这样做大致相当于把这些代码按照 EPL | GPL 双许可证发布。)不过,不带该指示条款的 EPL2 还是不兼容 GPL。
**除以上列明的兼容之外,其余许可证与GPL之间基本为不兼容,其余许可证之间是否兼容,需要结合许可协议具有约定进行分析,因为许可证本身是一个合同,只不过条款单方拟定,具体情况还需要结合合同条款**进行具体分析。