常用开源协议简要介绍
开源软件在今天的软件业中所起的作用越来越重要了,开源软件层出不穷,几乎可以找到任何需要的开源软件。开源软件所使用的开源协议也有很多种,如果不遵守这些协议规则可能会导致经济上的损失以及法律纠纷。
目前,现有软件主要分为如下四类:
常见的开源协议有:
*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
1. Apache License 2.0
Apache Licence是著名的非盈利开源组织Apache采用的协议。该协议和BSD类似,同样鼓励代码共享和尊重原作者的著作权,同样允许代码修改,再发布(作为开源或商业软件)。需要满足的条件:
1) 需要给代码的用户一份Apache License
2)如果你修改了代码,需要在被修改的文件中说明。
3)在延伸的代码中(修改和有源代码衍生的代码中)需要带有原来代码中的协议,商标,专利声明和其他原来作者规定需要包含的说明。
4)如果再发布的产品中包含一个Notice文件,则在Notice文件中需要带有Apache License。你可以在Notice中增加自己的许可,但不可以表现为对Apache License构成更改。
Apache Licence也是对商业应用友好的许可。使用者也可以在需要的时候修改代码来满足需要并作为开源或商业产品发布/销售。
要点:商业软件可以使用,也可以修改使用Apache协议的代码。
2. New and Simplified BSD licenses
BSD开源协议是一个给于使用者很大自由的协议。可以自由的使用,修改源代码,也可以将修改后的代码作为开源或者专有软件再发布。当你发布使用了BSD协议的代码,或则以BSD协议代码为基础做二次开发自己的产品时,需要满足三个条件:
1)如果再发布的产品中包含源代码,则在源代码中必须带有原来代码中的BSD协议。
2)如果再发布的只是二进制类库/软件,则需要在类库/软件的文档和版权声明中包含原来代码中的BSD协议。
3)不可以用开源代码的作者/机构名字和原来产品的名字做市场推广。
BSD代码鼓励代码共享,但需要尊重代码作者的著作权。BSD由于允许使用者修改和重新发布代码,也允许使用或在BSD代码上开发商业软件发布和销售,因此是对商业集成很友好的协议。而很多的公司企业在选用开源产品的时候都首选BSD协议,因为可以完全控制这些第三方的代码,在必要的时候可以修改或者二次开发。
要点:商业软件可以使用,也可以修改使用BSD协议的代码。
3. 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协议的代码。
4. 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协议的代码。
5. MIT license
MIT是和BSD一样宽松的许可协议,作者只想保留版权,而无任何其他了限制.也就是说,你必须在你的发行版里包含原许可协议的声明,无论你是以二进制发布的还是以源代码发布的.
要点:商业软件可以使用,也可以修改MIT协议的代码,甚至可以出售MIT协议的代码。
6. Mozilla Public License 1.1 (MPL)
MPL协议允许免费重发布、免费修改,但要求修改后的代码版权归软件的发起者。这种授权维护了商业软件的利益,,它要求基于这种软件得修改无偿贡献版权给该软件。这样,围绕该软件得所有代码得版权都集中在发起开发人得手中。但MPL是允许修改,无偿使用得。MPL软件对链接没有要求。
要点:商业软件可以使用,也可以修改MPL协议的代码,但修改后的代码版权归软件的发起者。
7. Common Development and Distribution License
CDDL(Common Development and Distribution License,通用开发与销售许可)开源协议,是MPL(Mozilla Public License)的扩展协议,它允许公共版权使用,无专利费,并提供专利保护,可集成于商业软件中,允许自行发布许可。
要点:商业软件可以使用,也可以修改CDDL协议的代码。
8. Common Public License 1.0
Common许可证有一些细节性的规定值得参考:
* 明确了专利授权。一般的开源软件都明确源代码的版权人将自己的修改权、复制权等版权权利向公众许可,但保留署名权,而Common许可证在此基础上还明确假如源代码中含有专利权,源代码专利权人将复制、使用的专有权利向公众许可。
* 规定可以将源代码及修改过的源代码与其他类型的不受本许可证约束的代码结合,以新产品的形式发布,只要其中经该许可证获得的源代码及修改过的源代码能按该许可证的要求发布即可。
* 细化了该许可证终止的情形,包括发生专利侵权诉讼。
* 明确了一个独立承担责任的原则,就是假如按该许可证使用源代码的使用者将获得的源代码应用于商业使用,那么他就要对在商业应用中出现的由于使用该源代码程序而产生的侵权诉讼承担完全责任。这一条规定是比较特殊的,绝大多数开源软件许可证都不这么要求。
要点:商业软件可以使用,也可以修改Common协议的代码,但要承担代码产生的侵权责任。
9. Eclipse Public License
EPL是一个与CPL相类似的许可证,任何扩展自Eclipse源码的代码也必须是开源的。
最后需特别提醒的是:
GPL的软件、社区软件、个人软件等是不允许用于商业用途的,也就是说这类软件不能成为商业软件的任何部分(如格式、协议或模块等),除开发GPL软件或个人学习、生活使用外!所以在商业使用自由软件时,需仔细辨别该软件的版权声明!
目前,现有软件主要分为如下四类:
- 专有软件:需要购买,然后才能使用,且只能使用该软件而不能作其他用途。如修改、分享、再发布等。
- 共享软件:基本上就是专有软件,但你能在实际购买前试用。
- 免费软件:你可以自由的分享和使用该软件,但你无法修改该软件,因为该软件的源代码不是公开的。
- 开源软件/自由软件:你能够自由分享该软件与其源代码、使用该软件并可随意修改该软件源码 - 这给予了你最大的自主权。
常见的开源协议有:
*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
1. Apache License 2.0
Apache Licence是著名的非盈利开源组织Apache采用的协议。该协议和BSD类似,同样鼓励代码共享和尊重原作者的著作权,同样允许代码修改,再发布(作为开源或商业软件)。需要满足的条件:
1) 需要给代码的用户一份Apache License
2)如果你修改了代码,需要在被修改的文件中说明。
3)在延伸的代码中(修改和有源代码衍生的代码中)需要带有原来代码中的协议,商标,专利声明和其他原来作者规定需要包含的说明。
4)如果再发布的产品中包含一个Notice文件,则在Notice文件中需要带有Apache License。你可以在Notice中增加自己的许可,但不可以表现为对Apache License构成更改。
Apache Licence也是对商业应用友好的许可。使用者也可以在需要的时候修改代码来满足需要并作为开源或商业产品发布/销售。
要点:商业软件可以使用,也可以修改使用Apache协议的代码。
2. New and Simplified BSD licenses
BSD开源协议是一个给于使用者很大自由的协议。可以自由的使用,修改源代码,也可以将修改后的代码作为开源或者专有软件再发布。当你发布使用了BSD协议的代码,或则以BSD协议代码为基础做二次开发自己的产品时,需要满足三个条件:
1)如果再发布的产品中包含源代码,则在源代码中必须带有原来代码中的BSD协议。
2)如果再发布的只是二进制类库/软件,则需要在类库/软件的文档和版权声明中包含原来代码中的BSD协议。
3)不可以用开源代码的作者/机构名字和原来产品的名字做市场推广。
BSD代码鼓励代码共享,但需要尊重代码作者的著作权。BSD由于允许使用者修改和重新发布代码,也允许使用或在BSD代码上开发商业软件发布和销售,因此是对商业集成很友好的协议。而很多的公司企业在选用开源产品的时候都首选BSD协议,因为可以完全控制这些第三方的代码,在必要的时候可以修改或者二次开发。
要点:商业软件可以使用,也可以修改使用BSD协议的代码。
3. 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协议的代码。
4. 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协议的代码。
5. MIT license
MIT是和BSD一样宽松的许可协议,作者只想保留版权,而无任何其他了限制.也就是说,你必须在你的发行版里包含原许可协议的声明,无论你是以二进制发布的还是以源代码发布的.
要点:商业软件可以使用,也可以修改MIT协议的代码,甚至可以出售MIT协议的代码。
6. Mozilla Public License 1.1 (MPL)
MPL协议允许免费重发布、免费修改,但要求修改后的代码版权归软件的发起者。这种授权维护了商业软件的利益,,它要求基于这种软件得修改无偿贡献版权给该软件。这样,围绕该软件得所有代码得版权都集中在发起开发人得手中。但MPL是允许修改,无偿使用得。MPL软件对链接没有要求。
要点:商业软件可以使用,也可以修改MPL协议的代码,但修改后的代码版权归软件的发起者。
7. Common Development and Distribution License
CDDL(Common Development and Distribution License,通用开发与销售许可)开源协议,是MPL(Mozilla Public License)的扩展协议,它允许公共版权使用,无专利费,并提供专利保护,可集成于商业软件中,允许自行发布许可。
要点:商业软件可以使用,也可以修改CDDL协议的代码。
8. Common Public License 1.0
Common许可证有一些细节性的规定值得参考:
* 明确了专利授权。一般的开源软件都明确源代码的版权人将自己的修改权、复制权等版权权利向公众许可,但保留署名权,而Common许可证在此基础上还明确假如源代码中含有专利权,源代码专利权人将复制、使用的专有权利向公众许可。
* 规定可以将源代码及修改过的源代码与其他类型的不受本许可证约束的代码结合,以新产品的形式发布,只要其中经该许可证获得的源代码及修改过的源代码能按该许可证的要求发布即可。
* 细化了该许可证终止的情形,包括发生专利侵权诉讼。
* 明确了一个独立承担责任的原则,就是假如按该许可证使用源代码的使用者将获得的源代码应用于商业使用,那么他就要对在商业应用中出现的由于使用该源代码程序而产生的侵权诉讼承担完全责任。这一条规定是比较特殊的,绝大多数开源软件许可证都不这么要求。
要点:商业软件可以使用,也可以修改Common协议的代码,但要承担代码产生的侵权责任。
9. Eclipse Public License
EPL是一个与CPL相类似的许可证,任何扩展自Eclipse源码的代码也必须是开源的。
最后需特别提醒的是:
GPL的软件、社区软件、个人软件等是不允许用于商业用途的,也就是说这类软件不能成为商业软件的任何部分(如格式、协议或模块等),除开发GPL软件或个人学习、生活使用外!所以在商业使用自由软件时,需仔细辨别该软件的版权声明!