安全
可靠性/稳定性
开放标准和摆脱供应商依赖
减少对软件进口的依赖
增强自身的软件能力
杜绝盗版,遵守知识产权条约和世贸组织规定
软件本地化
对于政府来说最后四点需要根据各自的不同情况考虑,因而特别重要。公司和最终用户一般不考虑这些事项。
=安全=
虽然并没有完全安全的系统或平台,像开发方法、程序架构和目标市场这样的因素都会极大地影响系统的安全性并决定攻破它是否困难。在这方面,自由/开源软件系统有一些指标优于私有软件系统:
1. 由于微软英特网信息服务(Internet Information Server, IIS)糟糕的安全记录,Gartner 集团推荐公司使用 Apache 或其他 web 服务器。Gartner 集团发现到2001年7月美国的企业仅为修复 IIS 的“红色代码”漏洞就花费了12亿美元[22]
2. J. S. Wurzler 保险公司的“黑客险”对使用 Windows 的用户收取比 GNU/Linux 或 Unix 系统用户多5-15%的保险费用。J. S. Wurzler 公司的保险高级副总裁 Walter Kopf 说:“我们发现使用 NT 系统造成损失的可能性更大。”[23]
对安全的考虑已经推动许多公共机构转移到或考虑转移到自由/开源软件方案。法国海关和间接税管理部门主要出于安全的考虑,迁移到了 Red Hat 6.2 平台[24]。
一般认为,自由/开源软件较好的安全记录有如下原因:
源代码可获取:自由/开源软件的源代码开放性让开发者和用户更容易在漏洞被攻击者利用前就能发现和修补。在 Bugtraq 上列出的许多漏洞都是在定期的评审中发现的,而没有被利用的记录。自由/开源软件系统一般都采用预应式而非反应式的评审制度。
专注于安全而非用户友好:自由/开源软件支撑着英特网的很大一部分[25],因此更专注于健壮性和功能,而不是考虑易于使用。在为任何主要的自由/开源软件应用增加功能之前,人们都要考虑其安全性,只有认为该功能不影响系统安全的情况下才会将其加入。
根用户制度:自由/开源软件多数基于多用户和支持网络的 Unix 模式。因此,它们具有完备的权限结构和很强的安全性。当许多用户共享一个强力的服务器时这种模式至关重要,否则,用户将可以使服务器崩溃,偷窃其他用户的私人资料或侵占其他用户的资源。这种制度使得应用程序中的漏洞即使被利用也只会造成有限的损失。
=可靠性/稳定性=
自由/开源软件因为它们的可靠性和稳定性而闻名。业界已经有许多自由/开源软件服务器不需维护连续运行数年的故事。但是,定量研究相对而言更加困难。以下介绍两个近年进行的研究:
1999年 ZDnet 进行的为期10个月的稳定性测试比较了 Red Hat Linux,Caldera Systems OpenLinux 和微软的 Windows NT 4.0 SP3 服务器版。三个系统都在同样的硬件上运行了打印、web 服务和文件服务功能。结果是 Windows NT 每6星期就崩溃一次,而自由/开源软件在10个月中没有一次崩溃[26]。
一项使用随机方法的压力测试在1995年测试了7种商业系统和 GNU/Linux 系统。测试中模拟来自错误数据或恶意用户输入的随机字符被发送到这些系统。结果是商业系统的平均失效率达到23%,而 Linux 失效率为9%。GNU 软件(FSF 下属的 GNU 工程生产的软件)失效的时间只占全部时间的6%。数年后的跟踪研究发现测试中暴露的漏洞在自由/开源软件系统中得到了修补,但在私有软件中都完全没有改变[27]。
=开放标准和摆脱供应商依赖=
开放标准的用户,不论是个人还是政府,都拥有在不同的软件、平台和供应商之中选择的灵活性和自由。而私有的、保密的标准使得用户只能使用一个供应商的软件,并且因为他们的数据都存储为私有格式,转换代价高昂而在此后继续受供应商的摆布。
荷兰国际信息经济研究所(International Institute of Infomatics)《自由/开源软件:调查研究》这篇论文的作者们也反对在政府中使用私有软件。他们认为:
“……因此反对在公共部门使用私有软件的一个主要理由是对私有软件供应商的依赖。私有标准一旦建立人们就必须服从。即使在开放的竞标制度下,与私有标准兼容的需求也使得制度偏向于特定的软件供应商,因此造成长期的依赖。”
自由/开源软件的另一大优点就是它们几乎总是使用开放标准。这样做主要有两个原因:
源代码的可获取性:只要有源代码,就可以对程序使用的标准进行反向工程和记录。标准所有可能的变化都会体现在源代码中,因此不可能在自由/开源软件中藏匿一个私有的标准。而对私有软件进行反向工程困难得多,许多软件还有意加密和隐藏这类信息。
主动与标准兼容:如果有现存的标准,例如控制网页显示的超文本标记语言(HyperText Markup Language, HTML),自由/开源软件都积极确保忠实地服从标准。例如开源软件 Mozilla 浏览器,就与万维网联盟(World Wide Web Consortium, W3C)的许多标准完全兼容。Webstandards.org 发现 Mozilla 是现在对标准兼容性最好的浏览器之一[28]。自由/开源软件推崇分享和与其他程序合作的文化决定了对标准的兼容性。而且服从公开发布的标准也方便了与遍布全球的开发者协作。
在不同的地区,使用自由/开源软件作为摆脱供应商依赖的手段都获得了提倡。一份提交英国政府的报告认为“数据标准的开源实现常常能加速标准的推行,推荐政府有选择地支持这样的开源实现。”[29]
=减少进口依赖=
发展中国家选择自由/开源系统的一个重要动机是可以节省高昂的私有软件授权成本。发展中国家所有的私有软件几乎都依赖进口,因而消耗了宝贵的硬通货和外汇储备。而这些储备本可以用于其他开发项目。
《自由/开源软件:调查研究》这个在欧洲进行的研究也显示:“开源软件偏向服务的模式带来的成本都在政府机构内部被消化,而不是流向大型跨国公司。这对就业、本地投资、税收等等都起到促进作用。”[30]
=增强自身软件能力=
人们发现经济体内自由/开源软件开发者的增长与创造能力(软件)成正相关关系。国际信息经济研究所的一份报告列出了这个现象的三个原因[31]:
易于参与:自由/开源软件鼓励自由的修改和发布,容易获得、使用和学习。私有软件则有许多限制,不仅源代码的获取受限,还有授权、专利和版权的限制。自由/开源软件很象基础研究,允许开发者利用已有的知识和组件生产软件。
自由/开源软件可作为理想的培训系统:自由/开源软件开发和协作的特性让学生能够考察软件概念并进行实验,而不会对社会造成影响。类似地,学生也可以加入全球性的自由/开源软件合作开发网络,利用其中的大量技术信息和交互式的讨论工具。
作为标准来源的自由/开源软件:自由/开源软件常常由于其在某一特定行业部门中的主导地位而成为事实上的标准。地区通过参与制定某一特定自由/开源软件应用的标准,可以确保产生的标准符合地区的需要和文化考量。
自由/开源软件的开发方式不仅极大地促进了创新,也有利于创新成果的传播。一份微软的内部备忘录写到,“基于 Linux 的研究/教学项目由于 Linux 源代码随处可以获取而很容易传播。特别是新的研究想法都先被在 Linux 上实现和发布,然后才在其他平台上被整合或发布。”[32]
=杜绝盗版,遵守知识产权条约和世贸组织规定=
对于世界上几乎每一个国家,软件盗版都是个问题。商业软件联盟(Business Software Alliance)估计盗版仅在2002年一年就造成了130.8亿美元的损失。即使像美国和欧洲这样在理论上能够负担软件费用的发达地区盗版率也分别高达24%和35%。而在收入较低的发展中国家,软件相对更加昂贵,盗版率可达90%以上[33]。
软件盗版和缺乏相应的法律会在很多方面对国家造成不利影响。对知识产权(Intellectual Property Rights, IPR)的保护较差的国家对外国投资者的吸引力较小。世界贸易组织(World Trade Organization, WTO)的成员资格和从中获取的收益与国家对知识产权的保护紧密相关。最后,盗版软件的风气损害软件开发,因为本地的软件开发者开发产品的动机较弱。
=本地化=
“本地化的含义是使产品符合目标区域(使用和销售产品的国家/地区和相应语言)的语言和文化要求。”
-- 本地化产业标准协会(Localisation Industry Standards Association)[34]
本地化是开放的自由/开源软件的强项之一。用户可以修改自由/开源软件以适应特定文化区域的需求,不论其经济规模的大小。开发一个最基本的本地化自由/开源软件版本只需要少数有技术能力的人。建立一个完全本地化的软件平台并不容易,但还是可以办到的。如果没有自由/开源的替代品,微软公司1998年拒绝开发冰岛语版本 Windows 98 [35]的决定可能会带来严重的后果。