CentOS 5系统管理
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

第1部分 基础篇

第1章 Linux与开源软件

1.1 自由软件和开源运动

内容提要

1.了解自由软件和开源软件。

2.了解GNU和GNU项目。

1.1.1 自由软件简介

自由软件的鼻祖

Richard M. Stallman,自由软件的创始人,也是GNU Project和FSF的创始人。

Richard M. Stallman是GNU C编译器的首要作者,该编译器是一种可移植的优化编译器,它目前已经可以支持超过30种的体系结构和7种程序语言。除此之外,Stallman还编写过GDB、GNU Emacs等GNU应用程序。1991年,Stallman因为在20世纪70年代开发了第一个Emacs编辑器而获得了由计算机协会颁发的Grace Hopper奖。1990年,被授予麦克阿瑟基金奖,1996年获得瑞典皇家科学院名誉博士头衔。1998年,他与Linux的创始人Linus Torvalds一起获得了EFF授予的先锋奖。

自由软件赋予使用者四种自由

1.不论目的为何,有使用该软件的自由(自由之零)。

2.有研究该软件如何运作的自由,并且可以改写该软件来符合使用者自身的需求(自由之一)。取得该软件之源码为达成此目的之前提。

3.有重新散布该软件的自由,所以每个人都可以借由散布自由软件来敦亲睦邻(自由之二)。

4.改善再利用该软件的自由,并且可以发表改写版供公众使用,如此一来,整个社群都可以受惠。如前项,取得该软件之源码为达成此目的之前提(自由之三)。

1.1.2 FSF、GNU和GNU Project

自由软件基金会

自由软件基金会(Free Software Foundation,FSF)是倡导自由软件和开源软件的国际性非盈利组织,对于国际开源社区的形成和发展起到了重要的推动作用。自由软件基金会的网址为http://www.fsf.org/。

FSF是一个免税的为自由软件发展的慈善团体,它接受捐款,但是其大部分收入常常来自销售自由软件的拷贝和其他相关的服务。如今,FSF出售源码的CD-ROM、二进制代码的CD-ROM、精细打印的手册(均有再散布和修改的自由),以及豪华发行(为用户选择的平台制作完整的软件收藏)。

GNU

GNU是由“GNU's Not Unix”所递归定义出的首字母缩写语。GNU的首要目标是作为自由软件。即便GNU不比UNIX有技术优势,它却有一个允许用户合作的社会优点,以及一个与道德有关的优点,也就是尊重用户的自由。

GNU项目

GNU项目是FSF支持的最著名的开源软件项目,其“角马”形象和“Free as in Freedom”的哲学理念早已在国际开源社区中广为流传。

GNU项目(GNU Project)开始于1984年,旨在发展一个类似UNIX,且为自由软件的完整操作系统。GNU操作系统也包括非GNU软件程序,这些程序是由其他人或工程为了他们自己的目的而开发的。之所以能用它们是因为它们是自由软件。

GNU项目由很多独立的自由/开源软件项目组成。如今,这些GNU中的软件项目已经和Linux内核一起成为GNU/Linux的组成部分。这体现了GNU项目对于整个开源软件和Linux操作系统的重要贡献。

GNU项目的官方站点为http://www.gnu.org/。

1.1.3 自由软件协议

Copyleft

在GNU工程中,通常使用Copyleft授权。Copyleft授权是使一个程序成为自由软件的通用方法,同时也使得这个程序的修改和扩展版本成为自由软件。

私有软件开发者用版权(Copyright)剥夺了用户自由使用知识产品的权力,Copyleft是相对Copyright而言的,它保证了用户自由使用知识产品的权力。Copyleft是对Copyright的一种颠覆和扬弃。Copyleft克服了那种将知识产品完全看作私人物品的狭隘思维,它不仅契合知识本身要求创新和传播的本性,而且契合于人类追求自由的本性。

Copyleft是一个广义的概念,可以采用许多形式将其细化。在GNU工程中,具体的发布条款包含在GNU通用公共许可证、GNU宽通用公共许可证和GNU自由文档许可证里。

● 关于Copyleft的官方解释见:http://www.gnu.org/copyleft/copyleft.html。

● 关于自由软件与非自由软件的种类解释见:http://www.gnu.org/philosophy/categories.html。

● 关于更多的许可证解释见:http://www.gnu.org/licenses/license-list.html。

GPL

最知名的自由软件协议是GPL(GNU General Public License,GNU通用公共许可证),它是自由软件基金会(FSF)制定的,详细内容参见http://www.gnu.org/licenses/gpl.html。

GPL的核心内容是:软件的源程序可以自由流通,软件公司不应该把源程序据为己有,或借发行编译过的软件赢利,软件公司要赚取的应该是系统集成和服务的费用。

1.1.4 自由软件及其商业价值

不要误解自由软件中的“自由”

● 使用者可以付费取得GNU的软件,或者,使用者也可以免费取得这些软件。但是,不管使用者是如何取得这些软件的,他们必须永远有权复制或是改写这些软件,甚至贩售这些软件。

● 自由软件哲学抵制一种特定的分布广泛的商业实践,但是它不是反商业的。自由软件并不是“非商业软件”。自由软件必须适用于商业用途。自由软件的商业开发模式已很常见,这样的自由商业软件相当重要。

● Copyleft所主张的自由软件不是指免费软件,而是指给使用者自由运行、拷贝、学习、修改和改进软件的权利。具体地说就是:学习该程序是如何工作的、修改使之适合你的需要;散布此软件,使你和你的邻居、朋友共享它;改进程序,使你的改进公之于众,使整个社会受益等权利。Copyleft是消费者主权,它还有消费者权益保护、隐私权保护、知识共享、消费资本化等理念。这表现在软件质量与安全保护、消费者信息保护、用户选择权保护等等方面。

● 在GNU工程中,通常使用Copyleft这类许可方式来保护每个使用者都享有这些软件自由,但是非Copyleft的自由软件也同时存在。

OSS完整的商业价值链

开源软件发起公司:启动开源软件项目,他们为项目提供最初的资助,通常提供最基础的代码和开发人员。发起公司可凭借其领导地位的企业形象,更容易得到优质的客户,进而省去市场、销售等的巨大投入。同时他们可以为其他的软件服务公司提供技术服务。

开源软件非营利核心开发团队:负责组织协调开源软件的开发,建设软件社区。他们通常由资深的软件专家组成。他们接受发起公司、捐赠人的资助。

开源软件社区:由开源软件的开发人员、用户、志愿者在Internet上共同交流形成的社区。

开源软件服务公司:利用开源软件,为最终用户提供服务。同时他们为软件进行测试,代表用户提出软件改进意见或者特性请求。他们是开源软件和最终用户之间的桥梁。任何公司都可以利用开源软件提供服务。

开源软件最终用户:最终用户得到丰厚的回报。他们无需支付昂贵的License费用;他们选择服务有更大的自由度,而不必和某个软件供应商锁死;同时他们可以提出软件改进的新特性。

志愿者:志愿者可从自由软件中学习到众多技能,同时他们参与软件的测试、捐献自己的代码。广大的志愿者是开源软件长久发展的重要基石。

1.1.5 开源软件及其相关组织

开源软件及其特点

开放源化码软件(Open Source Software, OSS)简称开源软件,是指一种公开源代码的软件。用户可以修改、使用、复制、分发软件的源代码。

开源软件的特点:

● 开源软件一般是免费发布的,你可以在Internet上自由下载,用户无需缴纳License费用。

● 开源软件由一个核心组织领导,通常由一个很大的社区在Internet上协作开发完成。这种“集市”式的开发模式使其通常有着比封闭源代码软件更高的质量。

● 用户可以得到软件的源代码,更容易根据自己的特殊要求进行定制。

● 开源软件的生命周期不依附于某个公司,因此有更强的生命力。

OSI、FSG和OSDL

开放源代码促进会(Open Source Initiative,OSI)是发起、认证和保护开源软件的非营利性组织。开源代码的官方网站是:http://www.opensource.org/。

自由标准组(Free Standards Group,FSG)是致力于制定开源软件工业标准的非盈利的国际开源组织。其下设立了多个标准工作组,每个工作组负责特定标准的制定。最著名的是LSB(Linux Standard Base)。FSG的官方站点是http://www.freestandards.org/。

开源发展实验室(Open Source Development Labs,OSDL)是由大型IT企业支持创建的国际非盈利组织。OSDL一直致力于推广开源软件在行业中的典型应用。OSDL的官方站点是http://www.osdl.org/。

1.1.6 自由软件v.s开放源码

Richard Stallman这样论述Free Software(自由软件)与Open Source(开放源码)的区别:

● 自由软件和开放源码是基于两种不同哲学理念而发起的运动,自由软件的目的在于自由的“分享”与“协作”。我认为non-free(非自由)软件是反社会的,因为它们的理念践踏了用户的自由,所以我提倡发展自由软件从而摆脱那些束缚。

● 开放源码运动通常旨在提高技术等级,是一种技术等级发展模式,其所带来的价值跟微软所提倡的一样,都是狭窄的实际价值(narrowly practical values)。

● 自由软件与开放源码目前都是软件许可的标准,虽然许可效果都差不多,但两个标准的注解区别却非常大,这之间最大的区别是哲学理念上的区别。

● 为什么哲学理念会产生影响?因为人们不重视他们的自由必将失去自由,如果你给人们自由而不告诉他们重视自由,他们所拥有的自由必定不长久。所以仅仅传播自由软件远不足够,还要教导人们去渴求自由,这样或许才能让我们解决现今看来无法解决的问题。