1.1 Linux、GNU、GPL的关系
Linux是一种开放源代码的操作系统,可以安装在包括服务器、个人计算机,乃至PDA(Personal Digital Assistant,掌上电脑)、手机、打印机等各类设备中。Linux隶属于GNU(GNU is Not Unix,自由软件组织),遵循GPL(General Public License,GNU公共许可证),这么一说,读者是不是有点蒙,GNU是什么?GPL又是什么?
1.1.1 什么是Linux
1991年,芬兰人Linus Torvalds为了满足读写新闻和邮件的需求,打算开发自己的操作系统。他选择了开放源码的Minix系统,并编写了自己的磁盘驱动程序和文件系统,然后把源代码上传到互联网。Linus把这个操作系统命名为Linux,意指“Linus的Minix”(Linus' Minix)。被放到互联网上的Linux迅速发展,到1994年,内核1.0版正式发布,接着是1996年的2.0版本,一直到现在的4.4版本。
Linux的发展依靠的是一批乐于奉献的程序员,正是因为他们,无数的程序员投身到各种开源项目中,并且各类社区蓬勃发展。从国外公司来看,Sun、IBM、Novell、Google、Microsoft等都拥有自己的开放源代码社区,国内的阿里也开放了很多自己的源码。
源码太多后,如何管理、如何使用、个人如何用、公司如何用就变成了亟需解决的问题。目前,世界上已经存在多种不同的开放源代码许可证协议,包括BSD(Berkeley Software Distribution,这里特指BSD许可证)、Apache、GPL、MIT(The MIT License,MIT许可协议)、LGPL(GNU Lesser General Public License,GNU宽通用公共许可证)等。其中的一些比较宽松,如BSD、Apache和MIT,用户可以修改源代码,并保留修改部分的版权。Linux所遵循的GPL协议相对较严格,它要求用户将所做的一切修改必须回馈社区,这也是Linux能够快速发展的原因。
提到Linux,提到开源,提到开源协议,Linux新手总是混淆GPL协议和GNU的关系,以为都是一种协议,其实不然,下一小节我们先说一下什么是GNU。
1.1.2 什么是GNU(自由软件组织)
Richard Stallman(史托曼)1974年毕业于哈佛(Harvard)大学物理专业。毕业后进入MIT人工智能实验室做程序开发工作。1983年9月,Stallman公开宣布一项称为“GNU”的计划。GNU是“GNU's Not Unix”的简称。它的目标是创建一套完全自由的操作系统。Richard Stallman最早是在net.unix-wizards新闻组上公布该消息,并附带一份《GNU宣言》,公开目的是要“重现当年软件界合作互助的团结精神”。
GNU是一个类似Unix的操作系统,是我们常说的“自由软件”。之后,Stallman设立了“自由软件基金会(FSF)”,聘用程序员编写自由软件程序,为自由软件运动(movement)提供一个合法的框架(alegal infrastructure)。
1991年,Linus Torvalds开发出了Linux程序模块,后来与GNU成功融合成了GNU/Linux操作系统,其间推出了许多Linux发行版,尤其是2004年发布的Ubuntu发行版(属于GNU系列),使GNU事业得以蓬勃发展至今。
1.1.3 什么是GPL(GNU公共许可证)
GNU通用公共许可证(GNU General Public License,GPL)包括Linux在内的一批开源软件遵循的许可证协议。对于考虑部署Linux或者其他遵循GPL的产品的企业,必须了解GPL中到底说了些什么?
为了让读者能明白,这里举个例子:
假如你发布了一个程序的副本,不管是收费的还是免费的。在GPL下,你必须将你具有的一切权利给予你的接受者,你必须保证他们能收到或得到源程序;并且让他们知道他们有这样的权利。
概括说来,GPL包括下面这些内容。
·软件最初的作者保留版权。
·其他人可以修改、销售该软件,也可以在此基础上开发新的软件,但必须保证这份源代码向公众开放。
·经过修改的软件仍然受到GPL的约束—除非能够确定经过修改的部分是独立于原来作品的。
·如果软件在使用中造成了损失,开发人员不承担相关责任。
完整的GPL协议可以在互联网上通过各种途径(如GNU的官方网站www.gnu.org)获得,GPL协议已经被翻译成中文,读者可以在“百度”中搜索“GPL”获得相关信息。