赞
踩
开源不等于免费!为了加速我们的开发,我们会使用开源的软件和源码; 为避免商业风险,需要在使用时了解第三方如软件协议,版本,和已知CVE风险等;本文旨在从开源软件再发布过程使用权限的角度入手,总结各个常见开源协议的异同,方便理解。
大部分人都希望作品能够被多数人分享查阅。这样不仅提高自己业界的知名度,同时也方便了需要的人为开源做出了贡献。但是代码一旦被贴出来,任何人都可以看到并获取,之后发生的事情你就无法控制了。所以为了公开分享你的代码,同时又让你对代码保留一定权利,在作品中声明一个许可协议是非常有必要的。有协议和没声明协议的裸代码是有非常重要区别的,一般作品当中没声明协议的默认为Copy right的,也就是版权保留。此种情况表明他人没有任何授权,不得复制分发修改使用等等。有了协议的声明,在未来你的维权上面会方便很多,让你的作品在分享的同时保留了自身的一些权利。
License是软件的授权许可,里面详尽表述了你获得代码后拥有的权利,可以对别人的作品进行何种操作,何种操作又是被禁止的。
软件协议可分为开源和商业
首先一共有哪些公开的协议
链接: 开源协议
最流行的六种 — GPL、BSD、MIT、Mozilla、Apache和LGPL。
乌克兰程序员Paul Bagwell,画了一张分析图,说明应该怎么选择,只用两分钟,你就能搞清楚这六种许可证之间的最大区别。 下面是阮一峰中文翻译版本:
Apache许可证(Apache License),是一个在Apache软件基金会发布的自由软件许可证,最初为Apache http服务器而撰写。Apache许可证要求被授权者保留版权和放弃权利的申明,但它不是一个反版权的许可证。 此许可证最新版本为“版本2”,于2004年1月发布。 Apache许可证在Apache社区内外被广泛使用。Apache基金会下属所有项目都使用Apache许可证,许多非Apache基金会项目也使用了Apache许可证: 据统计,截至2008年4月,在sourceforge上有超过3000个项目使用了Apache许可证。
Apache 许可协议, 2.0 版本, 授予了用户大量的权利。这些权利可以应用于拷贝权,也可以用于专利权。因为很多许可协议只能适用于拷贝权,不适用于专利权,所以这个灵活性就成了让有专利的开发者们选择许可协议时的一个显著参考因素。
下面是关于 Apache 许可协议所允许的事项的详细说明:
MIT 协议应该是在流行的开源协议中最简短的、使用最广泛的一种协议。它的条款非常的宽松,而且跟其它协议相比更自由。 MIT 协议是目前最少限制的协议。它基本上就是任何人可以对这个协议下的软件的做任何的事情,只要你能认可这个协议。这种协议最基本的条款 ( the information that it is provided without warranty, which comprises the final paragraph)如下:
特此授权,任何人都可免费获得这个软件以及相关文档(the Software)的拷贝,可以无限制的使用这个软件,包括无限制的权利去使用、复制、修改、合并、发布、附加从属协议,以及/或者出售软件的拷贝, 同时,为了让软件的提供者有权利做到这些,下面的条件必须遵守:
上面的拷贝权声明和许可声明必须包含在所有的这个软件拷贝里和实际分署部分里。这也就是说:
BSD 协议有很多分支,它们都代表了一种宽松的自由软件协议,相对其它协议,例如GPL,来说,它们对软件的传播给予了更少的限制。 在这种协议的各种版本中,有两个版本格外的重要: 新 BSD 协议/修订版 BSD 协议和简化 BSD 协议/FreeBSD 协议。这两类协议都实现的对 GPL 兼容的自由软件协议,而且被 Open Source Initiative 认可为开源软件协议。
新 BSD 协议(3-clause license)无任何限制的允许你以任何目的二次分发这种软件,唯一的要求是必须保留拷贝权的声明和协议里的软件权利放弃条款。这种协议还有一个限制,未经许可不得使用这个作品的所有曾经捐助者的署名。 新 BSD 协议和简化 BSD 协议的最主要的区别是后者删除了署名条款。
BSD开源协议是一个给于使用者很大自由的协议。基本上使用者可以”为所欲为”,可以自由的使用,修改源代码,也可以将修改后的代码作为开源或者专有软件再发布。
但”为所欲为”的前提当你发布使用了BSD协议的代码,或则以BSD协议代码为基础做二次开发自己的产品时,需要满足三个条件:
我们很熟悉的Linux就是采用了GPL。GPL协议和BSD, Apache License等鼓励代码重用的许可很不一样。GPL的出发点是代码的开源/免费使用和引用/修改/衍生代码的开源/免费使用,但不允许修改后和衍生的代 码做为闭源的商业软件发布和销售。这也就是为什么我们能用免费的各种linux,包括商业公司的linux和linux上各种各样的由个人,组织,以及商 业软件公司开发的免费软件了。
GPL协议的主要内容是只要在一个软件中使用(”使用”指类库引用,修改后的代码或者衍生代码)GPL 协议的产品,则该软件产品必须也采用GPL协议,既必须也是开源和免费。这就是所谓的”传染性”。GPL协议的产品作为一个单独的产品使用没有任何问题, 还可以享受免费的优势。
由于GPL严格要求使用了GPL类库的软件产品必须使用GPL协议,对于使用GPL协议的开源代码,商业软件或者对代码有保密要求的部门就不适合集成/采用作为类库和二次开发的基础。
其它细节如再发布的时候需要伴随GPL协议等和BSD/Apache等类似。
LGPL 是GPL的一个为主要为类库使用设计的开源协议。和GPL要求任何使用/修改/衍生之GPL类库的的软件必须采用GPL协议不同。LGPL 允许商业软件通过类库引用(link)方式使用LGPL类库而不需要开源商业软件的代码。这使得采用LGPL协议的开源代码可以被商业软件作为类库引用并 发布和销售。
但是如果修改LGPL协议的代码或者衍生,则所有修改的代码,涉及修改部分的额外代码和衍生的代码都必须采用LGPL协议。因此LGPL协议的开源代码很适合作为第三方类库被商业软件引用,但不适合希望以LGPL协议代码为基础,通过修改和衍生的方式做二次开发的商业软件采用。
GPL/LGPL都保障原作者的知识产权,避免有人利用开源代码复制并开发类似的产品。
MPL是The Mozilla Public License的简写,是1998年初Netscape的 Mozilla小组为其开源软件项目设计的软件许可证。MPL许可证出现的最重要原因就是,Netscape公司认为GPL许可证没有很好地平衡开发者对源代码的需求和他们利用源代码获得的利益。同著名的GPL许可证和BSD许可证相比,MPL在许多权利与义务的约定方面与它们相同(因为都是符合OSIA认定的开源软件许可证)。
但是,相比而言MPL还有以下几个显著的不同之处:
简而言之,GPL协议就是一个开放源代码协议,软件的初始开发者使用了GPL协议并公开软件的源程序后,后续使用该软件源程序开发软件者亦应当根据GPL协议把自己编写的源程序进行公开。GPL协议要求的关键在于开放源程序,但并不排斥软件作者向用户收费。虽然如此,很多大公司对GPL协议还是又爱又恨,爱的是这个协议项下的软件历经众多程序员千锤百炼的修改,已经非常成熟完善,恨的是必须开放自己后续的源程序,导致竞争对手也可以根据自己修改的源程序开发竞争产品。
正因大公司对GPL协议在商业上存在顾虑,因此,另两种协议被采用的更多,第一种是LGPL(亦称GPL V2)协议,可以翻译为更宽松的GPL协议。与GPL协议的区别为,后者如果只是对LGPL软件的程序库的程序进行调用而不是包含其源代码时,相关的源程序无需开源。调用和包含的区别类似在互联网网网页上对他人网页内容的引用: 如果把他人的内容全部或部分复制到自己的网页上,就类似包含,如果只是贴一个他人网页的网址链接而不引用内容,就类似调用。有了这个协议,很多大公司就可以把很多自己后续开发内容的源程序隐藏起来。
第二种是BSD协议(类似的还有MIT协议)。BSD协议鼓励软件的作者公开自己后续开发的源代码,但不强求。在BSD协议项下开发的软件,原始的源程序是开放源代码的,但使用者修改以后,可以自行选择发布源程序或者二进制程序(即目标程序),当然,使用者有义务把自己原来使用的源程序与BSD协议在软件对外发布时一并发布。因为比较灵活,所以BSD深受大公司的欢迎。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。