各种开源协议介绍BSD、ApacheLicence、GPLV2、GPLV3、
LGPL、MIT
原⽂链接:
现今存在的开源协议很多,⽽经过Open Source Initiative组织通过批准的开源协议⽬前有58种()。我们在常见的开源协议如BSD, GPL, LGPL,MIT等都是OSI批准的协议。如果要开源⾃⼰的代码,最好也是选择这些被批准的开源协议。
这⾥我们来看四种最常⽤的开源协议及它们的适⽤范围,供那些准备开源或者使⽤开源产品的开发⼈员/⼚家参考。
BSD开源协议(original BSD license、FreeBSD license、Original BSD license)
BSD开源协议是⼀个给于使⽤者很⼤⾃由的协议。基本上使⽤者可以”为所欲为”,可以⾃由的使⽤,修改源代码,也可以将修改后的代码作为开源或者专有软件再发布。源代码下载开源社区
但”为所欲为”的前提当你发布使⽤了BSD协议的代码,或则以BSD协议代码为基础做⼆次开发⾃⼰的产品时,需要满⾜三个条件:
1. 如果再发布的产品中包含源代码,则在源代码中必须带有原来代码中的BSD协议。
2. 如果再发布的只是⼆进制类库/软件,则需要在类库/软件的⽂档和版权声明中包含原来代码中的BSD协议。
3. 不可以⽤开源代码的作者/机构名字和原来产品的名字做市场推⼴。
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类似:
1. 需要给代码的⽤户⼀份Apache Licence
2. 如果你修改了代码,需要再被修改的⽂件中说明。
3. 在延伸的代码中(修改和有源代码衍⽣的代码中)需要带有原来代码中的协议,商标,专利声明和其他原来作者规定需要包含的说明。
4. 如果再发布的产品中包含⼀个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等类似。
关于开源协议GPL V2和V3
单从开源⾏业的GPL协议上来看,似乎开源linux产品上的⼀切是可以⽆条件的开放和共享的,但是从实际的操作来看,在GPL相对的许可授权之下,⼜有其相对封闭的⼀⾯,就这次的GPL v2到GPL v3的修订改版来说,正是GPL协议“封闭”⼀⾯的具体体现。
根据GPL v2的相关规定:只要这种修改⽂本在整体上或者其某个部分来源于遵循GPL的程序,该修改⽂本的整体就必须按照GPL流通,不仅该修改⽂本的源码必须向社会公开,⽽且对于这种修改⽂本的流通不准许附加修改者⾃⼰作出的限制。⽽在GPL v3的修订草案中,不仅要求⽤户公布修改的源代码,还要求公布相关硬件,恰恰是这⼀条,由于触及和其他相关数字版权管理(DRM)及其产品的关系,并且也由于有和开源精神相违的地⽅,所以备受争议,甚⾄因此也遭到了有着“LINUX之⽗”之称的托⽡尔兹的反对。
从表⾯上看,GPL v2到GPL v3的升级之困只不过是对协议修订过程中某⼀条款的分歧,⽽更为严重的是在两种协议都合法存在的前提下,具体的开源软件或者开源产品的所有者有权选择是遵循GPL v2协议还是恪守GPL v3协议,因此冲突也就来了,这种冲突正如中科红旗的CTO郑忠源描述的那样:“世界有如此多软件都在GPL v2的约束之下,⽽⾃由软件是集合全世界程序员劳动,即使是贡献⼀⾏代码,如果该程序员只同意这⼀代码只遵循GPL v2之下,就不能随便去修改协议。如果计划将软件转移到GPL v3之下,理论上讲,必须征得所有代码⼈的同意。但是⽬前还很难确定有多少开发⼈员愿意转移到新版本之下,如果有的⼈愿意转,有的⼈不愿意转,这其中就有很多的⿇烦;⽽如果多数⼈都不愿意改变,那这⼀事情也许就⽆声⽆息……”
通过业内⼈⼠的精辟描述,相信⼤家⼀定对开源⾏业和开源软件产品有了⼀个全新的认识吧,就那熟悉的LINUX系统来说,虽然表⾯上看起来⼤家有权按照⾃⼰的需要和⽬的进⾏任意的改写重组,但是在诸多的独⽴程序⾯前,别⼈是只能共享使⽤,⽽⽆权修改的,当然获得授权就另当别论了。⽽就GPL v2到GPL v3的协议升级来说,这种协议的选择上的分歧实际上也是开源⾏业⾥⼀种观念认知上的相左,到底谁的选择是正确的?绝对不是⼀两句话能说得清的,尤其是在各种利益交织之下。
情势之下,开源社区的GPL v2与GPL v3选择之困很现实的会在相当⼀段时间内给这个⾏业及其产品造成“兼容问题”,说⽩了就是两种协议以及两种协议之下的⽭盾,不管是⼈的还是产品的都将会持续下去,⽽这种僵持对整个开源⾏业来说未必是⼀件好事,最起码从“精神”⽅⾯来说这个⾏业已经在开始分
道扬镳。
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⼀样宽范的许可协议,作者只想保留版权,⽽⽆任何其他了限制.也就是说,你必须在你的发⾏版⾥包含原许可协议的声明,⽆论你是以⼆进制发布的还是以源代码发布的.

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。