GNU通用公共许可协定(英语:GNU General Public License,缩写:GNU GPL、GPL),是一个广泛被使用的自由软体许可协定条款,最初由理察·斯托曼(Richard Matthrew Stallman)为GNU计画而撰写。此许可证最新版本为“第3版”(v3),于2007年6月29日发布。GNU宽通用公共许可证是改自GPL的另一个版本,其目的是为了套用于一些软体库。
由于某些原因,GPL成为了自由软体和开源软体的最流行许可证。到2004年4月,GPL已占Freshmeat上所列的自由软体的约75%,SourceForge的约68%。类似的,2001年一项关于Red Hat Linux 7.1的调查显示一般的代码都以GPL发布。着名的GPL自由软体包括Linux核心和GCC。
到1990年时,因为一些共享库而出现了对比GPL更宽鬆的许可证的需求。所以当GPL版本2在1991年6月发布时,另一许可证——程式库通用许可证(Library General Public License,简称LGPL)也随之发布,并记作“版本2”以示对GPL的补充。版本号在LGPL版本2.1发布时不再相同,而LGPL也被重命名为GNU宽通用公共许可证以体现GNU哲学观。
理察·斯托曼在GPLv2中所做的最大的改动就是增加了“自由还是死亡”("Liberty or Death")这章条款,即第七章liberty-or-death Presentation。这章中申明道,如果哪个人在发布源于GPL的软体的时候,同时添加强制的条款,以在一定程度上保障和尊重其它一些人的自由和权益(也就是说在一些国家里,人们只能以二进制代码的形式发布软体,以保护开发软体者的着作权),那幺他将根本无权发布该软体。
到了1990年,人们普遍认为一个限制性弱的许可证对于自由软体的发展是有战略意义上的好处的;因此,当GPL的第二个版本(GPLv2)在1991年6月发布时,与此同时第二个许可证程式库GNU通用公共许可证(LGPL, Library General Public License)也被发布出来并且一开始就将其版本定为第2版本以表示其和GPLv2的互补性。这个版本一直延续到1999年,并分支出一个派生的LGPL版本号为2.1,并将其重命名为轻量级通用公共许可证(又称宽通用公共许可证,Lesser General Public License)以反映其在整个GNU哲学中的位置。
GPLv3
到2005年,GPL版本3正由斯托曼起草,由伊本·莫格林和软体自由法律中心(Software Freedom Law Center)提供法律谘询。
斯托曼在2006年2月25日自由及开源软体开发者欧洲会议的演讲上说:
在所有的改动中,最重要的四个是: 解决软体专利问题;
与其他许可证的兼容性;
原始码分区和组成的定义;
解决数位着作权管理问题。
2006年,自由软体基金会针对GPL的可能的修改开始了12个月的公共谘询。Stallman GPLv3 launch MIT
一个关于GPL重要的争议是,非GPL软体是否可以动态连结到GPL库。GPL对GPL作品的演绎作品在GPL下发布规定很明确。但是对于动态连结到GPL库的作品是否是演绎作品就规定得不清楚了。自由和开放原始码社区为此分成两派,自由软体基金会认为这种作品就是演绎作品,但其他专家并不同意。这个问题根本的并不关乎GPL本身,而是一个着作权法如何定义演绎作品。美国联邦抗诉法院第九巡迴审判庭在Galoob v. Nintendo案对演绎作品尝试定义,但最终没有明确的结果。
2001年微软的执行长史蒂夫·鲍尔默称Linux为“癌症”,因为GPL的影响。微软批评者指出,微软憎恶GPL的真正原因是因为对微软的“包围、扩展、消灭”策略起了反作用。注意微软已以GPL为许可证发行了SFU(Microsoft Windows Services for UNIX)中所包含的部分组件,例如GCC。