GPL能够说是在开源项目中使用最普遍的一种协议来。 GPL 对开发开源软件的开发者们在权利上进行了周详的承认和保障。本质上讲,它容许用户对软件进行合法的拷贝,传播和修改。这意味着你能够: redis
把它拷贝到你本身的服务器上、你的客户的服务器上、你本身的电脑上,基本上任何你能想到的地方。对你拷贝的数量也没有任何限制。(译者按:中国人用盗版用惯了,估计对这点会很不觉得然。)服务器
在你的网站上作一个下载连接进行下载。拷贝到你的移动硬盘里送人。把原代码打印出来,站在屋顶散发(最好别这样作,会浪费纸,并且影响环境清洁)。ide
根据GPL v2的相关规定:只要这种修改文本在总体上或者其某个部分来源于遵循GPL的程序,该修改文本的总体就必须按照GPL流通,不只该修改文本的源码必须向社会公开,并且对于这种修改文本的流通不许许附加修改者本身做出的限制。网站
而在GPL v3的修订草案中,不只要求用户公布修改的源代码,还要求公布相关硬件,偏偏是这一条,因为触及和其余相关数字版权管理(DRM)及其产品的关系,而且也因为有和开源精神相违的地方,因此备受争议,甚至所以也遭到了有着“LINUX之父”之称的托瓦尔兹的反对。开放源代码
LGPL对做品的使用保留了更少的权利。一般,LGPL 适用于一些类库,它容许这些类库可以被非GPL或非开源软件引用。由于 GPL 要求,要想使用 GPL 保护下的代码,你必须把你的软件也置于 GPL 协议之下。开发者不可以在商业的和具备私有权的软件里使用GPL协议下的程序。而 LGPL 放弃了这些限制,它不要求其它程序也必须使用相同的协议才能使用这些代码程序。 设计
BSD 协议有不少分支,它们都表明了一种宽松的自由软件协议,相对其它协议,例如GPL,来讲,它们对软件的传播给予了更少的限制。
在这种协议的各类版本中,有两个版本格外的重要: 新 BSD 协议/修订版 BSD 协议和简化 BSD 协议/FreeBSD 协议。这两类协议都实现的对 GPL 兼容的自由软件协议,并且被 Open Source Initiative 承认为开源软件协议。 orm
新 BSD 协议(3-clause license)无任何限制的容许你以任何目的二次分发这种软件,惟一的要求是必须保留拷贝权的声明和协议里的软件权利放弃条款。这种协议还有一个限制,未经许可不得使用这个做品的全部曾经捐助者的署名。 新 BSD 协议和简化 BSD 协议的最主要的区别是后者删除了署名条款。 htm
MIT 协议应该是在流行的开源协议中最简短的、使用最普遍的一种协议。它的条款很是的宽松,并且跟其它协议相比更自由。 MIT 协议是目前最少限制的协议。它基本上就是任何人能够对这个协议下的软件的作任何的事情,只要你能承认这个协议。这种协议最基本的条款 ( the information that it is provided without warranty, which comprises the final paragraph)以下: 接口
特此受权,任何人均可免费得到这个软件以及相关文档(the Software)的拷贝,能够无限制的使用这个软件,包括无限制的权利去使用、复制、修改、合并、发布、附加从属协议,以及/或者出售软件的拷贝, 同时,为了让软件的提供者有权利作到这些,下面的条件必须遵照: ip
上面的拷贝权声明和许可声明必须包含在全部的这个软件拷贝里和实际分署部分里。
这也就是说:
- 你能够随意使用,复制,修改这个软件。没有人可以阻止你在任何工程里使用它,你能够复制任意次数、以任何形式,或按你的愿望修改它。
- 你能够向外免费发放,或出售。你能够随意的分发它,没有任何限制。
- 惟一的限制是你必须接受协议条款。
MPL是The Mozilla Public License的简写,是1998年初Netscape的 Mozilla小组为其开源软件项目设计的软件许可证。MPL许可证出现的最重要缘由就是,Netscape公司认为GPL许可证没有很好地平衡开发者对源代码的需求和他们利用源代码得到的利益。同著名的GPL许可证和BSD许可证相比,MPL在许多权利与义务的约定方面与它们相同(由于都是符合OSIA认定的开源软件许可证)。可是,相比而言MPL还有如下几个显著的不一样之处:
MPL虽然要求对于经MPL许可证发布的源代码的修改也要以MPL许可证的方式再许可出来,以保证其余人能够在MPL的条款下共享源代码。可是,在MPL许可证中对“发布”的定义是“以源代码方式发布的文件”,这就意味着MPL容许一个企业在本身已有的源代码库上加一个接口,除了接口程序的源代码以MPL许可证的形式对外许可外,源代码库中的源代码就能够不用MPL许可证的方式强制对外许可。这些,就为借鉴别人的源代码用作本身商业软件开发的行为留了一个豁口。
MPL许可证第三条第7款中容许被许可人将通过MPL许可证得到的源代码同本身其余类型的代码混合获得本身的软件程序。
对软件专利的态度,MPL许可证不像GPL许可证那样明确表示反对软件专利,可是却明确要求源代码的提供者不能提供已经受专利保护的源代码(除非他本人是专利权人,并书面向公众免费许可这些源代码),也不能在将这些源代码以开放源代码许可证形式许可后再去申请与这些源代码有关的专利。
对源代码的定义
而在MPL(1.1版本)许可证中,对源代码的定义是:“源代码指的是对做品进行修改最优先择取的形式,它包括:全部模块的全部源程序,加上有关的接口的定义,加上控制可执行做品的安装和编译的‘本来’(原文为‘Script’),或者不是与初始源代码显著不一样的源代码就是被源代码贡献者选择的从公共领域能够获得的程序代码。”
MPL许可证第3条有专门的一款是关于对源代码修改进行描述的规定,就是要求全部再发布者都得有一个专门的文件就对源代码程序修改的时间和修改的方式有描述。
Apache许可证(Apache License),是一个在Apache软件基金会发布的自由软件许可证,最初为Apache http服务器而撰写。Apache许可证要求被受权者保留版权和放弃权利的申明,但它不是一个反版权的许可证。
此许可证最新版本为“版本2”,于2004年1月发布。
Apache许可证在Apache社区内外被普遍使用。Apache基金会下属全部项目都使用Apache许可证,许多非Apache基金会项目也使用了Apache许可证:据统计,截至2008年4月,在sourceforge上有超过3000个项目使用了Apache许可证。
Apache 许可协议, 2.0 版本, 授予了用户大量的权利。这些权利能够应用于拷贝权,也能够用于专利权。由于不少许可协议只能适用于拷贝权,不适用于专利权,因此这个灵活性就成了让有专利的开发者们选择许可协议时的一个显著参考因素 (要想明白二者之间的不一样,请参考 How Stuff Works 上的这篇文章 )。
下面是关于 Apache 许可协议所容许的事项的详细说明:
一旦被受权,权利永久不失。
在一个国家里被受权,形同于在全部国家被受权。例如,你在美国,但许可权最初在印度被授予,你一样可使用这个被受权的程序。
你既不须要在使用以前支付任何的费用,也无需在每次使用时支付任何的费用,或者其它相似状况。
使用这种许可协议下的软件时,不妨碍你使用其它软件。
权利一旦授予,不可剥夺。也就是说,你在使用这个软件的过程当中,你无需担忧这种状况:当你开发出了使人羡慕的基于这种受权软件的衍生产品时,有人忽然跳出来对你说,抱歉,你将再也不被容许使用这个程序。(在这个协议里有个条款声明:若是你控告别人在这个许可协议下的产品有侵犯专利的行为,那你的受权将会自动终止,但这只是适用于有专利权的做品。只要你不搞有专利做品的诉讼,你永远无需担忧这种问题。)
对再分发的做品还有个特殊要求,总的就是说要给予这些程序的做者和许可协议的维护者适当的名誉。
Creative Commons (CC) 许可协议并不能说是真正的开源协议,它们大可能是被使用于设计类的工程上。 CC 协议种类繁多,每一种都受权特定的权利。 一个 CC 许可协议具备四个基本部分,这几个部分能够单独起做用,也能够组合起来。下面是这几部分的简介:
做品上必须附有做品的归属。如此以后,做品能够被修改,分发,复制和其它用途。
做品能够被修改、分发或其它操做,但全部的衍生品都要置于CC许可协议下。
做品能够被修改、分发等等,但不能用于商业目的。但语言上对什么是商业的说明十分含糊不清 (没有提供精确的定义),因此你能够在你的工程里对其进行说明。例如,有些人简单的解释非商业为不能出售这个做品。而另一些人认为你甚至不能在有广告的网站上使用它们。 还有些人认为商业仅仅指你用它获取利益。
这意味着你能够复制和分发它们,但你不能以任何方式修改它们,或基于它们进行二次创做。
上面提到过, CC许可协议的这些条款能够自由组合使用。大多数的比较严格的CC协议会声明 署名权,非商业用途,禁止衍生条款,这意味着你能够自由的分享这个做品,但你不能改变它和对其收费,并且必须声明做品的归属。这个许可协议很是的有用,它可让你的做品传播出去,但又能够对做品的使用保留部分或彻底的控制。最少限制的CC协议类型当属 署名协议,这意味着只要人们能维护你的名誉,他们对你的做品怎么使用都行。
CC许可协议更多的是在设计类工程中使用,而不是开发类,但没有人或妨碍你将之使用与后者。只是你必需要清楚各部分条款能覆盖到的和不能覆盖到的权利。
按照使用条件的不一样,开源软件许可证能够分为三类(严苛程度递减)
1. 使用该开源软件的代码再散布(redistribute)时,源码也必须以相同许可证公开。
表明许可类型:GPL, AGPL
2. 使用该开源软件的代码而且对开源代码有所修改后再散布时,源码必须以相同许可证公开。
表明许可类型:LGPL, CPL,CDDL, CPL,MPL等
3. 使用该开源软件的代码(包括修改)再散布(redistribute)时,没有特殊限制,只须要明记许可。
表明许可类型:ASL, BSD,MIT等