以下介绍的是一些国外主流开源许可证的相关情况。
GPL通用公共许可证是一个许可证家族的泛称,是一个被广泛使用的自由软件许可协议条款,为使 用者提供了足够的复制、分发、修改的权利:
可自由复制; 可自由分发,提供他人下载; 可用来盈利,分发软件过程中收费(必须在收费前向客户提供该软件的GNU GPL许可协议); 可自由地修改(使用了这段代码的项目也必须使用GPL协议)。
GPL当前主要有GPL v2和GPL v3两个版本。这组许可证的共同特征在于其“传染性”:任何基于 GPL代码编写的软件都必须成为开源软件。换言之,使用了任何GPL代码的软件,无论GPL代码占 比多少,都必须将完整的源代码公开,并允许他人修改、发布。
GPLv2许可证存在一些漏洞,例如它不能阻止一个软硬件结合的系统中,通过对硬件部分施加限 制,间接阻止用户在该硬件上运行软件的修改版本;没有包括关于专利的约定,导致实践中出现 Microsoft-Novell专利协议这类试图将专利申请用作于对付自由软件社群的武器的现象。
为解决这些问题,GPL v3于2007年发布。除填补上述漏洞,GPL v3兼容性更好。自由软件基金会明 确表示GPL v3与Apache 2.0许可证兼容。 目前,使用GPL许可证的重要项目包括Linux内核和MySQL等,但新兴项目一般会选用更宽松的许 可证。
LGPL叫做GNU宽通用公共协议,对产品所保留的权利比GPL少,适用于非开源产品的开源类库或框 架,并可以不继承LGPL协议,使用其他的开源协议。 LGPL的特点在于,链接到该软件库的软件可以不适用LGPL或GPL,换言之,可以不公开源代码。 LGPL的这一特性消除了在GPL下软件商用的最大障碍。尽管如此,基于该库修改而得到的软件仍然 需要遵循GPL许可证。
MPL允许在其授权下的源代码与其他授权的文件进行混合,包括私有许可证。在MPL授权下的代码 文件必须保持MPL授权,并且保持开源,即允许在派生项目中存在私有模块,同时保证核心文件的开 源。使用MPL授权的软件并不受专利的限制,其可以自由使用、修改,并可自由的重新发布。带有专 利代码的版本仍然可以使用、转让,甚至出售。
BSD许可证是由UC Berkeley首倡和维护的,版本繁多,目前常用版本包括原始的BSD-4、BSD-3以 及简化的BSD-2。BSD属于宽松许可证,与MIT许可证接近但更加宽松,甚至跟公有领域更为接近。 在最简化的BSD-2许可证下,保留著作权声明、许可证内容以及免责声明即可;只要满足许可证设定 的条件,就可以自由地修改并发布代码。
BSD-3许可证在BSD-2许可证的基础上增加了禁止背书条款(未经事先书面许可不得使用原作者之 名来推广衍生作品);BSD许可证进一步增加了广告条款(衍生作品的广告材料必须说明该软件包 含由UC Berkeley及其贡献者开发的软件)。
MIT许可证之名源自首倡者MIT麻省理工学院,又称“X许可协议”(X License)或“X11许可协议(X11 License)。 据统计,2015年GitHub上高达45%的项目使用MIT许可证。近几年MIT许可证的份额有所下滑,在 2020年市场份额第一的位置被Apache 2.0取代,但仍是最受开发者欢迎的许可证之一。
MIT的特点在于条款非常简单,是开源协议中最宽松的一个:“被许可人有权利使用、复制、修改、 合并、出版发行、散布、再许可和/或贩售软件及软件的副本,及授予被供应人同等权利”,加上要求 被许可人保持同样的声明。
Apache许可证是一种“宽松”(Permissive)的许可证,目前常用版本是2.0,2020年成为使用最多的 许可证。“宽松”是指不保证被使用软件的派生版会继续保持自由软件的形式,即:“怎么用都行, 用在哪都行”。
具体而言,Apache 2.0许可要求保留版权和许可声明,但允许许可作品、修改和更大的作品在不同的 条款和没有源代码的情况下分发,只是未修改的部分仍然需要保留Apache许可证。除了为用户提供 版权许可之外,还有专利许可,对于那些涉及专利内容的开发者而言,该协议最适合。 由于上述利好条件,Apache 2.0成为了相当多流行的开源项目的许可证,最著名的例子之一就是 Kubernetes。
可以看出,除了允许商业性使用、分发和修改外等常见特征外,开源许可证还有两个共同点。一是开 发者不承担保证责任(瑕疵担保责任)。开源代码通常都是免费提供的,因此开发者不应为他人使用 该软件造成的损失而承担责任。二是要求保留著作权标记。开源软件并不意味着放弃著作权。相反, 开源许可证的强制效力来源,恰恰来自于作者对开源软件的著作权。 因此,许可证一般都要求以适当的形式保留著作权标记(包括许可证正文以及作者署名)。