上篇文章介绍了 GPL、MPL、LGPL ,本文继续介绍剩下的三个许可证 BSD、MIT、Apache License。
四、BSD 许可证:
1、概念:
BSD 许可协议,即 Berkeley Software Distribution license 的简称,是由加州大学伯克利分校发布并维护的开源软件许可证。BSD许可证是自由软件中使用最广泛的许可协议之一。
2、两个概念:
BSD:人们常说的BSD,指的是 Berkeley Software Distribution,即伯克利软件套件,是加州大学伯克利分校在AT&T贝尔实验室的Unix操作系统基础上,开发打包的操作系统及相关软件套件。
BSD许可协议:BSD套件遵循某种开源许可证的方式发布,这种许许可证因此而得名,被叫做 BSD许可证。
3、BSD协议特点:
BSD开源协议是一个给予使用者很大自由的协议,可以自由的使用、修改源代码,也可以将修改后的代码作为开源或者专有软件再发布。
4、版本演进历史:
旧版BSD:1998发布初版。
新版BSD:1999年发布修订版。
BSD协议的初稿内含有一项额外的条款,要求所有从以BSD许可证授权的软件派生著作,都必须要包含一段文字以交代源代码的来源。该条文列于原BSD许可证的第三条。
GNU项目将这个称为“令人感到不舒服的BSD交代条款”,GNU工程认为存在两个问题:
第一,修改源码的人都希望将其大名加到鸣谢中,如果一个项目参加的人非常多,或者软件包中包含许多个单独项目,鸣谢阵容将会变得非常庞大。
第二,这跟GNU通用公共许可协议相抵触,GPL不允许增加额外的限制,所以软件只能在GNU跟BSD之间选择。由于这两个许可证在自由软件中使用很普遍,如果作者想将GPL和BSD有所结合,就会出现冲突。
应自由软件基金会和GNU计划的发起者斯托曼的请求,1999年7月22日,伯克利技术许可办公室的主管 William Hoskins 删除了BSD许可证的第三条。从此以后,自由软件作者就可以方便地采用BSD许可证下的软件,从而跟GPL下的作品融合。
原来的许可证有时被称为“BSD-old”(老BSD)或“4-clause BSD”(四句版BSD),当前的BSD许可证有的被称为“BSD-new”(新BSD)、“revised BSD”(修订的BSD)或“3-clause BSD”(三句版BSD)。
5、协议分析:
当发布使用了BSD协议的代码或以BSD协议代码为基础做二次开发自己的产品时,需满足以下三个条件:
如果再发布的产品中包含源代码,则在源代码中必须带有原来代码中的BSD协议。
如果再发布的只是二进制类库/软件,则需要在类库/软件的文档和版权声明中包含原来代码中的BSD协议。
不可以用开源代码的作者/机构名字和原来产品的名字做市场推广。
BSD协议鼓励项目代码共享,但需要尊重作者的著作权。BSD协议由于允许使用者修改和重新发布代码,也允许在BSD代码上开发商业软件发布和销售,因此是对商业集成很友好的协议。
很多公司在选用开源产品的时候都首选BSD协议,因为可以完全控制这些第三方的代码,在必要的时候可以修改或者二次开发。遵守BSD 协议的软件,允许用作商业用途,甚至可按照专属许可证进行再发布。
五、MIT 协议:
1、概念:
MIT 许可协议:即 The MIT License,该许可协议之名源自麻省理工学院(Massachusetts Institute of Technology, MIT),又称“X许可协议”(X License)或“X11许可协议”(X11 License)。
2、版本演进历史:
1988,由自麻省理工学院(MIT)发布。
3、协议特点:
MIT许可协议是许多软件许可条款中被广泛使用的其中一种。与其他常见的软件许可协议(如GPL、LGPL、BSD)相比,MIT是相对宽松的软件许可协议,赋予软件被许可人更大的权利与更少的限制。
4、协议分析:
被许可人权利:被许可人有权利使用、复制、修改、合并、出版发行、散布、再许可和/或贩售软件及软件的副本,及授予被供应人同等权利,惟服从以下义务。
被许可人义务:在软件和软件的所有副本中都必须包含以上著作权声明和本许可声明。
5、其他重要特性:
此许可协议并非属copyleft的自由软件许可协议条款,允许在自由及开放源代码软件或非自由软件(proprietary software)所使用。
MIT的内容可依照软件代码著作权者的需求更改内容,这也是MIT与BSD本质上的不同处。
MIT许可协议可与其他许可协议并存。MIT条款也是自由软件基金会(FSF)所认可的自由软件许可协议条款,与GPL兼容。
有许多团体均采用MIT许可证,例如著名的SSH连线软件PuTTY与X窗口系统、Expat、Mono开发平台库、Ruby on Rails、Lua等等也都采用MIT许可协议。
六、Apache 许可协议:
1、概念:
Apache许可证,即 Apache License,是一个由Apache软件基金会(ASF)发布的自由软件许可证。
Apache许可证最初为 Apache Web 服务器而撰写,Apache许可证在Apache社区内外被广泛使用;Apache基金会下属所有项目都使用Apache许可证;许多非Apache基金会项目也使用了Apache许可证。
官网:http://www.apache.org/licenses/
2、版本演进历史:
Apache License 1.0,1995年发布。
http://www.apache.org/licenses/LICENSE-1.0
Apache License 1.1,2000年发布。
http://www.apache.org/licenses/LICENSE-1.1
Apache License 2.0,2004年发布。
http://www.apache.org/licenses/LICENSE-2.0
3、协议要求:
Apache许可证,具体要求如下:
对所有未修改的部分应用相同的许可证,并且在每个许可文件中,必须保留再分发代码中的任何原始著作权、专利、商标和归属通知(不需要包括任何部分的派生作品);
在每个更改的许可文件中,都必须添加一条通知,说明对该文件进行了更改。
不强制要求派生和修改产物使用相同的许可证进行发布。
4、协议分析说明:
如果声明文本文件是作为原始作品发布的一部分,则派生作品必须包含该通知文本文件的可读副本,可以是文档或显示在软件中。
声明文件的内容不会修改许可证,因为它们仅用于提供信息,并且可以在许可证文本中添加更多属性声明,前提是这些声明不能被理解为修改许可证。修改可能有适当的著作权声明,并可能为修改提供不同的许可条款。
七、许可证的对比与总结:
对于一个开源协议来说,规定得太宽松,会导致作者丧失对开源软件的很多权利,规定的太严格,又不利于开源软件的使用和传播。用一张图总结以上介绍的几个主流开源许可证的权限宽松情况:
我们在选择使用开源软件、或者准备开源自己的软件时,一定要明白自己的用途,选择合适的许可证。希望我们站在巨人肩膀上前行的同时,不忘用法律的武器来为我们自身保驾护航。
首发公众号【战神波波】,欢迎来交流~