开源软件许可协议整理
随着社会科技技术的日益发展,在IT行业中开源软件也越来越来和活跃。但凡你所想应用的领域都能找到相应的开源软件。随着开源的发展,也有越来越多的人系统将自己的成果公开共享,发布出来作为开源软件。
无论是使用开源软件还是自己发布开源软件,需涉及到软件的许可协议。那么:
1、 软件许可协议是什么?
2、 开源软件常见有哪些软件许可协议呢?
3、 不同的许可协议能够带给你什么呢?
4、 不同的许可协议间如何选择适合自己的?
在此,本人也是本着知识共享的心态,特查阅并整理了本篇文章,以便自己及大家对这一知识的学习。其中不足及错误之处,敬请指明。如需拿去,请注明转载。
软件许可协议是什么?
软件许可协议:即你所授权其他人使用你的软件作品的权利。通过对你软件作品的各个方面逐一授权,依据许可协议可以明确确定其他人是否侵权,从而很好地保护你的权利。但你必须从你设计、开发软件的繁忙之中抽出大量时间来研究专业的许可条款。否则,你就要从繁忙之中抽出大量时间处理各种侵权问题。
开源许可协议是目前开源软件行业已广泛应用于开源软件之上的软件许可协议,从而使我们不必再费心去研究专业许可条款。借用现有的开源软件许可协议,在便于我们贡献自己的成果作品外,也保护了我们作为作品的原创者(至少拥有作为贡献者的名声)。
常见开源软件许可协议
GPL(GPLv1)
GNU General Public License,简称GNU GPL或GPL,GNU 通用公共许可协议,由斯托曼撰写,用于GNU计划。它以GNU Emacs、GDB、GCC的许可协议的早期版本为蓝本。是在开源项目中使用最广泛的一种协议。更多的信息参考文章 GPL 协议实用手册 (作者 @PierreJoye)。
即GPLv1,GPL最初的版本,发布于1989年一月,其目的是防止阻碍自由软件的行为(主要有两种:一种是软件发布者只发布可执行的二进制代码而不发布具体源代码,另一种是软件发布者在软件许可加入限制性条款)。按照GPLv1,如果发布了可执行的二进制代码,就必须同时发布可读的源代码,并且在发布任何基于GPL许可的软件时,不能添加任何限制性的条款。
GPL 对开发开源软件的开发者们在权利上进行了周详的认可和保障。本质上讲,它允许用户对软件进行合法的拷贝,传播和修改(即:随意复制,随意传播,随意修改),但GPL 要求,要想使用 GPL 协议下的软件也必须置于 GPL 协议之下,因此开发者不能够在商业的和具有私有权的软件里使用GPL协议下的程序。
你可以销售在GPL协议下的软件,但你必须将一份GNU GPL 协议和你卖出的软件一起给买主,以让买主知道这种软件是可以通过其它途径免费获得的。最好是事先人知道这些,以及你为什么要出售它们。
以GPL为代表的自由软件有linux、gcc、gnome等。
如果开源软件的开发要借助社区的力量,那么最好是用GPL授权,因为这样可以防止商业软件抢走用户而导致的开源软件的使用者和开发者都不足。
GPLv2
1991年6月发布,与GPLv1相比最大的改动就是理查德·斯托曼增加了“自由还是死亡”("Liberty or Death")这章条款,即第七章 liberty-or-death Presentation(这章中申明道:如果哪个人在发布源于GPL的软件的时候,同时添加强制的条款,以在一定程度上保障和尊重其它一些人的自由和权益,那么他将根本无权发布该软件)。
GPLv3
2007年6月29日发布,与之前版本主要在针对四个问题(解决软件专利问题;与其他许可协议的兼容性;源代码分区和组成的定义;解决数位版权管理问题)进行了改动。
LGPL
GNU Lesser General Public License,轻量级通用公共许可协议(又称宽通用公共许可协议),1991年6月,与GPLv2同时发布出来(并将其版本定为第2版本以表示其和GPLv2的互补性)。
一般简称LGPL,GNU宽通用公共许可协议,是改自GPL的另一个版本,其目的是为了应用于一些软件库。它对作品的使用保留了更少的权利。它允许这些类库能够被非GPL或非开源软件引用。
以LGPL为代表的自由软件有cygwin、berkleyDB、KDE等。
如果社区开发的软件希望能在更大的范围内被使用,可以采用LGPL。
BSD
一种宽松的自由软件协议,相对其它协议(例如GPL)来说,它们对软件的传播给予了更少的限制。允许自由使用,修改源代码,及将修改后的代码作为开源或者专有软件再发布。 但当你发布使用BSD协议的代码或以BSD协议代码为基础二次开发的产品时,需要满足三个条件:
1. 如果再发布的产品中包含源代码,则在源代码中必须带有原来代码中的BSD协议。2. 如果再发布的只是二进制类库/软件,则需要在类库/软件的文档和版权声明中包含原来代码中的BSD协议。
3. 不可以用开源代码的作者/机构名字和原来产品的名字做市场推广。
由于BSD协议的特性,因此其成为了商业集成很友好的协议,也成为了很多公司企业在选用开源产品时候的首选协议(因为可以完全控制这些第三方的代码,在必要的时候可以修改或者二次开发)。
以BDS为代表的软件有Xwindows、FreeBDS、Perl、Python、Ruby、Zope等。
如果开源软件的开发部需要借助社区的力量,而是封闭开发,使用BSD授权是最恰当的授权。
Apache
著名的非盈利开源组织Apache采用的协议。该协议和BSD类似,鼓励代码共享和对原作者著作权的尊重,同时允许代码修改,再发布(作为开源或商业软件),在其授予用户大量权利中不仅可以应用于拷贝权,也可以用于专利权,从而使其成了有专利的开发者们选择许可协议时的一个显著参考因素。在你发布使用BSD协议的代码或以BSD协议代码为基础二次开发的产品时,需要满足四个条件:
1.需要给代码的用户一份Apache Licence;
2.需要在被修改的文件中说明。
3. 需要在延伸的代码中(修改和有源代码衍生的代码中)附带原来代码中的协议,商标,专利声明和其他原来作者规定需要包含的说明。
4. 需要在发布的产品Notice文件(如果有)中附带Apache Licence。可以在Notice中增加自己的许可,但不可以对Apache Licence构成更改。
MIT
流行的开源协议中最简短的、使用最广泛的一种协议。与其它协议相比更加宽松及自由。
这种协议最基本的条款为:特此授权,任何人都可免费获得这个软件以及相关文档的拷贝,可以无限制的使用这个软件,包括无限制的权利去使用、复制、修改、合并、发布、附加从属协议,以及/或者出售软件的拷贝, 同时,为了让软件的提供者有权利做到这些,必须遵守下面的条件:
上面的拷贝权声明和许可声明必须包含在所有的这个软件拷贝里和实际分署部分里。
这也就是说:
1、可以随意使用,复制,修改这个软件;
2、可以向外免费发放,或出售;
3、唯一的限制是你必须接受协议条款。
MIT 协议是目前最少限制的协议。它基本上就是任何人可以对这个协议下的软件的做任何的事情,只要你能认可这个协议。
MPL
允许免费重发布、免费修改,但要求修改后的代码版权归软件的发起者,这样发起者和组织者具有更优越的地位。
MPL一般也是同时遵守LGPL的。这是因为GPL比较严格,不会产生另一个商业的竞争者。MPL也是对商业友好的。并且用一些优惠来鼓励商业软件开源。
MPL授权是商业软件想要借助社区的力量的产物。
以MPL为代表的软件有mozilla等。
最后对GPL再做下规整:
优点:开放源代码,能够保证开发成果不被商业竞争对手掠夺、用户的忠诚及稳定的社区开发者来源。
缺点:不能商业使用,限制了代码的应用范围,也就无法获得商业开发带来的好处。
适用范围:GPL软件生存的前提是用户数量要大,特殊的开发要求要少,适合通用软件。
变种:LGPL允许各种库被商业使用(如cygwin、berkleyDB、KDE);MPL要求所有的修改都将版权无偿归软件的创始人所有,而创始人能决定代码的商业使用或改变授权形式。
针对上面第三、四个问题,可以从上面常见开源软件许可协议介绍中寻找答案,我这就不再赘述了。
开源软件许可协议可参见:http://www.opensource.org/licenses/。