在介绍大名鼎鼎的 Apache Software Foundation 之前有必要介绍一下各种开源软件协议。
提到开源软件,往往有一个误解:“连源码都可以拿到,我是不是可以为所欲为了呢?”
——当然不是,因为开源不等于免费! 那么,使用开源软件都有哪些要求呢?
别急,在介绍各种开源软件协议之前又不得不提GNU这个“自由软件计划”。
【GNU】GNU是“GNU's Not Unix”的递归缩写。
创始人:Richard Stallman。
时间:1983年9月27日。
目标:创建一套完全自由的操作系统。
理由:“重现当年软件界合作互助的团结精神”。
为保证GNU软件可以自由地“使用、复制、修改和发布”,所有GNU软件都有这样一个条款:禁止任何人对GNU软件添加任何限制。这就是GNU通用公共许可证(GNU General Public License,GPL),简单的说,就是必须“开源+免费”。
【FSF】Free Software Foundation 自由软件基金会
为了给GNU计划提供技术、法律以及财政支持,Richard Stallman在1985年又创立了FSF。
【OSI】Open Source Initiative 开源促进会
“The Open Source Initiative is an organization dedicated to promoting open-source software.”
(摘自http://en.wikipedia.org/wiki/Open_Source_Initiative)
属于OSI-Approved的licenses有很多,像大家经常看到的Apache,GPL,LGPL,MIT。OSI 的要求之一是二进制文件和源代码的自由发放。
详细信息请访问:http://en.wikipedia.org/wiki/Open_source_license 或 http://www.opensource.org/licenses。
1. GPL License:GNU General Public License
允许自由地“使用、复制、修改和发布”,但修改和发布后的软件也必须是可以自由“使用、复制、修改和发布”的。因此 GPL 大大限制了商业软件使用GPL授权的软件,如果非法使用,将面临起诉的风险。目前 GPL 授权的项目有:linux、gnome、kde、Emacs、gcc。
GPL 的出发点是代码的开源/免费使用和引用/修改/衍生代码的开源/免费使用,但不允许修改后和衍生的代码做为闭源的商业软件发布和销售,即必须也是开源和免费,这就是所谓的”传染性”。
由于 GPL 严格要求使用了 GPL 类库的软件产品必须使用 GPL 协议,对于使用 GPL 协议的开源代码,商业软件或者对代码有保密要求的部门就不适合集成/采用作为类库和二次开发的基础。
2. LGPL License Library/Lesser GPL
LGPL 是一个主要为类库使用设计的开源协议,是 GNU 为了得到商用软件开发商的支持而提出的。与 GPL 的最大不同是,LGPL 允许商业软件通过类库引用(link)方式使用 LGPL 类库而不需要开源商业软件的代码。这使得采用 LGPL 协议的开源代码可以被商业软件作为类库引用并发布和销售。即允许商业软件使用 LGPL 授权的自由软件,开发出来的新软件可以是私有的!
但是如果修改或衍生 LGPL 授权的代码,则所有修改和衍生的代码都必须符合 LGPL。因此 LGPL 协议的开源代码很适合作为第三方类库被商业软件引用,但不适合希望以 LGPL 协议代码为基础,通过修改和衍生的方式做二次开发的商业软件采用。
LGPL 鼓励大家尽可能广泛地使用一些特定的函数库,使它成为实际上的标准。
小结:GPL/LGPL在大力倡导知识共享的同时也十分注重保障原作者的知识产权,避免有人利用开源代码复制并开发类似的产品。详细信息请访问:http://www.gnu.org/licenses/gpl.html 。
3. BSD开源协议
BSD 开源协议是一个给于使用者很大自由的协议。基本上使用者可以”为所欲为”,可以自由的使用,修改源代码,也可以将修改后的代码作为开源或者专有软件再发布。
但“为所欲为”的前提当你发布使用了 BSD 协议的代码,或则以 BSD 协议代码为基础做二次开发自己的产品时,需要满足三个条件:
(1)如果再发布的产品中包含源代码,则在源代码中必须带有原来代码中的 BSD 协议。
(2)如果再发布的只是二进制类库/软件,则需要在类库/软件的文档和版权声明中包含原来代码中的 BSD 协议。
(3)不可以用开源代码的作者/机构名字和原来产品的名字做市场推广。
BSD 代码鼓励代码共享,但需要尊重代码作者的著作权。BSD 由于允许使用者修改和重新发布代码,也允许使用或在 BSD 代码上开发商业软件发布和销售,因此是对商业集成很友好的协议。而很多的公司企业在选用开源产品的时候都首选 BSD 协议,因为可以完全控制这些第三方的代码,在必要的时候可以修改或者二次开发。
4. Apache Licence 2.0
Apache Licence是著名的非盈利开源组织 Apache 采用的协议。该协议和 BSD 类似,同样鼓励代码共享和尊重原作者的著作权,同样允许代码修改,再发布(作为开源或商业软件)。需要满足的条件也和 BSD 类似:
(1)需要给代码的用户一份 Apache Licence。
(2)如果你修改了代码,需要再被修改的文件中说明。
(3)在延伸的代码中(修改和有源代码衍生的代码中)需要带有原来代码中的协议,商标,专利声明和其他原来作者规定需要包含的说明。
(4)如果再发布的产品中包含一个 Notice 文件,则在 Notice 文件中需要带有 Apache Licence。你可以在 Notice 中增加自己的许可,但不可以表现为对 Apache Licence 构成更改。
(5)Apache Licence 也是对商业应用友好的许可。使用者也可以在需要的时候修改代码来满足需要并作为开源或商业产品发布/销售。
5. MIT
MIT 是和 BSD 一样宽范的许可协议,作者只想保留版权,而无任何其他了限制。也就是说,你必须在你的发行版里包含原许可协议的声明,无论你是以二进制发布的还是以源代码发布的。
问题1:MySQL是否免费?
MySQL同时拥有Commercial License和GPL License。如果是GPL项目,那么可以免费使用;如果是商业软件项目,则要购买Commercial License。
问题2:共享软件是否免费?共享软件是以“先使用后付费”的方式销售的享有版权的软件。这类软件一般是由个人开发完成,一般会对软件使用进行一定限制:如只能使用30天,或者某些高级功能无法使用。用户可以先试用,认为满意后再向作者付费,从而获得无限制的软件。
参考文献
1. http://www.awflasher.com/blog/archives/939
2. http://www.gnu.org/
3. http://www.fsf.org/
4. http://baike.baidu.com/link?url=8FpuiTcQzNvgkapxGBsqFtewe6feroTYUhkycaSGggk9wcVn3ooDFR6VJwr8h81glrCapTS7IJRytp-kpthYXq
5. http://www.chinaz.com/web/2009/1219/101662.shtml
6. http://blog.csdn.net/nightmare/article/details/12405109
提到开源软件,往往有一个误解:“连源码都可以拿到,我是不是可以为所欲为了呢?”
——当然不是,因为开源不等于免费! 那么,使用开源软件都有哪些要求呢?
别急,在介绍各种开源软件协议之前又不得不提GNU这个“自由软件计划”。
【GNU】GNU是“GNU's Not Unix”的递归缩写。
创始人:Richard Stallman。
时间:1983年9月27日。
目标:创建一套完全自由的操作系统。
理由:“重现当年软件界合作互助的团结精神”。
为保证GNU软件可以自由地“使用、复制、修改和发布”,所有GNU软件都有这样一个条款:禁止任何人对GNU软件添加任何限制。这就是GNU通用公共许可证(GNU General Public License,GPL),简单的说,就是必须“开源+免费”。
【FSF】Free Software Foundation 自由软件基金会
为了给GNU计划提供技术、法律以及财政支持,Richard Stallman在1985年又创立了FSF。
【OSI】Open Source Initiative 开源促进会
“The Open Source Initiative is an organization dedicated to promoting open-source software.”
(摘自http://en.wikipedia.org/wiki/Open_Source_Initiative)
属于OSI-Approved的licenses有很多,像大家经常看到的Apache,GPL,LGPL,MIT。OSI 的要求之一是二进制文件和源代码的自由发放。
详细信息请访问:http://en.wikipedia.org/wiki/Open_source_license 或 http://www.opensource.org/licenses。
1. GPL License:GNU General Public License
允许自由地“使用、复制、修改和发布”,但修改和发布后的软件也必须是可以自由“使用、复制、修改和发布”的。因此 GPL 大大限制了商业软件使用GPL授权的软件,如果非法使用,将面临起诉的风险。目前 GPL 授权的项目有:linux、gnome、kde、Emacs、gcc。
GPL 的出发点是代码的开源/免费使用和引用/修改/衍生代码的开源/免费使用,但不允许修改后和衍生的代码做为闭源的商业软件发布和销售,即必须也是开源和免费,这就是所谓的”传染性”。
由于 GPL 严格要求使用了 GPL 类库的软件产品必须使用 GPL 协议,对于使用 GPL 协议的开源代码,商业软件或者对代码有保密要求的部门就不适合集成/采用作为类库和二次开发的基础。
2. LGPL License Library/Lesser GPL
LGPL 是一个主要为类库使用设计的开源协议,是 GNU 为了得到商用软件开发商的支持而提出的。与 GPL 的最大不同是,LGPL 允许商业软件通过类库引用(link)方式使用 LGPL 类库而不需要开源商业软件的代码。这使得采用 LGPL 协议的开源代码可以被商业软件作为类库引用并发布和销售。即允许商业软件使用 LGPL 授权的自由软件,开发出来的新软件可以是私有的!
但是如果修改或衍生 LGPL 授权的代码,则所有修改和衍生的代码都必须符合 LGPL。因此 LGPL 协议的开源代码很适合作为第三方类库被商业软件引用,但不适合希望以 LGPL 协议代码为基础,通过修改和衍生的方式做二次开发的商业软件采用。
LGPL 鼓励大家尽可能广泛地使用一些特定的函数库,使它成为实际上的标准。
小结:GPL/LGPL在大力倡导知识共享的同时也十分注重保障原作者的知识产权,避免有人利用开源代码复制并开发类似的产品。详细信息请访问:http://www.gnu.org/licenses/gpl.html 。
3. BSD开源协议
BSD 开源协议是一个给于使用者很大自由的协议。基本上使用者可以”为所欲为”,可以自由的使用,修改源代码,也可以将修改后的代码作为开源或者专有软件再发布。
但“为所欲为”的前提当你发布使用了 BSD 协议的代码,或则以 BSD 协议代码为基础做二次开发自己的产品时,需要满足三个条件:
(1)如果再发布的产品中包含源代码,则在源代码中必须带有原来代码中的 BSD 协议。
(2)如果再发布的只是二进制类库/软件,则需要在类库/软件的文档和版权声明中包含原来代码中的 BSD 协议。
(3)不可以用开源代码的作者/机构名字和原来产品的名字做市场推广。
BSD 代码鼓励代码共享,但需要尊重代码作者的著作权。BSD 由于允许使用者修改和重新发布代码,也允许使用或在 BSD 代码上开发商业软件发布和销售,因此是对商业集成很友好的协议。而很多的公司企业在选用开源产品的时候都首选 BSD 协议,因为可以完全控制这些第三方的代码,在必要的时候可以修改或者二次开发。
4. Apache Licence 2.0
Apache Licence是著名的非盈利开源组织 Apache 采用的协议。该协议和 BSD 类似,同样鼓励代码共享和尊重原作者的著作权,同样允许代码修改,再发布(作为开源或商业软件)。需要满足的条件也和 BSD 类似:
(1)需要给代码的用户一份 Apache Licence。
(2)如果你修改了代码,需要再被修改的文件中说明。
(3)在延伸的代码中(修改和有源代码衍生的代码中)需要带有原来代码中的协议,商标,专利声明和其他原来作者规定需要包含的说明。
(4)如果再发布的产品中包含一个 Notice 文件,则在 Notice 文件中需要带有 Apache Licence。你可以在 Notice 中增加自己的许可,但不可以表现为对 Apache Licence 构成更改。
(5)Apache Licence 也是对商业应用友好的许可。使用者也可以在需要的时候修改代码来满足需要并作为开源或商业产品发布/销售。
5. MIT
MIT 是和 BSD 一样宽范的许可协议,作者只想保留版权,而无任何其他了限制。也就是说,你必须在你的发行版里包含原许可协议的声明,无论你是以二进制发布的还是以源代码发布的。
问题1:MySQL是否免费?
MySQL同时拥有Commercial License和GPL License。如果是GPL项目,那么可以免费使用;如果是商业软件项目,则要购买Commercial License。
问题2:共享软件是否免费?共享软件是以“先使用后付费”的方式销售的享有版权的软件。这类软件一般是由个人开发完成,一般会对软件使用进行一定限制:如只能使用30天,或者某些高级功能无法使用。用户可以先试用,认为满意后再向作者付费,从而获得无限制的软件。
参考文献
1. http://www.awflasher.com/blog/archives/939
2. http://www.gnu.org/
3. http://www.fsf.org/
4. http://baike.baidu.com/link?url=8FpuiTcQzNvgkapxGBsqFtewe6feroTYUhkycaSGggk9wcVn3ooDFR6VJwr8h81glrCapTS7IJRytp-kpthYXq
5. http://www.chinaz.com/web/2009/1219/101662.shtml
6. http://blog.csdn.net/nightmare/article/details/12405109
没有评论:
发表评论