脉脉不得语的技术博客

心无所恃,随遇而安

常用开源协议收集整理

| Comments

声明:本文大部分内容摘自网络这里仅做搜集整理以备自用!!

全球都在刮着开源风,开源软件在现如今的软件行业中也越来越重要了,从国外的Google code、Github、Sourceforge以及国内的Gitcafe等开源项目脱管网站就可以看出开源软件的火热程度,开源已经成为软件的发展趋势。而开源软件使用的许可协议也是层出不穷,如果不遵守这些协议规则可能会导致经济上的损失以及法律纠纷。

目前,现有软件主要分为如下四类:

  • 专有软件:需要购买,然后才能使用,且只能使用该软件而不能作其他用途。如修改、分享、再发布等。
  • 共享软件:基本上就是专有软件,但你能在实际购买前试用。
  • 免费软件:你可以自由的分享和使用该软件,但你无法修改该软件,因为该软件的源代码不是公开的。
  • 开源软件/自由软件:你能够自由分享该软件与其源代码、使用该软件并可随意修改该软件源码 - 这给予了你最大的自主权。

对于商业软件(专有、共享、免费软件)没什么好说的,只能使用而不允许修改及修改后销售,所以其License差别不大,然而对于开源软件,由于涉及到源代码、版权及其再发布问题,衍生出了若干Licenses,通过OSI(Open Source Initiative)组织批准的开源协议已达61种。如果要发布开源软件,最好是选择这些已被批准的开源协议。

常见的开源协议有:

  • Apache License 2.0
  • New and Simplified BSD licenses
  • GNU General Public License (GPL)
  • GNU Library or “Lesser” General Public License (LGPL)
  • MIT license
  • Mozilla Public License 1.1 (MPL)
  • Common Development and Distribution License
  • Common Public License 1.0
  • Eclipse Public License
  • Creative Commons

Apache License 2.0

Apache Licence是著名的非盈利开源组织Apache采用的协议。该协议和BSD类似,同样鼓励代码共享和尊重原作者的著作权,同样允许代码修改,再发布(作为开源或商业软件)。需要满足的条件:

  • 需要给代码的用户一份Apache License
  • 如果你修改了代码,需要在被修改的文件中说明。
  • 在延伸的代码中(修改和有源代码衍生的代码中)需要带有原来代码中的协议,商标,专利声明和其他原来作者规定需要包含的说明。
  • 如果再发布的产品中包含一个Notice文件,则在Notice文件中需要带有Apache License。你可以在Notice中增加自己的许可,但不可以表现为对Apache License构成更改。

Apache Licence也是对商业应用友好的许可。使用者也可以在需要的时候修改代码来满足需要并作为开源或商业产品发布/销售。

要点:商业软件可以使用,也可以修改使用Apache协议的代码。

New and Simplified BSD licenses

BSD开源协议是一个给于使用者很大自由的协议。可以自由的使用,修改源代码,也可以将修改后的代码作为开源或者专有软件再发布。当你发布使用了BSD协议的代码,或则以BSD协议代码为基础做二次开发自己的产品时,需要满足三个条件:

  • 如果再发布的产品中包含源代码,则在源代码中必须带有原来代码中的BSD协议。
  • 如果再发布的只是二进制类库/软件,则需要在类库/软件的文档和版权声明中包含原来代码中的BSD协议。
  • 不可以用开源代码的作者/机构名字和原来产品的名字做市场推广。

BSD代码鼓励代码共享,但需要尊重代码作者的著作权。BSD由于允许使用者修改和重新发布代码,也允许使用或在BSD代码上开发商业软件发布和销售,因此是对商业集成很友好的协议。而很多的公司企业在选用开源产品的时候都首选BSD协议,因为可以完全控制这些第三方的代码,在必要的时候可以修改或者二次开发。

要点:商业软件可以使用,也可以修改使用BSD协议的代码。

GNU General Public License (GPL)

GNU通用公共许可证(简称为GPL),是由自由软件基金会发行的用于计算机软件的许可证。最初由Richard Stallman为GNU计划而撰写。目前大多数的GNU程序和超过半数的自由软件使用此许可证。此许可证最新版本为“版本2”,1991年发布。GNU 宽松通用公共许可证(简称LGPL)是由GPL衍生出的许可证。我们很熟悉的Linux就是采用了GPL。

GPL协议和BSD、Apache License等鼓励代码重用的许可很不一样。 GPL 的出发点是代码的开源/免费使用和引用/修改/衍生代码的开源/免费使用,但不允许修改后和衍生的代码做为闭源的商业软件发布和销售。

GPL协议的主要内容是只要在一个软件中使用GPL协议的产品,则该软件产品必须也采用GPL协议,既必须也是开源和免费。GPL协议的产品作为一个单独的产品使用没有任何问题,还可以享受免费的优势。

当一个自由软件使用GPL声明时,该软件的使用者有权重新发布、修改该软件,并得到该软件的源代码;但只要使用者在其程序中使用了该自由软件,或者是使用修改后的软件,那么使用者的程序也必须公布其源代码,同时允许别人发布、修改。也就是说,使用GPL声明下的的自由软件开发出来的新软件也一定是自由软件。

由于GPL严格要求使用了GPL类库的软件产品必须使用GPL协议,所以商业软件就不适合采用使用GPL协议的开源代码。

要点:商业软件不能使用GPL协议的代码。

GNU Library or “Lesser” General Public License (LGPL)

LGPL是GPL的变种,也是GNU为了得到更多的甚至是商用软件开发商的支持而提出的。与GPL的最大不同是,可以私有使用LGPL授权的自由软件,开发出来的新软件可以是私有的而不需要是自由软件。所以任何公司在使用自由软件之前应该保证在LGPL或其它GPL变种的授权下。

LGPL是GPL的一个为主要为类库使用设计的开源协议。和GPL要求任何使用GPL类库的的软件必须采用GPL协议不同。 LGPL允许商业软件通过类库引用(link)的方式使用LGPL类库而不需要开源商业软件的代码。

但是如果要修改LGPL协议的代码,则涉及修改部分的额外代码和衍生的代码都必须采用LGPL协议。因此LGPL不适合以LGPL协议代码为基础进行二次开发的商业软件。

要点:商业软件可以使用,但不能修改LGPL协议的代码。

MIT license

MIT是和BSD一样宽松的许可协议,作者只想保留版权,而无任何其他的限制.也就是说,你必须在你的发行版里包含原许可协议的声明,无论你是以二进制发布的还是以源代码发布的.MIT 协议可能是几大开源协议中最宽松的一个,核心条款是: 该软件及其相关文档对所有人免费,可以任意处置,包括使用,复制,修改,合并,发表,分发,再授权,或者销售。唯一的限制是,软件中必须包含上述版 权和许可提示。

这意味着:

  • 你可以自由使用,复制,修改,可以用于自己的项目。
  • 可以免费分发或用来盈利。
  • 唯一的限制是必须包含许可声明。
  • MIT 协议是所有开源许可中最宽松的一个,除了必须包含许可声明外,再无任何限制。

要点:商业软件可以使用,也可以修改MIT协议的代码,甚至可以出售MIT协议的代码。

Mozilla Public License 1.1 (MPL)

MPL协议允许免费重发布、免费修改,但要求修改后的代码版权归软件的发起者。这种授权维护了商业软件的利益,,它要求基于这种软件得修改无偿贡献版权给该软件。这样,围绕该软件得所有代码得版权都集中在发起开发人得手中。但MPL是允许修改,无偿使用得。MPL软件对链接没有要求。

要点:商业软件可以使用,也可以修改MPL协议的代码,但修改后的代码版权归软件的发起者。

Common Development and Distribution License

CDDL(Common Development and Distribution License,通用开发与销售许可)开源协议,是MPL(Mozilla Public License)的扩展协议,它允许公共版权使用,无专利费,并提供专利保护,可集成于商业软件中,允许自行发布许可。 要点:商业软件可以使用,也可以修改CDDL协议的代码。

Common Public License 1.0

Common许可证有一些细节性的规定值得参考:

  • 明确了专利授权。一般的开源软件都明确源代码的版权人将自己的修改权、复制权等版权权利向公众许可,但保留署名权,而Common许可证在此基础上还明确假如源代码中含有专利权,源代码专利权人将复制、使用的专有权利向公众许可。
  • 规定可以将源代码及修改过的源代码与其他类型的不受本许可证约束的代码结合,以新产品的形式发布,只要其中经该许可证获得的源代码及修改过的源代码能按该许可证的要求发布即可。
  • 细化了该许可证终止的情形,包括发生专利侵权诉讼。
  • 明确了一个独立承担责任的原则,就是假如按该许可证使用源代码的使用者将获得的源代码应用于商业使用,那么他就要对在商业应用中出现的由于使用该源代码程序而产生的侵权诉讼承担完全责任。这一条规定是比较特殊的,绝大多数开源软件许可证都不这么要求。

要点:商业软件可以使用,也可以修改Common协议的代码,但要承担代码产生的侵权责任。

Eclipse Public License

EPL是一个与CPL相类似的许可证,任何扩展自Eclipse源码的代码也必须是开源的。

Creative Commons

Creative Commons (CC) 并非严格意义上的开源许可,它主要用于设计。Creative Commons 有多种协议,每种都提供了相应授权模式,CC 协议主要包含 4 种基本形式:

  • 署名权

    必须为原始作者署名,然后才可以修改,分发,复制。

  • 保持一致

    作品同样可以在 CC 协议基础上修改,分发,复制。

  • 非商业

    作品可以被修改,分发,复制,但不能用于商业用途。但商业的定义有些模糊,比如,有的人认为非商业用途指的是不能销售,有的认为是甚至不能放在有广告的网 站,也有人认为非商业的意思是非盈利。

  • 不能衍生新作品

    你可以复制,分发,但不能修改,也不能以此为基础创作自己的作品。

这些许可形式可以结合起来用,其中最严厉的组合是“署名,非商用,不能衍生新作品”,意味着,你可以分享作品,但不能改动或以此盈利,而且必须为原 作者署名。在这种许可模式下,原始作者对作品还拥有完全的控制权,而最宽松的组合是“署名”,意味着,只要为原始作者署名了,就可以自由处置。

总结:

目前开源软件比较常使用前5中协议,cc在互联网是也是比较流行的虽然它并非严格意义上的开源协议,并且多见于一些个人博客网站的文章授权声明。 按照使用条件的不同,开源软件许可证可以分为三类(严苛程度递减)

  • 使用该开源软件的代码再散布(redistribute)时,源码也必须以相同许可证公开。

    代表许可类型:GPL, AGPL  

  • 使用该开源软件的代码并且对开源代码有所修改后再散布时,源码必须以相同许可证公开。

    代表许可类型:LGPL, CPL,CDDL, CPL,MPL等  

  • 使用该开源软件的代码(包括修改)再散布(redistribute)时,没有特殊限制,只需要明记许可。

    代表许可类型:ASL, BSD,MIT等

参考资料

http://www.cnblogs.com/magic_evan/archive/2011/02/12/1952528.html http://blog.csdn.net/zhulinu/article/details/7419068


版权声明:欢迎自由转载-非商用-非衍生-保持署名 | Creative Commons BY-NC-ND 3.0

Comments