2.2. 自由软件概念

一旦给出定义,重要的是要坚持自由软件运动所倡导的思想。同样重要的是澄清一些关于这些软件的错误观念。本节给出了一系列支持引入自由软件的要素,并以待解决的实际问题作为结尾。

2.2.1. 自由软件哲学

事实上,自由软件运动所倡导的哲学与科学界长期以来提出的哲学并无太大差异:将思想和集体知识共享,以促进研究的进展和知识的增长。人类基因组知识就是这种协作工作的范例之一。

计算机工程环境,尤其是软件环境,似乎在过去 20 年里背离了科学世界的这些基本概念。相反,它倾向于让客户受制于自己,而不是向他们提供充分利用其计算环境所需的信息。正是 80 年代初的这个问题促使在麻省理工学院从事人工智能研究的 Richard Stallman 决定创建 GNU 项目。这个项目是当前自由软件运动的基础。

该运动倡导的主要思想,以及 Richard Stallman 本人提出的观点是:

除了这些理念的乌托邦式理想之外,我们还可以找到其他让自由软件在今天如此广泛传播的原因。这些原因在第 2.2.2 节中详细介绍。

自由软件运动也通过一个社群来实现。这个社群是一个非正式的个人聚会,其内容、行动、思想各不相同,即便所有人都对软件的自由抱有相同的信念。这个社群为自己创建了沟通所需的工具:互联网和 Usenet。当然,这些沟通工具的运作也基于大量的自由软件。在这个运动的杰出人物中,我们可以介绍:

所有这些人物,首先都是优秀的计算机工程师,这使他们被公认为自由软件运动的主要参与者。他们的人格魅力和沟通能力也是他们性格的突出特点。在任何情况下,他们都不是因为权力而被认可,而是因为他们的知识。

当然,自由软件社群由成千上万的程序员组成,完整列表会过于冗长。他们都怀着生产有用的、自由的工作成果的意愿,并首先因其技术能力而获得认可。

2.2.2. 自由软件的选择

在计算环境中使用自由软件来提供解决方案是一种选择。首先,它有利于解决方案的多样性,尤其是在趋于垄断的个人电脑领域。然后,选择是基于自由软件自身的品质而做出的,这才是最终重要的,具体细节如下。

源代码访问

这一点是选择中最重要的,因为它允许对软件进行理解、适配、修正、分发和改进。

可靠性

这种品质源于前一点:自由软件是所有参与者的经验和智慧的结合成果。随着时间的推移,以及所有修正的完成,其可靠性随之提高。此外,没有营销压力要求软件生产者在软件达到令人满意的状态之前交付给客户。

可移植性

这种品质并非自由软件固有的,但在自由软件中非常常见。事实上,如果一个软件获得成功,它必然会被适配到最初考虑之外的其他环境中。因此,通过增加其可用性,其可移植性和可靠性也随之提高。如今,Linux 可以在 HP Jornada 或 IBM 手表上运行,也可以在 s390 或 SuperDome 上运行。

通用性

自由软件的一个重要品质是其所使用的数据格式的自然通用性。即使它们不遵循标准,源代码的可用性也确保用户能够理解它们,并且更重要的是,能够编写任何所需的过滤器来重用这些数据或与其他软件交换数据。这也允许用户稳定他们的环境,因为他们不必因为应用程序中数据格式的不兼容而迁移。不要忘记您的数据是宝贵的,最好以 *ML 格式(HTML、XML、SGML 等)而不是专有格式存档它们。

性能

由于大量的审查、对来自高级研究工作的算法的使用,以及各种用途的测试,自由软件天生具有良好的性能。通常会重写代码的很大一部分,以便以更好的代码重用原始思想,从而提高性能。各种组织进行的多次测试也倾向于证明这一点。

表 2-1. 自由软件的性能

主题URL
Apache Web 服务器及其竞争对手http://www5.zdnet.com/products/content/pcmg/1709/305867.html
SMB SaMBa 服务器 vs Windows NThttp://www.zdnet.com/sr/stories/news/0,4538,2196106,00.html

再次强调,没有义务发布性能不佳的应用程序。

互操作性

互操作性是当今企业的现实。从历史上看,Unix 环境一直是与其他系统(大型或中型系统,以及个人电脑)互操作性的温床。例如,Linux 对大量网络协议、文件系统格式,甚至二进制兼容模式的支持,确保了良好的互操作性。顺便说一句,互操作性需要 2 个参与者,只有一方开放通常是不够的。这就是制定 RFC、规范、标准的原因,......

响应速度

考虑到软件编辑器的开发周期越来越长,自由软件运动带来的响应速度对于许多关注快速获得给定问题修正的站点来说非常重要。因此,在最近发现 IP 问题(死亡之 Ping,...)期间,补丁总是在接下来的 3 天内可用。更重要的是,只交付了修正已发现漏洞的补丁。没有添加任何可能造成其他不稳定性的功能。

安全性

最佳的计算安全性由稳健的结构、公开且知名的算法、围绕缺陷的快速沟通来保证,...... 换句话说,就是通过透明性。在这个领域,隐晦是糟糕的、无用的,甚至是危险的。在自由软件世界中,上一段描述的响应速度是提高安全性的保证,... 条件是定期应用补丁。

除了其品质之外,还可以给出其他不同性质的理由来支持自由软件,这取决于遇到的人的类型。

2.2.2.1. 营销论证

IDC 的研究揭示了 Linux 作为服务器操作系统的不可阻挡的崛起。1998 年,Linux 占据了 17% 的市场份额,增长了 212%,这是该领域最重要的增长。下图给出了整个市场份额的分布。

图 2-1. 1998 年服务器操作系统市场份额分布 (IDC)。

这在 1999 年得到了证实,市场份额攀升至 24%,增长了 93%,始终是追随者的四倍以上。

图 2-2. 1999 年服务器操作系统市场份额分布 (IDC)。

Dataquest 估计,到 2003 年,Linux 服务器将代表 110 万台,占服务器销量的 14%。

互联网本身也产生营销工具来证明自由软件的优越性。 Netcraft 和其他机构定期更新 Web 服务器软件的计数器,IOS Counter 则对互联网上的服务器进行了类似的统计。以下重现的结果显示了 Apache 的重要性,它拥有超过 1600 万个运行站点(其中 30% 运行 Linux),碾压了竞争对手,以及自由操作系统 Linux 和 *BSD,它们主导着互联网服务器的世界。

图 2-3. 1995 年至 2001 年 Netcraft 的 Web 服务器软件统计。

图 2-4. 1999 年 4 月 IOS Counter 的互联网服务器分布。

还定期更新基于最精确的数字结果的详细解释,显示了使用自由和开源软件的优势,参见:http://www.dwheeler.com/oss_fs_why.html

2.2.2.2. 财务论证

财务因素也支持自由软件。首先,获取它们的价格很低。之所以说低,是因为它永远不会为零。即使你可以在互联网上找到它,你也必须考虑与该链接相关的成本。然而,成本远低于商业软件。例如,RedHat 7.2 Linux 发行版,附带 1400 多个软件包,售价约为 60 美元,而你必须支付 800 多美元才能获得仅附带 IIS 的 Windows 2000 服务器。

另一方面,自由软件没有按用户或按补充服务许可的概念。因此,当你需要在你的实体中增加这些软件的使用时,不会有额外的成本。这当然与商业软件不同,商业软件的经济逻辑通常基于许可证的数量。

自由软件还带来了对 TCO(总体拥有成本)的更好掌握,这在个人电脑的大规模部署中经常被提及。因此,管理成本降低了,因为像 Linux 或 FreeBSD 这样的系统,像 Unix 一样,可以完全远程管理,可以通过命令行命令(使用 telnetssh)或在图形模式下使用 X-Window。此外,我们受益于真正的多用户模式,从而改进了这些管理操作。同样在这个领域,也可以进行远程管理,可以通过机器自身的硬件能力(如集成在大多数 HP NetServer 中的 Remote Assistant 卡),或者通过远程连接(通过调制解调器、ISDN 适配器或永久链路),这要归功于原生的 PPP 协议和隧道或 ssh 等安全连接系统。这种管理甚至可以由外部实体外包实现。

最后,硬件本身的成本也可以得到控制;一方面,如果自由软件碰巧不能满足需求,总是可以购买商业软件解决方案来弥补同一硬件上的不足。另一方面,基于自由软件的解决方案天生具有良好的性能,并且可以使用那些如果按照其他操作系统或应用程序的标准标准安装,就会被认为是过时的硬件平台。将图形界面与工作系统的其余部分分离是这里的关键。因此,可以使用“旧”硬件,主要是用于建模。然后在投入运行解决方案时,如果有需要,可以进行明智的投资。功率的增加可能会自然而然地逐步发生。

2.2.2.3. 技术论证

这个论证已经在前面的章节中给出。但我认为,一些概念可能需要补充信息来解释。

因此,关于基于自由软件的解决方案的可靠性方面,重要的是要注意它意味着非常高的运行时间(Unix 系统的一般标准特性)。这可以通过 uptime 命令来衡量。Medasys 和 HP 的客户之一,巴黎圣米歇尔医院,有一台 Vectra VL5 在 Linux 下作为路由器运行了 300 多天。这并非个例。

尊重标准和规范,以及自由软件的极高可移植性也确保了在这些平台上开发的应用程序具有相同的品质。特别值得注意的是,如果在使用后,基于自由软件的架构所带来的性能或服务不足(这可能是由架构问题引起的,例如 PCI 带宽、可用处理器数量,...),则可以很容易地迁移到提供更高性能和演进能力的机器,例如运行 HP-UX 的 HP 9000 系统。

最后,围绕性能为中心的开发计划意味着模块化,例如,可以根据硬件的容量调整系统内核的大小,或者根据需要使用动态加载的模块。软件包的安装大小可能从最小系统的 40 MB 到完整发行版的数 GB 不等。系统的线性度还允许支持多处理器机器 (SMP)(在一台 Sparc 机器上测试高达 32 个处理器)。系统的模块化还允许在 1.44 MB 软盘上获得可操作的系统,既可以实现最小的修复环境,也可以提供功能完善的路由器。嵌入式系统领域也越来越关注像 Linux 这样的系统,因为除了模块化之外,源代码的可用性使得与专用外围设备(采集卡、探头,...)的通信更加容易。欧洲核子研究中心或汤姆逊等实体已经在使用此类解决方案。

2.2.2.4. 解决方案论证

这个论证可能是所有论证中最重要的,因为如果自由软件不能用来做有用的事情,或者不能为愿意使用它的实体的需求提供解决方案,那么自由软件就毫无用处。今天,自由软件可以在哪些领域提供解决方案?好吧,你必须承认它几乎可以在企业计算的所有领域提供解决方案。

从历史上看,开源软件被用于实现互联网/内联网服务器,因为它们的增长与互联网的增长同步。因此,可以涵盖与互联网相关的所有方面,从 Web 服务器 (Apache)、FTP 服务器 (Wu-Ftpd)、DNS 服务器 (Bind)、电子邮件服务器 (SendmailPostFix)、Usenet 新闻组服务器 (INN)、代理服务器 (IPmasqadm)、防火墙 (IPChainsIPTables)、虚拟专用网络 (OpenSSH)、Web 缓存服务器 (Squid) 或时间服务器 (NTP) 或目录服务 (LDAP) 服务器,或内容管理 (Midgard) 服务器 ... 所有这些软件都以标准形式包含在 Linux 发行版中。客户端计算机应配备与所用应用程序对应的软件(邮件阅读器、新闻阅读器、Web 浏览器等),无论其操作系统是什么。客户端的选择是自由的,因为所有这些工具都遵守 RFC 中规定的标准。

自由软件的第二个优先领域是文件和打印服务器领域。对于这些服务,客户端可能是多种类型的:Unix 类型(使用 NFSKNFSCodaInter-Mezzo 进行文件共享,使用 lpdCUPS 进行打印服务),Microsoft Windows 类型(使用 SaMBa,它也允许使用本地客户端打印机),Novell 类型(使用 Mars_nwe)或 MacIntosh 类型(使用 NetAtalk)。所有这些软件都以标准形式包含在 Linux 发行版中,并且不需要在客户端级别进行任何修改即可工作。

像 Linux 这样的系统可以带来解决方案的其他领域是计算领域,支持 多处理器,与 MosixBeoWulf多节点集群 的实现相关联,并配备高速网络接口(100 Mbit/s,千兆位Myrinet);数据安全领域,支持 HP NetRaid 卡,允许 Raid 级别为 0、1、3、5、10、50 和热备盘,由硬件管理;集中式传真服务器领域,使用像 HylaFAX 这样的自由软件,或者作为存档/备份服务器,使用 HP SureStore DAT 或 DLT 库,这要归功于像 Amanda 这样的 GPL 软件,或者像 Arkeia 这样的商业软件,或者最后作为数据库服务器,使用像 PostgreSQLMySQL 这样的自由解决方案,或像 Oracle 这样的商业解决方案,仅举这三个例子。

在客户端方面,即使目前不太突出,使用基于自由或商业软件的解决方案的可能性也很多。同样,互联网部分是主要的,使用诸如图形 Web 浏览器(NetscapeMozillaKonqueror)或文本浏览器(lynxw3m)、大量图形邮件阅读器(KmailXFMail,...)或文本邮件阅读器(muttelm,...)之类的工具。但你还拥有当今个人电脑不可或缺的整套工具,例如 PDF 阅读器(Acrobat Readerxpdf)、图像处理工具(ImageMagickGimpRealPlayer 工具 ...)、文字处理器(LyXLaTeXSGMLToolsWordperfect,...)、商业办公套件(ApplixWareStarOffice)或开源办公套件(KofficeOpenOffice,...)、声音管理工具(Xmmseplaymidixmcd,...)、CD 刻录工具(cdrecordBurnIT,... 以及 mkisofscdparanoiacdrdao 等补充工具)、各种系统的免费和商业模拟器(WineExecutorWABIDOSEmuWin4LinVmWare...)、所有语言的编译器和解释器(CC++PascalFortranBasicTcl/TkPerlPythonAdaEiffelLispSchemeProlog...),包括商业版本(PGIIntel...)、图形环境(GnomeKDEMotifOpenMotif,...)。这些最新工具的演变表明,2000 年代可能是 Linux 和自由软件在客户端领域取得突破的年代。

我想提及的是,本文档是在一台 HP Brio BAx 上,然后在 Vectra VL400 上完成的,后者仅配备了 Linux 发行版,并借助了诸如 DSSSL 样式表OpenJadeDocBookViM 等工具,这些工具允许从单个源生成 HTML、Txt、RTF、PostScript 和 PDF 格式。

2.2.2.5. 服务论证

长期以来,服务论证一直是自由软件在企业中扩展的障碍。但今天情况已非如此。许多服务提供商或硬件制造商,如 HP,今天控制着这些解决方案,并围绕它们提供支持,如果需要,甚至可以提供关键任务支持。

其他信息来源也大量存在,通过几个专门介绍这些解决方案的网站、专门的邮件列表和各种 Usenet 新闻组,例如关于 Linux 的,国际新闻组在 comp.os.linux.* 下,或者对于法语使用者,在 fr.comp.os.linux.* 下。

关于能力,越来越多的年轻工程师或学者在完成学习周期后接受了自由应用程序和操作系统的使用培训。这种能力财富现在涌入劳动力市场,并将有助于推动这些工具的普及运动。最后,许多公司在内部忽视了能力。事实上,他们的员工经常在家中安装这些软件,并且掌握了良好的技能,当软件在其专业结构中部署时可以使用。

2.2.3. 关于自由软件的错误观念

倡导自由软件也包括提及一些普遍接受的关于自由软件的观念,并与之作斗争。

“没有支持,没有培训”

如前所述,支持目前正在构建自身。像 RedHat 这样的公司今天为其解决方案提供支持。仅在法国,我们可以提及像 MedasysAtridAlcove 这样的公司,它们确保对自由软件提供支持。同样,总是在法国,HP FranceLearning TreeIUT de Vélizy 可以提供关于自由软件的培训,更不用说通用的网络和 Unix 培训(也由相同的组织提供),这些培训是课程培训的基础。最后,我们应该提到我们每个人自学的能力,这主要归功于大量可用的文档(参见第 7 章)。

“没有文档”

有一整套手册,Linux 文档项目,由 FAQ(常见问题解答)和 HOWTO 组成,围绕 Linux 计数超过 300 份文档,主要的文档已被翻译成法语,并且 日语版本 也作为免费文档提供。这些文档的质量参差不齐,或多或少是最新的,这取决于主题,但它构成了一个语料库,允许单独理解 Linux 发行版及其所有组件。就我个人而言,我总是在其中找到我使用自由软件完成工作所需的一切。并且,在需要补充信息的情况下,许多网站和 Usenet 新闻组可以再次提供一些所需的元素。更不用说在线提供的无数手册页了。每个发行版还附带一套全面的手册,涵盖安装、处理和管理它们的各项任务。

另一方面,出版社 O'ReillySSC 专门提供关于自由软件的书籍,这些书籍通常由软件的作者本人编写。他们的书籍被认为是各自领域的参考书。

“免费或接近免费的产品是玩具”

你应该始终区分自由(如言论自由)和免费(如免费啤酒)。Microsoft 环境中太多的免费软件实际上是玩具,质量很差。正如前几节所述,自由软件的情况绝非如此。请记住,它们在构造上是可靠的。

“Linux 很难安装”

Linux 是一种专业的操作系统。从这个意义上说,安装它需要一定的能力,就像任何其他专业的操作系统一样,例如其他 Unix 或 Windows NT。但它并不比它们更难安装,这主要归功于 RedHat、Mandrake 等发行版。你大约需要 30 分钟才能完成这些发行版的完整安装,与 HP-UX 大致相同,并且明显少于 Windows NT Server。

另一方面,正如在安装 Windows NT 服务器之前,你必须验证其与 Microsoft 的 硬件兼容性列表 的兼容性一样,对于 Linux,也强烈建议验证 硬件 HOWTO,对于 HP 机器,请参考 第 3.2 节

“自由软件不适合繁重任务”

这越来越不真实了,并且随着最新版本的 Linux 内核(将包含日志文件系统,允许真正的应用程序集群)的出现,这种批评已经过时。但 Linux 已经授权使用多处理器、多个节点来实现计算集群。不要忘记,它被门户网站 Voila (France Telecom) 或搜索引擎 Google 等著名参考网站使用。同样,FreeBSD 也被成功地用作世界上最大的 ftp 服务器:Walnut Creek CDROM 服务器。在该高可用性领域有用的项目可以参考 http://www.linux-vs.orghttp://www.opengfs.orghttp://www.linux-ha.org

“如果与编辑者出现问题,我有什么申诉渠道?”

没有申诉渠道,因为软件许可否认作者对问题承担任何责任。但是,实际上,开发人员总是乐于在出现问题时提供帮助,并尝试尽快纠正遇到的错误(例如,对于奔腾的 F00F 错误,Linux 内核的补丁在 3 天内发布)。另一方面,商业编辑器对用户的保证非常糟糕,除了包装错误之外的问题。请阅读您的软件随附的说明以进行判断。

2.2.4. 围绕自由软件的实际问题

否定与自由软件相关的某些遗留问题是不诚实的。有些问题已经开始消失,有些问题是系统固有的,有些问题最终将需要时间才能消失。

第一个问题,自由软件模式固有的问题,是可用工具和发行版的多元化。因此,如果你想设置邮件服务器,你必须在 Sendmail、Exim、PostFix、Qmail、Smail 之间做出选择。同样,如果你想安装 Linux,你可以在发行版 RedHatSuSESlackwareMandrakeTurbo LinuxDebian 之间做出选择。这通常给新手带来问题,但经验丰富的用户总是更喜欢拥有大量的选择,他们会将这些选择与他们的特殊性和经验进行比较。只要参与者遵守规则,释放他们的代码(例如 rpm 和 deb 格式就是这种情况),从社区的角度来看,风险很小。关键点是,选择仅考虑技术标准。

第二个问题,也是自由软件诞生固有的问题,是管理此类解决方案需要强大的 Unix 和互联网能力。通过这些系统提供的能力与管理员的能力成正比。即使管理它们的图形化解决方案越来越多,情况仍然如此。另一方面,你将时间投资于学习它们的功能,并且不会消失,因为你不必从一个版本到另一个版本重新学习一切(我在过去的 15 年里一直使用相同的编辑器 vi)。不要忘记,你每天使用的系统似乎很简单,仅仅是因为你花了足够的时间来学习它们。对于互联网能力,不言而喻,这种投资不会白费。最后,即使有翻译人员提供法语和其他语言的信息,良好的技术英语知识绝对是一个加分项。

在自由软件解决方案的实施中遇到的最后一个问题是成功说服一些管理者反对主流观点。本章的目的正是提供各种论据以达成该目标,但你需要每次都表现出信念,最终才能达成目标。一旦这些解决方案主要被大型企业采用,阻力将会消失。