从事linux开发的朋友一定都听过GPL,那么到底什么是GPL呢?他有什么作用呢?本文给大家做详细讲解。
一、GNU/GPL在讲解GPL之前,我们必须先了解什么是GNU?
1. 什么是GNUGNU:GNU's not unix。也叫革奴计划。
GNU的创始人,理查德·马修·斯托曼。
GNU是一个自由的操作系统,其内容软件完全以GPL方式发布。
这个操作系统是GNU计划的主要目标,名称来自**GNU's Not Unix!**的缩写 【这种递归式命名方法也只有程序猿大神才能想起来】
可以说GNU也是一个软件集合,如:Emas,gcc,bash,gawk等。
由于没有内核(可以理解成还在实验室里就GNU系统就被淘汰了)。
因为GNU的设计类似Unix,但它不包含具著作权的Unix代码。
2. GNU历史在二战(1939-1945)结束后,计算机产业刚刚兴起的时候,闭源软件的概念还未出生。那是个一切代码都免费共享,可以随意修改、再发行的时代。
后来,开始有人只发行闭源的程序,这通常是一种原始代码几乎不可能被单纯地破译的二进制文件。1983年,IBM成为大型企业中第一个发行闭源软件的公司;AT&T公司紧随其后,原本免费的Unix在更新后要价数万美元…
平日使用的Unix突然开始收费,还如此昂贵,这让很多人难以接受。
其中,有一个叫Richard Stallman(人称 RMS)的人站出来了。他推出了 GNU计划 ,希望有朝一日,从操作系统到各式应用软件,都能免费开源得让大家使用。
而具体的办法,就是在发布软件的同时包括我们今天提到的 GPL 许可证。
3. 什么是GPLGPL许可协议(GNU General Public License): 只要软件中包含有其他GPL协议的产品或代码,那么该软件就必须也采用GPL许可协议且开源及免费。
具有以下特点:
- 复制自由:允许将软件复制到任何人的电脑中,并且不限制复制的数量。
- 传播自由:允许以各种形式进行传播。
- 收费传播:允许在各种媒介上出售该软件,但必需提前让买家知道这个软件是可以免费获得的,并解释收费的理由(一般来讲都是能够为用户提供某种服务,以技术服务的形式来收费)。
- 修改自由:允许开发人员增加或删除软件的功能,但必须依然基于GPL许可协议授权。
总结成一句话,修改后必须以GPL授权开源发布。
只要在代码中加入这个名叫GPL的许可证,你就能保证软件的用户能够自由地运行、研究、分享和修改你的代码了。
而且,从你的软件衍生出的一切修改版本,都必须遵守这个许可协议。
一个有意思的地方是,拥有代码的人有权利用代码开发软件并盈利。
但是,在有人花钱买走软件之后,这个人可以随意把买到的软件分享给其他人,而不必担心侵权,甚至是被告上法庭——因为对于遵守开源协议的软件来说,压根不存在“盗版”的概念。
由此可见,开源协议大大地提高了软件使用者的权利。
理解了GNU的精神,也就能理解GPL在说些什么,其实就是开源。
在现实生活中,我们受益于 GPL的地方,其实很多,几乎所有的操作系统,除了windows,其他的几乎都是基于linux开源代码改写的。
5. 举例以下是Linux内核中网卡DM9000的驱动程序版权声明: