开源协议介绍(GPL,LGPL,BSD,MIT,Apache)
什么是许可协议?
什么是许可,当你为你的产品签发许可,你是在出让⾃⼰的权利,不过,你仍然拥有版权和专利(如果申请了的话),许可的⽬的是,向使⽤你产品的⼈提供⼀定的权限。
不管产品是免费向公众分发,还是出售,制定⼀份许可协议⾮常有⽤,否则,对于前者,你相当于放弃了⾃⼰所有的权利,任何⼈都没有义务表明你的原始作者⾝份,对于后者,你将不得不花费⽐开发更多的精⼒⽤来逐个处理⽤户的授权问题。
⽽使这些事情变得简单,开发者很容易向⼀个项⽬贡献⾃⼰的代码,它还可以保护你原始作者的⾝份,使你⾄少获得认可,开源许可协议还可以阻⽌其它⼈将某个产品据为⼰有。以下是开源界的 5 ⼤许可协议。
GNU GPL
(GPL) 有可能是开源界最常⽤的许可模式。GPL 保证了所有开发者的权利,同时为使⽤者提供了⾜够的复制,分发,修改的权利:
可⾃由复制
你可以将软件复制到你的电脑,你客户的电脑,或者任何地⽅。复制份数没有任何限制。
可⾃由分发
在你的⽹站提供下载,拷贝到U盘送⼈,或者将源代码打印出来从窗户扔出去(环保起见,请别这样做)。
可以⽤来盈利
你可以在分发软件的时候收费,但你必须在收费前向你的客户提供该软件的 GNU GPL 许可协议,以便让他们知道,他们可以从别的渠道免费得到这份软件,以及你收费的理由。
可⾃由修改
如果你想添加或删除某个功能,没问题,如果你想在别的项⽬中使⽤部分代码,也没问题,唯⼀的要求是,使⽤了这段代码的项⽬也必须使⽤GPL 协议。
需要注意的是,分发的时候,需要明确提供源代码和⼆进制⽂件,另外,⽤于某些程序的某些协议有⼀些问题和限制,你可以看⼀下写
的⼀⽂。使⽤ GPL 协议,你必须在源代码代码中包含相应信息,以及协议本⾝。
GNU LGPL
GNU 还有另外⼀种协议,叫做 LGPL (),它对产品所保留的权利⽐ GPL 少,总的来说,LGPL 适合那些⽤于⾮ GPL 或⾮开源产品的开源类库或框架。因为 GPL 要求,使⽤了 GPL 代码的产品必须也使⽤ GPL 协议,开发者不允许将 GPL 代码⽤于商业产品。LGPL 绕过了这⼀限制。
BSD
BSD 在软件分发⽅⾯的限制⽐别的开源协议(如 GNU GPL)要少。该协议有多种版本,最主要的版本有两个,新 BSD 协议与简单 BSD 协议,这两种协议经过修正,都和 GPL 兼容,并为开源组织所认可。
新 BSD 协议(3条款协议)在软件分发⽅⾯,除需要包含⼀份版权提⽰和免责声明之外,没有任何限制。另外,该协议还禁⽌拿开发者的名义为衍⽣产品背书,但简单 BSD 协议删除了这⼀条款。
MIT
可能是⼏⼤开源协议中最宽松的⼀个,核⼼条款是:
该软件及其相关⽂档对所有⼈免费,可以任意处置,包括使⽤,复制,修改,合并,发表,分发,再授权,或者销售。唯⼀的限制是,软件中必须包含上述版权和许可提⽰。
这意味着:
你可以⾃由使⽤,复制,修改,可以⽤于⾃⼰的项⽬。
可以免费分发或⽤来盈利。
唯⼀的限制是必须包含许可声明。
MIT 协议是所有开源许可中最宽松的⼀个,除了必须包含许可声明外,再⽆任何限制。
Apache
Apache 协议 2.0 和别的开源协议相⽐,除了为⽤户提供版权许可之外,还有专利许可,对于那些涉及专利内容的开发者⽽⾔,该协议最适合()。
Apache 协议还有以下需要说明的地⽅:
永久权利
⼀旦被授权,永久拥有。
全球范围的权利
在⼀个国家获得授权,适⽤于所有国家。假如你在美国,许可是从印度授权的,也没有问题。
授权免费,且⽆版税
前期,后期均⽆任何费⽤。
授权⽆排他性
任何⼈都可以获得授权
授权不可撤消
⼀旦获得授权,没有任何⼈可以取消。⽐如,你基于该产品代码开发了衍⽣产品,你不⽤担⼼会在某⼀天被禁⽌使⽤该代码。
分发代码⽅⾯包含⼀些要求,主要是,要在声明中对参与开发的⼈给予认可并包含⼀份许可协议原⽂。
Creative Commons
Creative Commons (CC) 并⾮严格意义上的开源许可,它主要⽤于设计。Creative Commons 有多种
协议,每种都提供了相应授权模
式,CC 协议主要包含 4 种基本形式:
署名权
必须为原始作者署名,然后才可以修改,分发,复制。
保持⼀致
作品同样可以在 CC 协议基础上修改,分发,复制。
⾮商业
作品可以被修改,分发,复制,但不能⽤于商业⽤途。但商业的定义有些模糊,⽐如,有的⼈认为⾮商业⽤途指的是不能销售,有的认为是甚⾄不能放在有⼴告的⽹站,也有⼈认为⾮商业的意思是⾮盈利。
不能衍⽣新作品
你可以复制,分发,但不能修改,也不能以此为基础创作⾃⼰的作品。
这些许可形式可以结合起来⽤,其中最严厉的组合是“署名,⾮商⽤,不能衍⽣新作品”,意味着,你可以分享作品,但不能改动或以此盈利,⽽且必须为原作者署名。在这种许可模式下,原始作者对作品还拥有完全的控制权,⽽最宽松的组合是“署名”,意味着,只要为原始作者署名了,就可以⾃由处置。
今天朋友的问题是,如果⼀个东西全部都是他做的,想以GPL的形式公开,同时还想卖钱,可以吗?
答案当然是肯定的。Qt 就是个最好的例⼦。Qt兼具GPL/LGPL协议和Qt Commercial的商业协议。你完全可以以GPL的的协议将你的产品公开,然后如果有⼈想⽤你的东西做商业⽤途,你就再签⼀份商业许可就可以了。以上的⼏个开源协议,都是经由OSI批准的,强烈建议⼤家在发布新程序的时候,另可采⽤多份协议,也不要轻易修改标准协议。
下载apache但是注意,如果你的产品⾥,直接或间接使⽤了第三⽅产品(这个太常见了,⽐⽅说Image Library啦,boost啦等等),⼀定要看清楚它的协议。如果你不⼩⼼⽤了GPL协议的组件,那么对不起,你的商业授权就算是废了,因为你的产品只能是GPL协议的了。
总结:
按照使⽤条件的不同,开源软件许可证可以分为三类(严苛程度递减)
1.使⽤该开源软件的代码再散布(redistribute)时,源码也必须以相同许可证公开。
代表许可类型:GPL, AGPL
2.使⽤该开源软件的代码并且对开源代码有所修改后再散布时,源码必须以相同许可证公开。
代表许可类型:LGPL, CPL,CDDL, CPL,MPL等
3.使⽤该开源软件的代码(包括修改)再散布(redistribute)时,没有特殊限制,只需要明记许可。
代表许可类型:ASL, BSD,MIT等
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论