如今存在的开源协议许多,而经过Open Source Initiative安排经过同意的开源协议现在有58种(http://www.opensource.org/licenses/alphabetical)。咱们在常见的开源协议如BSD, GPL, LGPL,MIT等都是OSI同意的协议。假如要开源自己的代码,最好也是挑选这些被同意的开源协议。
这儿咱们来看四种最常用的开源协议及它们的适用范围,供那些预备开源或许运用开源产品的开发人员/厂家参阅。
BSD开源协议(original BSD license、FreeBSD license、Original BSD license)
BSD开源协议是一个给于运用者很大自在的协议。基本上运用者能够”随心所欲”,能够自在的运用,修正源代码,也能够将修正后的代码作为开源或许专有软件再发布。
但”随心所欲”的条件当你发布运用了BSD协议的代码,或则以BSD协议代码为根底做二次开发自己的产品时,需求满意三个条件:
假如再发布的产品中包括源代码,则在源代码中有必要带有本来代码中的BSD协议。
假如再发布的仅仅二进制类库/软件,则需求在类库/软件的文档和版权声明中包括本来代码中的BSD协议。
不能够用开源代码的作者/安排姓名和本来产品的姓名做市场推广。
BSD 代码鼓舞代码同享,但需求尊重代码作者的著作权。BSD因为答应运用者修正和从头发布代码,也答应运用或在BSD代码上开发商业软件发布和出售,因而是对商业集成很友爱的协议。而许多的公司企业在选用开源产品的时分都首选BSD协议,因为能够彻底操控这些第三方的代码,在必要的时分能够修正或许二次开发。
Apache Licence 2.0(Apache License, Version 2.0、Apache License, Version 1.1、Apache License, Version 1.0)
Apache Licence是闻名的非盈利开源安排Apache选用的协议。该协议和BSD相似,相同鼓舞代码同享和尊重原作者的著作权,相同答应代码修正,再发布(作为开源或商业软件)。需求满意的条件也和BSD相似:
需求给代码的用户一份Apache Licence
假如你修正了代码,需求再被修正的文件中阐明。
在延伸的代码中(修正和有源代码衍生的代码中)需求带有本来代码中的协议,商标,专利声明和其他本来作者规则需求包括的阐明。
假如再发布的产品中包括一个Notice文件,则在Notice文件中需求带有Apache Licence。你能够在Notice中添加自己的答应,但不能够表现为对Apache Licence构成更改。
Apache Licence也是对商业运用友爱的答应。运用者也能够在需求的时分修正代码来满意需求并作为开源或商业产品发布/出售。
GPL(GNU General Public License)
咱们很熟悉的Linux便是选用了GPL。GPL协议和BSD, Apache Licence等鼓舞代码重用的答应很不相同。GPL的起点是代码的开源/免费运用和引证/修正/衍生代码的开源/免费运用,但不答应修正后和衍生的代码做为闭源的商业软件发布和出售。这也便是为什么咱们能用免费的各种linux,包括商业公司的linux和linux上各式各样的由个人,安排,以及商业软件公司开发的免费软件了。
GPL协议的主要内容是只要在一个软件中运用(”运用”指类库引证,修正后的代码或许衍生代码)GPL 协议的产品,则该软件产品有必要也选用GPL协议,既有必要也是开源和免费。这便是所谓的”传染性”。GPL协议的产品作为一个独自的产品运用没有任何问题,还能够享用免费的优势。
因为GPL严格要求运用了GPL类库的软件产品有必要运用GPL协议,关于运用GPL协议的开源代码,商业软件或许对代码有保密要求的部分就不合适集成/选用作为类库和二次开发的根底。
其它细节如再发布的时分需求随同GPL协议等和BSD/Apache等相似。
LGPL(GNU Lesser General Public License)
LGPL是GPL的一个为主要为类库运用规划的开源协议。和GPL要求任何运用/修正/衍生之GPL类库的的软件有必要选用GPL协议不同。LGPL答应商业软件经过类库引证(link)方法运用LGPL类库而不需求开源商业软件的代码。这使得选用LGPL协议的开源代码能够被商业软件作为类库引证并发布和出售。
可是假如修正LGPL协议的代码或许衍生,则一切修正的代码,触及修正部分的额定代码和衍生的代码都有必要选用LGPL协议。因而LGPL协议的开源代码很合适作为第三方类库被商业软件引证,但不合适期望以LGPL协议代码为根底,经过修正和衍生的方法做二次开发的商业软件选用。
GPL/LGPL都保证原作者的知识产权,防止有人使用开源代码仿制并开发相似的产品
MIT(MIT)
MIT是和BSD相同宽范的答应协议,作者只想保存版权,而无任何其他了约束.也便是说,你有必要在你的发行版里包括原答应协议的声明,不管你是以二进制发布的还是以源代码发布的.