1.什么是开源许可协议
现在,随便在github上搜索一个开源项目源代码都会在README.md文件中发现有关项目的开源许可证说明。就像下面这样:
软件开源许可协议是开源社区为了维护作者和贡献者的合法权利,保证软件不会被一些商业机构和个人窃取利益,从而影响软件的发展而建立的许可协议。它规定了其他团体和个人在使用开源代码时所必须遵守的规定。
世界上的开源许可协议大概有上百种,本文主要介绍几种常见的开源协议。主要涉及GPL、BSD、MIT、Mozilla、Apache、LGPL等。
2.Apache License
Apache License许可协议,是Apache软件基金会发布的一个自由软件许可证。Apache License是著名的非盈利开源组织Apache采用的协议,它鼓励代码共享和最终原始作者的著作权,允许源代码修改和再发布,但也需要遵守如下条件:
(1).需要给使用代码的用户一份Apache License;
(2).如果修改了源代码,需要在被修改的文件中进行说明;
(3).在有修改和由源代码衍生出的代码中,需要带有原来代码中的协议、商标、专利声明和其他原作者规定需要包含的说明;
(4).如果再发布的产品中包含了一个notice文件,则在notice文件中需要带有Apache License。你可以在notice文件中增加自己的许可,但不可以表现对Apache License进行更改;
(5).Apache License也是对商业应用友好的许可,使用者也可以在需要的时候修改代码来满足并作为开源或商业产品发布/销售;
2.BSD许可协议
BSD是"Berkeley Software Distribution"的缩写,意思是"伯克利软件发行版"。BSD开源协议是一个给于使用者很大自由的协议。可以自由的使用、修改源代码,也可以将修改后的代码作为开源或者专有软件再发布。
BSD代码鼓励代码共享,但需要尊重代码原作者的著作权。由于它允许使用者修改和重新发布代码,也允许使用或在BSD代码上开发商业软件发布和销售,因此是对商业集成很友好的协议。很多的公司企业在选用开源产品的时候都首选BSD协议,因为可以完全控制这些第三方的代码,在必要的时候可以修改或者二次开发。当你发布使用了BSD协议的代码或者以BSD协议代码为基础做二次开发自己的产品时,需要满足三个条件:
(1).如果再发布的产品中包含源代码,则在源代码中必须带有原来代码中的BSD协议;
(2).如果再发布的只是二进制类库/软件,则需要在类库/软件的文档和版权声明中包含原来代码中的BSD协议。
(3).不可用开源代码的作者/机构名字和原来产品的名字做市场推广。
3.GPL许可协议
GPL(GNU General Public License)即GNU通用公共许可协议,linux采用GPL许可协议,它和BSD, Apache Licence等鼓励代码重用的许可协议很不一样。GPL的出发点是代码的开源、免费使用和引用、修改、衍生代码的开源与免费使用,但不允许修改和衍生后的代码作闭源的商业软件发布和销售。正是这个原因,我们能用免费的各种linux。包括商业公司的linux和linux上各种各样的由个人、组织以及商业软件公司开发的免费软件了。
4.LGPL许可协议
LGPL许可协议是GPL许可协议主要为类库使用而设计出的一个开源协议。与GPL要求任何使用、修改、衍生自GPL类库的软件必须采用GPL协议不同。LGPL允许商业软件通过类库引用(link)方式使用LGPL类库而不需要开源商业软件的代码,这使得采用LGPL协议的开源代码可以被商业软件作为类库引用并发布和销售。
但是,如果修改了遵循LGPL协议的代码,则所有修改的代码(修改部分的额外代码和衍生的代码)都必须遵循LGPL协议。因此,LGPL协议的开源代码很适合作为第三方类库被商业软件引用,但不适合希望以LGPL协议代码为基础,通过修改和衍生的方式做二次开发的商业软件采用。GPL/LGPL都保障原作者的知识产权,避免有人利用开源代码复制并开发类似的产品。
5.MIT许可协议
MIT是和BSD一样自由、宽范的许可协议,源自麻省理工学院(Massachusetts Institute of Technology, MIT),也称X11协议。作者只想保留版权,而无任何其他了限制。MIT与BSD类似,但比BSD协议更加宽松,是目前最少限制的协议。这个协议唯一的条件就是在修改后的代码或者发行包中包含原作者的许可信息,适用商业软件。目前,使用MIT的软件项目例如有:jquery、Node.js等。
6.MPL许可协议
MPL许可协议允许免费重发布、免费修改,但要求修改后的代码版权归软件的发起者 。这种授权维护了商业软件的利益,它要求基于这种软件的修改无偿贡献版权给该软件。因此,围绕该软件的所有代码的版权都集中在发起开发人的手中。但是,MPL是允许修改,无偿使用的,MPL软件对链接没有要求。
7.EPL许可协议
EPL许可协议允许任意使用、复制、分发、传播、展示、修改以及修改后闭源的二次商业发布。但使用EPL协议时,需遵守以下条件:
(1).当一个开源贡献者将源码的整体或部分再次开源对外发布时,必须继续遵循EPL开源协议,不能改用其他协议发布。除非你得到了"源码"原作者的授权;
(2).你可以将源码不做任何修改来商业发布。但是,如果你要发布修改后的源码或者当你再发布的是目标代码时,你必须声明它的源代码是可以获取的并要告知获取方法;
(3).当你需要将符合EPL许可协议的源码作为一部分跟其他私有的源码组合成为一个项目发布时,你可以将整个项目/产品以私人的协议发布,但要声明哪一部分代码是EPL许可协议下的,而且声明那部分代码继续遵循EPL许可协议;