要了解开源许可协议,当然要从GNU GPL开始说起。这个许可协议究竟是如何诞生,又是如何被社区接受并广为使用的呢?请看下面的介绍。
GNU GPL条文概述
GNU General Public License,通常简称为GPL,是当下最为通用的开源许可协议。GPL的条文最早在1989年由Richard Stallman(RMS)撰写,用于GNU项目。这位自由软件之父在当年提出了四大自由的诉求:
◆可以使用软件做任何事的自由
◆可以根据自己需要任意修改软件的自由
◆可以与别人分享软件的自由
◆可以与别人分享自己对软件所做改动的自由
为了有效地保护这些自由,RMS将GPL定义为第一个、同时也是最为严格的Copyleft许可协议——也就是说,如果你使用了按照GPL发布的项目,那么你的项目也必须按照GPL许可协议发布,不得添加任何其他限制。(不过,Copyleft这个理念却不是从GPL开始,而是从20世纪70年代起就有人开始实行的。)
使用GPL协议的代码制作的程序并非不能拿来卖钱,事实上RMS开始自由运动的第一笔经费就是通过售卖附在磁碟上的Emacs赚来的。GPL的主要规定在于源代码必须自由公开。之后为了增强此协议的Copyleft效力以及与专有软件代码以及其他协议代码的兼容性,RMS又先后在1991年和2007年敲定了GPLv2和GPLv3的条文。
使用GPL的知名开源项目
根据Black Duck Open Source Resource Center(直译为黑鸭子开源资源中心,由Black Duck软件公司发起建立并维护的数据库)的调查,目前使用GNUGPLv2的开源项目是最多的。到今天为止(2010年5月)的统计中,GPLv2占据了全部开源项目当中48.54%的比例,而GPLv3的使用率也已经不低,达到了5.61%。这其中包括很多我们所熟悉的开源项目:
Linux:如日中天的操作系统,和Unix以及整个自由软件运动有着非常深的渊源。目前使用GPLv2(因此在理论上,所有的Linux发行版都遵循GPL许可协议)。
GNU系列:GNU Emacs,GNU调试器,GNU C编译器等等。当然,GNU项目已经在使用GPLv3。
eMule电驴:众所周知的P2P下载工具,目前使用GPLv2。有兴趣的读者可以看看他们翻译的非官方GPL中文文本。
WordPress:流行的博客系统,目前使用GPLv2。
Java:Java的HotSpot技术和Java语言编译器javac从2006年开始采用GPLv2,不过条款中在GPLv2允许的范围内使用了linking exception(直译为连接例外),所以是一个修改过的GPLv2。另外,同属于Sun的Glassfish和NetBeansIDE也都采用此种许可协议。
MySQL:著名的开源数据库。MySQL采用的是双重许可协议——带有例外的GPLv2,以及专有类型的最终用户许可协议。这种双重许可的方式是开源软件发展多年的一个产物,这种方式允许厂商通过售卖开源软件的许可证赚钱,为想要使用GPL开源项目而又不想公开自己代码的用户提供了另一种选择。
至于这种方法是否有利于开源界,以及是否会被用来钻空子,目前还无法得出明确的结论。不过可以肯定的一点是,因为MySQL在GPLv2下发布,所以无论之后发生什么事,MySQL这个开源技术都是不可能被扼杀的。