
开源许可协定
自由软体/开源软体是自由的,免费的,原始码开放的,我们可自由下载安装和使用。同时,为了维护作者和贡献者的合法权利,保证这些软体不被一些商业机构或个人窃取,影响软体的发展,开源社区开发出了各种的开源许可协定。
基本介绍
- 中文名:开源许可协定
- 属于:自由的,免费的,原始码开放的
- 包含:可自由下载安装和使用
- 包括:60多种
开源许可协定的由来
自由软体/开源软体是自由的,原始码开放的,我们可自由下载安装和使用。同时,为了维护作者和贡献者的合法权利,保证这些软体不被一些商业机构或个人窃取,影响软体的发展,开源社区开发出了各种的开源许可协定。
人们不太容易区分一个软体是否真正开源的根本原因,在于开源研究院认可的许可有60多种。但在这60多种许可中,有一个许可明显主宰着开源世界。迪博纳说:“GPL(General Public License,通用性公开许可协定)是当今开源世界中最重要的许可。”根据迪博纳引述的Google所进行的研究,基于GPL的开原始码在所有开源软体中占45%---50%。
常见的几种开源许可协定:
GPL
GPL授予程式接受人以下权利,或称“自由”:
* 以任何目的运行此程式的自由
* 以学习程式工作机理为目的,对程式进行修改的自由(能得到原始码是前提)
* 再发行複製件的自由
* 改进此程式,并公开发布改进的自由(能得到原始码是前提)
相反地,随着作权所有软体的最终用户许可证几乎从不授予用户任何权利(除了使用的权利),甚至可能限制法律允许的行为,比如逆向工程。
GPL与其他一些更“许可的”自由软体许可证(比如BSD许可证)相比,主要区别就在于GPL寻求确保上述自由能在複製件及演绎作品中得到保障。它通过一种由Stallman发明的叫copyleft的法律机制实现,即要求GPL程式的演绎作品也要在GPL之下。相反,BSD式的许可证并不禁止演绎作品变成着作权所有软体。
COPYLEFT
GPL不会授予许可证接受人无限的权利。再发行权的授予需要许可证接受人开放软体的原始码,及所有修改。且複製件、修改版本,都必须以GPL为许可证。
这些要求就是copyleft,它的基础就是作品在法律上着作权所有。由于它着作权所有,许可证接受人就无权进行修改和再发行(除合理使用),除非它有一个copyleft条款。如果某人想行使通常被法律所禁止的权利,只需同意GPL的条款。相反地,如果某人发行软体违反了GPL(比如不开放原始码),他就有可能被原作者起诉。
copyleft利用着作权法来达到与其相反的目的:copyleft给人不可剥夺的权利,而不是着作权法所规定的诸多限制。这也是GPL被称作“被黑的着作权法”的原因。
许多GPL软体发行者都把原始码与可执行程式捆绑起来。另一方式就是以物理介质(比如CD)为载体提供原始码。在实践中,许多GPL软体都是在网际网路上发行的,原始码也有许多可以FTP方式得到。
copyleft只在程式再发行时发生效力。对软体的修改可以不公开或开放原始码,只要不发行。注意copyleft只对软体有效力,而对软体的输出并无效力(除非输出的是软体本身)。不过这在GPL版本3中可能会有改动。
LGPL
GNU宽通用公共许可证,简称LGPL(GNU Lesser General Public License),被用于一些(但不是全部)GNU程式库。这个许可证以前被称为GNU库(Library)通用公共许可证。
LGPL是GPL的变种,也是GNU为了得到更多的甚至是商用软体开发商的支持而提出的。与GPL的最大不同是,可以私有使用LGPL授权的自由软体,开发出来的新软体可以是私有的而不需要是自由软体。所以任何公司在使用自由软体之前应该保证在LGPL或其它GPL变种的授权下。
Apache License
Apache License是着名的非盈利开源组织Apache採用的协定。该协定和BSD类似,同样鼓励代码共享和尊重原作者的着作权,同样允许代码修改,再发布(作为开源或商业软体)。需要满足的条件:
* 需要给代码的用户一份Apache License
* 如果你修改了代码,需要再被修改的档案中说明
* 在延伸的代码中(修改和有原始码衍生的代码中)需要带有原来代码中的协定、商标、专利声明和其他原来作者规定需要包含的说明
* 如果再发布的产品中包含一个Notice档案,则在Notice档案中需要带有Apache License。你可以在Notice中增加自己的许可,但不可以表现为对Apache License构成更改
Apache License也是对商业套用友好的许可。使用者也可以在需要的时候修改代码来满足需要并作为开源或商业产品发布/销售。
BSD
BSD授权许可证(FreeBSD Copyright Information)具有多种授权许可证。总的来说你可以对软体任意处理,只要你在软体中注明其是来自于那个项目的就可以了。也就是说你具有更大的自由度来处置软体。如果你对软体进行了修改,你可以限制其他使用者得到你修改的软体的自由。
BSD授权许可证没有实现"通透性"自由,也就是其不保证软体原始码开放的连续性。这样如果你希望採用别人开发的BSD软体,进行一些修改,然后作为产品卖,或者仅仅保密自己的做的一些除了软体开发以外的工作,那幺你就可以从中得利。
当一个非程式设计师仅仅理解一个程式的功能,但是不了解程式是如何做的时,即使你没有在开发软体中做任何工作那你就可以通过高超的市场技巧将软体卖给该用户。比如拿最流行的桌面作业系统作为例子,你就能很好的理解一个没有很好的程式技巧的软体公司只要具有高超的市场行销策略同样可以将垃圾卖给客户。如果你不具有很强大的编程能力,但是具有很强的市场能力和能将其他开发者的软体包括到自己的系统,而同时不将自己的修改开放出来将是非常强大的能力。从赚钱为目的的商务角度看来,如果你使用了BSD授权许可证的软体,那幺你就可以任意进行。你可以更好地控制你的OS系统,并且防止其他人拷贝你的商业产品。
总结
简单的说,就是你使用了GPL许可证的软体,那幺你的软体产品就被GPL“传染”了,也必须“自由”!这对国内的商业软体开发商来说是很难接受的。但是LGPL, Apache License, BSD就不存在这个问题,后两者只要求你对软体原作者的工作进行必要的认可和尊重就行了,所以这是适合商业套用的。所以在选择套用开源软体时,一定要明白自己的用途,选择合适许可证下的软体。