反反复复看不懂的开源协议
什么是许可协议?
什么是许可,当你为你的产品签发许可,你是在出让自己的权利,不过,你仍然拥有版权和专利(如果申请了的话),许可的目的是,向使用你产品的人提供 一定的权限。
不管产品是免费向公众分发,还是出售,制定一份许可协议非常有用,否则,对于前者,你相当于放弃了自己所有的权利,任何人都没有义务表明你的原始作 者身份,对于后者,你将不得不花费比开发更多的精力用来逐个处理用户的授权问题。
而开源许可协议使这些事情变得简单,开发者很容易向一个项目贡献自己的代码,它还可以保护你原始作者的身份,使你 至少获得认可,开源许可协议还可以阻止其它人将某个产品据为己有。以下是开源界的 5 大许可协议。
GNU GPL
GNU General Public Licence (GPL) 有可能是开源界最常用的许可模式。GPL 保证了所有开发者的权利,同时为使用者提供了足够的复制,分发,修改的权利:
- 可自由复制
- 可自由分发
- 可以用来盈利
- 可自由修改
需要注意的是,分发的时候,需要明确提供源代码和二进制文件。使用 GPL 协议,你必须在源代码代码中包含相应信息,以及协议本身。
GNU LGPL GNU 还有另外一种协议,叫做 LGPL (Lesser General Public Licence),它对产品所保留的权利比 GPL 少,总的来说,LGPL 适合那些用于非 GPL 或非开源产品的开源类库或框架。因为 GPL 要求,使用了 GPL 代码的产品必须也使用 GPL 协议,开发者不允许将 GPL 代码用于商业产品。LGPL 绕过了这一限制。
BSD BSD 在软件分发方面的限制比别的开源协议(如 GNU GPL)要少。该协议有多种版本,最主要的版本有两个,新 BSD 协议与简单 BSD 协议,这两种协议经过修正,都和 GPL 兼容,并为开源组织所认可。
新 BSD 协议(3条款协议)在软件分发方面,除需要包含一份版权提示和免责声明之外,没有任何限制。另外,该协议还禁止拿开发者的名义为衍生产品背书,但简单 BSD 协议删除了这一条款。
MIT MIT 协议可能是几大开源协议中最宽松的一个,核心条款是:
【反反复复看不懂的开源协议】该软件及其相关文档对所有人免费,可以任意处置,包括使用,复制,修改,合并,发表,分发,再授权,或者销售。唯一的限制是,软件中必须包含上述版 权和许可提示。
这意味着:
你可以自由使用,复制,修改,可以用于自己的项目。
可以免费分发或用来盈利。
唯一的限制是必须包含许可声明
。
MIT 协议是所有开源许可中最宽松的一个,除了必须包含许可声明外,再无任何限制。
Apache Apache 协议 2.0 和别的开源协议相比,除了为用户提供版权许可之外,还有专利许可,对于那些涉及专利内容的开发者而言,该协议最适合(这里有 一篇文章阐述这个问题)。
Apache 协议还有以下需要说明的地方:
- 永久权利
- 全球范围的权利
- 授权免费,且无版税
- 授权无排他性
- 授权不可撤消
分发代码方面包含一些要求,主要是,要在声明中对参与开发的人给予认可并包含一份许可协议原文。
Creative Commons Creative Commons (CC) 并非严格意义上的开源许可,它主要用于设计。Creative Commons 有多种协议,每种都提供了相应授权模式,CC 协议主要包含 4 种基本形式:
- 署名权
- 保持一致
- 非商业
- 不能衍生新作品
这些许可形式可以结合起来用,其中最严厉的组合是“署名,非商用,不能衍生新作品”,意味着,你可以分享作品,但不能改动或以此盈利,而且必须为原 作者署名。在这种许可模式下,原始作者对作品还拥有完全的控制权,而最宽松的组合是“署名”,意味着,只要为原始作者署名了,就可以自由处置。
(原文来自https://www.oschina.net/question/54100_9455,略编辑)
有个问题,如果源代码使用了以MIT协议许可的代码,我可以自由更换许可证吗?比如我以GPL作为许可证。这样是否要在源代码中放两种许可证?又该如何指示哪些代码是使用MIT协议的?
欢迎懂的不懂的都交流下。
推荐阅读
- 以前我也总是盯着别人的缺点,而看不到别人的努力,这样不但伤害自己和别人,也破坏了人际关系。这就是骄傲的罪吧!但神看我是好的。在主的爱里,
- 看得见风和日丽,看不见风起“云”涌
- 就喜欢你看不惯我又干不掉我的样子
- 懵懂的我|懵懂的我 2
- 这是一封只有异地恋女孩才懂的信
- 地球村人必须要懂的色彩学!(3)
- 投稿|阿里腾讯的未来,看不到万亿美元市值?
- rbf核函数|rbf核函数_SVM核函数的直观解释
- Java|通俗易懂的Docker (一篇文章就让你玩转)
- 看不懂的|看不懂的 build.gradle 代码