GNU通用公共许可协议(英语:GNU General Public License,缩写GNU GPL 或 GPL),是被广泛使用的*软件许可证,给予了终端用户运行、学习、共享和修改软件的*。许可证最初由*软件基金会的理查德·斯托曼为GNU项目所撰写,并授予计算机程序的用户*软件定义(The Free Software Definition)的权利。 GPL是一个Copyleft许可证,这意味着派生作品只能以相同的许可条款分发。 这与宽松*软件许可证有所区别 ,如BSD许可证和MIT许可证就是其中被广泛使用的例子。 GPL是第一个普遍使用的Copyleft许可证。
历史上,GPL许可证系列一直是*和开源软件领域最受欢迎的软件许可之一。根据GPL许可的优异*软件程序的例子有Linux内核和GNU编译器集合(GCC)。大卫·A·惠勒认为,GPL提供的Copyleft对于基于Linux的系统的成功至关重要,给予向内核贡献的程序员保证他们的工作将有益于整个世界并保持*,而不至于被不提供反馈给社群的无良软件公司所剥削。
2007年,发布了第三版许可证(GNU GPLv3),以解决在长期使用期间发现的第二版(GNU GPLv2)所发生的一些困扰。 为了使许可证保持最新状态,GPL许可证包含一个可选的“并延伸到未来版本”条款,允许用户在FSF更新的原始条款或新版本之间进行选择。 有些开发人员在软件许可使用时,选择省略它; 例如,Linux内核已经在GPLv2下获得许可,就不需包括“并延伸到未来版本”的声明。
GPL授予程序接受人以下权利,或称“*”,或称“copyleft”:
基于任何目的,按你的意愿运行软件的*(*之零)。
学习软件如何工作的*,按你的意愿修改软件以符合你的计算的*(*之一)。可访问源代码是此项*的先决条件。
分发软件副本的*,因此你可以帮助你的好友(*之二)。
将你修改过的软件版本再分发给其他人的*(*之三)。这样可以让整个社区有机会共享你对软件的改动。可访问源代码是此项*的先决条件。[16]
相反地,随著作权所有软件的最终用户许可证几乎从不授予用户任何权利(除了使用的权利),甚至可能限制一些法律允许的行为,比如逆向工程。
GPL与其他一些更“许可的”*软件许可证(比如BSD许可证)相比,主要区别就在于GPL寻求确保上述*能在复制软件及派生作品中得到保障。它通过一种由斯托曼发明的叫Copyleft的法律机制实现,即要求GPL程序的派生作品也要在GPL之下。相反,BSD式的许可证并不禁止演绎作品变成专有软件。
GPL是*软件和开源软件的最流行许可证[17]。到2004年4月,GPL已占Freshmeat上所列的*软件的约75%,SourceForge的约68%。类似的,2001年一项关于Red Hat Linux 7.1的调查显示一般的代码都以GPL发布。著名的GPL*软件包括EMACS,Linux核心(并非所有Linux发行版的核心都是开源的)和GCC。
参考资源: