要了解开源许可协议,当然要从GNUGPL开始说起。这个许可协议究竟是如何诞生,又是如何被社区接受并广为使用的呢?请看下面的介绍。
GNUGPL条文概述
GNUGeneralPublicLicense,通常简称为GPL,是当下最为通用的开源许可协议。GPL的条文最早在1989年由RichardStallman(RMS)撰写,用于GNU项目。这位自由软件之父在当年提出了四大自由的诉求:
◆可以使用软件做任何事的自由
◆可以根据自己需要任意修改软件的自由
为了有效地保护这些自由,RMS将GPL定义为第一个、同时也是最为严格的Copyleft许可协议——也就是说,如果你使用了按照GPL发布的项目,那么你的项目也必须按照GPL许可协议发布,不得添加任何其他限制。(不过,Copyleft这个理念却不是从GPL开始,而是从20世纪70年代起就有人开始实行的。)使用GPL协议的代码制作的程序并非不能拿来卖钱,事实上RMS开始自由运动的第一笔经费就是通过售卖附在磁碟上的Emacs赚来的。GPL的主要规定在于源代码必须自由公开。之后为了增强此协议的Copyleft效力以及与专有软件代码以及其他协议代码的兼容性,RMS又先后在1991年和2007年敲定了GPLv2和GPLv3的条文。
使用GPL的知名开源项目
Linux:如日中天的操作系统,和Unix以及整个自由软件运动有着非常深的渊源。目前使用GPLv2(因此在理论上,所有的Linux发行版都遵循GPL许可协议)。
GNU系列:GNUEmacs,GNU调试器,GNUC编译器等等。当然,GNU项目已经在使用GPLv3。
WordPress:流行的博客系统,目前使用GPLv2。
Java:Java的HotSpot技术和Java语言编译器javac从2006年开始采用GPLv2,不过条款中在GPLv2允许的范围内使用了linkingexception(直译为连接例外),所以是一个修改过的GPLv2。另外,同属于Sun的Glassfish和NetBeansIDE也都采用此种许可协议。
#p#
GPL牵涉的法律案件回顾
可想而知,GPL在推出之后并开始流行的十多年间成为了很多专有软件厂商的眼中钉。最早的一起直接针对GPL的法律诉讼发生在2003年8月,身为原告方的SCOGroup以Linux内核中使用了IBMAIX代码,而AIX代码又使用了SCOUnix代码为由,将IBM告上了法庭。这一举动激发了Linux社区的公愤,IBM继而联手红帽针对SCO提起反诉与上诉;之后SCO开始恐吓不愿撤销SCOUnix使用权的Linux用户,并更进一步展开了对Novell、AutoZone和DaimlerChrysler的诉讼。这一系列诉讼逐渐演变成了一场旷日持久的战争。
虽然这场战争的主战场与GPL关系不大,但Linux一方的胜利还是为GPL增添了一定力量。在2007年,一个FLOSS一方的叫做SFLC(SoftwareFreedomLawCenter,软件自由法律中心)的法律团体以违反GPL协议为由,代表BusyBox的两位开发者将MonsoonMultimedia软件厂商告上了法庭。在此之前,针对违反GPL协议的处理方法一直是由FSF等开源组织私下沟通解决的,因此此案成为了美国第一例因GPL而立案的案件。不过,这宗诉讼最后以双方庭外和解的方式结束,GPL也因此失去了一次验证其法律有效性的机会。
为什么社区对GPL如此青睐?
“GPL代表了自由。”
“我使用GPL,因为微软讨厌它。我不用BSD,因为微软喜欢它。”
不过这种tit-for-tat模式并非是所有人的需求。比如说,如果你隶属标准委员会,你只是希望能够借由一段开源代码的传播来推广一个标准,而并不介意这段代码是否会被用在专有软件中盈利,那么Apache或BSD协议则比较合适。
即使单纯是从理性的角度来看,不同许可协议的存在也都是合理的。同时我也要说,程序员们并非在任何时刻都是理性的。自负的心理,个人的特殊需求,都是导致众多有细微差别的许可协议诞生的原因。
不过我们要知道,有选择是件好事!而且非常流行的许可协议并不是那么多,所以基本上没有什么可困扰的。”