GPL
GPL,是“通用性公开许可证”(General Public License,简称GPL)的简称。GPL同其它的自由软件许可证一样,许可社会公众享有运行、复制软件的自由;发行传播软件的自由;获得软件源码的自由,以及改进软件并将自己作出的改进版本向社会发行传播的自由。
基于 GPL 的软件允许商业化销售,但不允许封闭源代码。如果您对遵循 GPL 的软件进行任何改动和/或再次开发,则您的产品必须继承 GPL 协议,不允许封闭源代码。
GPL还规定,只要这种修改文本的整体或者其某个部分来源于遵循GPL的程序,则该修改文本的整体就必须按照GPL流通,不仅该修改文本的源码必须向社会公开,而且对于这种修改文本的流通不准许附加修改者自己做出的限制。因此,遵循GPL流通的程序不能同非自由的软件合并。GPL所表达的这种流通规则称为copyleft,表示与copyright(版权)的概念“相左”。
GPL和软件是否免费无关,它主要目标是保证软件对所有的用户来说是自由的。GPL 通过如下途径实现这一目标:
- 它要求软件以源代码的形式发布,并规定任何用户能够以源代码的形式将软件复制或发布给别的用户。
- 它提醒每个用户,对于该软件不提供任何形式的担保。
- 如果用户的软件使用了受 GPL 保护的任何软件的一部分,那么该软件就继承了 GPL 软件,并因此而成为 GPL 软件,也就是说必须随应用程序一起发布源代码。
- GPL 并不排斥对自由软件进行商业性质的包装和发行,也不限制在自由软件的基础上打包发行其他非自由软件。
遵照 GPL 的软件并不是可以任意传播的,这些软件通常都有正式的版权,GPL在发布软件或者复制软件时声明限制条件。但是,从用户的角度考虑,这些根本不能算是限制条件,相反用户只会从中受益,因为用户可以确保获得源代码。
尽管 Linux 内核也属于 GPL 范畴,但 GPL 并不适用于通过系统调用而使用内核服务的应用程序,通常把这种应用程序看作是内核的正常使用。
假如准备以二进制的形式发布应用程序(像大多数商业软件那样),则必须确保自己的程序未使用 GPL 保护的任何软件。如果软件通过库函数调用而使用了别的软件,则不必受到这一限制。大多数函数库,受另一种 GNU 公共许可证,即 LGPL 的保护