跳转到内容

FOSS 简介/简介

来自维基教科书,开放世界中的开放书籍

什么是自由/开源软件?

[编辑 | 编辑源代码]

David Wheeler

简而言之,OSS/FS 程序是其许可证赋予用户以下自由的程序:出于任何目的运行程序,研究和修改程序,以及重新分发原始程序或修改后的程序的副本(无需向以前开发者支付版税)。 [1]

自由和开源软件 (FOSS) 已成为一种国际现象,在短短几年内从相对默默无闻发展成为最新的流行语。然而,人们对真正构成 FOSS 的内容以及这一新概念的影响仍然缺乏了解。为了更好地解释这种现象,我们将考察 FOSS 背后的哲学和开发方法。

FOSS 哲学

[编辑 | 编辑源代码]

FOSS 世界中存在两种主要哲学:自由软件基金会 (FSF) 哲学和开源倡议 (OSI) 哲学。由于其历史优先地位(参见下一节,“FOSS 简史”)和在运动中的先驱地位,我们将从 FSF 哲学开始。

根据 FSF,自由软件是关于保护四项用户自由

  • 出于任何目的运行程序的自由;
  • 研究程序的工作原理并将其适应个人需求的自由。访问源代码是实现此目的的先决条件;
  • 重新分发副本,以便您可以帮助您的邻居的自由;以及
  • 改进程序并将您的改进发布到公众的自由,以便整个社区从中受益。访问源代码是实现此目的的先决条件。 [2]

FSF 的核心是合作的自由。由于非自由(自由是指自由,而不是价格)软件限制了合作的自由,因此 FSF 认为非自由软件是不道德的。FSF 还反对软件专利以及对现有版权法的额外限制。所有这些都限制了上面列出的四项用户自由。有关为什么软件需要自由的更详细解释,请参阅 FSF 解释,“为什么软件应该是自由的”,可在 https://gnu.ac.cn/philosophy/shouldbefree.html 找到。

OSI 哲学有所不同

开源背后的基本理念非常简单:当程序员能够读取、重新分发和修改软件源代码时,该软件就会不断发展。人们改进它,人们适应它,人们修复错误。而这一切发生的速率之快,如果人们习惯了传统软件开发的缓慢速度,就会令人惊讶。 [3]

OSI 关注的是创建强大可靠软件的技术价值,并且比 FSF 更友好企业。它不太关注自由软件的道德问题,而更多地关注 FOSS 分布式开发方法的实际优势。

虽然这两个运动的基本哲学不同,但 FSF 和 OSI 在软件开发、反对专有软件、软件专利等方面在实践层面上共享相同的空间并进行合作。正如理查德·斯托尔曼所说,自由软件运动和开源运动是同一个社区中的两个政党。

FOSS 开发方法

[编辑 | 编辑源代码]

FOSS 开发模型是独一无二的,只有在互联网出现以及由此带来的通信繁荣之后才成为可能。教堂和集市类比用于将 FOSS 开发模型与传统的软件开发方法进行对比。 [4]

传统的软件开发类似于古代建造大教堂的方式。一小群技艺精湛的工匠精心计划了设计,并在孤立的环境中进行一切建造。建成后,大教堂便完工了,几乎没有进行过进一步的修改。软件传统上也以类似的方式构建。程序员团队在孤立的环境中工作,经过精心计划和管理,直到他们的工作完成并将程序发布到全世界。一旦发布,程序就被认为已完成,随后对其进行的修改工作很少。

相比之下,FOSS 开发更像一个集市,它是有机生长的。最初的商贩来了,建立了自己的结构,并开始做生意。后来的商贩来了,建立了自己的结构,集市以看似非常混乱的方式发展。商贩主要关心的是建造一个最低限度可行的结构,以便他们能够开始交易。随后的补充会根据情况添加。同样,FOSS 开发也是从高度非结构化的状态开始的。开发人员将早期最低限度可行的代码发布给公众,然后根据反馈修改他们的程序。其他开发人员可能会参与进来,修改或扩展现有代码。随着时间的推移,一个完整的操作系统和应用程序套件会不断地开发和演变。

事实证明,集市式的开发方法具有以下几个优点:

减少重复工作
通过早期发布程序并授予用户修改和重新分发源代码的权利,FOSS 开发人员可以重复使用同行的成果。规模经济可能非常大。不是让 10 家公司中的 5 名软件开发人员编写一个网络应用程序,而是有可能让 50 名开发人员共同努力。减少重复工作可以让 FOSS 开发扩展到涉及全球数千名开发人员的巨大、前所未有的规模。
建立在其他人的工作基础之上
有了现有的源代码可以借鉴,开发时间就会缩短。许多 FOSS 项目依赖于其他项目构建的软件来提供所需的功能。例如,Apache Web 服务器项目使用 OpenSSL 项目的实现,而不是编写自己的加密代码,从而节省了数千小时的编码和测试工作。即使在无法直接集成源代码的情况下,现有的源代码也能让开发人员学习另一个项目是如何解决类似问题的。
更好的质量控制
“足够多的眼睛,所有缺陷都浅显易见” [5] 是 FOSS 世界中经常被引用的名言。这意味着如果足够多的合格开发人员使用应用程序并检查源代码,就会更快地发现并修复错误。专有应用程序可能会接受错误报告,但由于用户被拒绝访问源代码,因此用户只能报告症状。FOSS 开发人员经常发现,可以访问源代码的用户不仅会报告问题,还会准确地指出原因,并在某些情况下提供修复程序。这大大减少了开发和质量控制时间。
降低维护成本
任何软件包的维护成本往往会等于或超过最初的软件开发成本。 [6] 当单个组织必须维护软件时,这可能是一项极其昂贵的任务。然而,在 FOSS 开发模型中,维护成本可以在软件应用程序的数千个潜在用户之间分摊,降低了每个组织的成本。同样,增强功能可以由在该领域拥有最佳专业知识的组织/个人进行,从而更有效地利用资源。

FOSS 的历史是什么?

[编辑 | 编辑源代码]

自由/开源软件运动简史: [7]

自由/开源软件运动起源于 20 世纪 60 年代和 70 年代美国计算机科学实验室(斯坦福大学、伯克利大学、卡内基梅隆大学和麻省理工学院)的“黑客”文化。

程序员社区规模较小,关系密切。代码在社区成员之间来回传递——如果你做出了改进,你应该将代码提交给开发者社区。不分享代码被认为是不合时宜的——毕竟,你从朋友们的作品中获益,你应该有所回报。

自由/开源软件运动简史

[edit | edit source]

FOSS 运动可以追溯到计算机行业的最早期,尽管当时还没有正式定义或概念化。直到 20 世纪 70 年代末和 80 年代初,软件共享才真正开始与专有软件发生冲突。早期关于专有软件的参考资料之一是由威廉·亨利·盖茨三世在其著名的“致爱好者的公开信”中提出的。[8] 这封信写于 1976 年 2 月 3 日,他在信中痛斥了当时盛行的软件共享文化。

为什么呢?大多数爱好者都应该知道,你们中的大多数人都在偷软件。硬件必须付费,但软件是可以共享的。谁在乎那些为它工作的人是否得到报酬呢?

多年来,专有软件会获得更大的动力。在 20 世纪 80 年代初开拓性的麻省理工学院人工智能实验室,一家名为 Symbolics 的公司成立,并将其免费提供的代码(LISP 编程语言)变成专有软件。在这个过程中,它消灭了当时麻省理工学院实验室的软件共享文化。[9] 然而,这种破坏最终导致了 FSF 和今天 FOSS 文化的诞生。

理查德·斯托曼,当时麻省理工学院实验室的成员之一,对事态的转变感到震惊。它将塑造他对专有软件的看法,并使他决心创建一个自由的操作系统。GNU(GNU 代表 GNU 不是 Unix,是一个递归缩写)项目诞生于 1984 年 的一月,在接下来的十年中,它创建了许多关键工具,这些工具构成了操作系统的一部分。FSF 诞生于一年后,旨在推广自由软件和GNU 项目。然而,直到 1991 年,GNU 项目还没有发布一个完全自由的软件系统,因为缺少一个关键部分:内核。

内核是操作系统的核心。在 1991 年林纳斯·托瓦兹,当时是赫尔辛基大学的二年级研究生,编写并发布了一个类 Unix 内核。以 FOSS 开发的方式,它被广泛传播,得到改进,并很快被改编为GNU/Linux 操作系统的核心。

当时还有其他正在进行的 FOSS 项目,包括 BINDPerlBSD 操作系统。所有这些项目最终都合并或交叉授粉。

GNU/Linux 操作系统将在功能和能力方面持续增长。在 1997 年,Linux 爆发到了媒体的聚光灯下,国际数据公司 (IDC) 指出,GNU/Linux 已经占有 25% 的服务器市场份额[10],并且以每年 25% 的复合增长率增长。

1998 年,为了回应 Netscape 发布其 Netscape Navigator 代码作为 FOSS,一群 FOSS 开发者走到一起,创建了“开源”标签。这导致了 开源倡议开源定义 的形成。该倡议的主要目的是让企业界关注 FOSS 开发流程,并引导其远离自由软件运动的“对抗性”态度。[11]

1999 年,GNU/Linux 发行商 红帽 的首次公开募股 (IPO) 大获成功,使其市值达到 48 亿美元。当年其他成功的 IPO 包括 VA Linux(70 亿美元)、Cobalt Networks(31 亿美元)和 Andover.net(7.12 亿美元)。[12] 作为 FOSS 的典范,GNU/Linux 的成功意味着 FOSS 已经真正到来。

脚注

[edit | edit source]
  1. Wheeler, David, “Why OSS/FS? Look at the Numbers!” [home page online]; available from http://www.dwheeler.com/oss_fs_why.html ; Internet; accessed on November 7, 2003.
  2. “The Free Software Definition”[home page online]; available from http://www.fsf.org/philosophy/free-sw.html Internet; accessed on November 9, 2003.
  3. Open Source Initiative [home page online]; available from http://www.opensource.org ; Internet; accessed November 8, 2003.
  4. Raymond, Eric S., “The Cathedral and the Bazaar” [home page online]; available from http://catb.org/~esr/writings/cathedral-bazaar/cathedral-bazaar/ ; Internet; accessed on November 7, 2003.
  5. Raymond, Eric S., “The Cathedral and the Bazaar” [home page online]; available from http://www.catb.org/~esr/writings/cathedral-bazaar/cathedral-bazaar/ar01s04.html; Internet; accessed on November 7, 2003.
  6. Bengtsson, Lassing, Bosch, van Vliet, “Analyzing Software Architectures for Modifiability”; available from http://www.cs.rug.nl/~bosch/papers/SAAModifiability.pdf ; Internet; accessed on November 7, 2003.
  7. “A Brief History of Free/Open Source Software Movement” [home page online]; available from http://www.openknowledge.org/writing/open-source/scb/brief-open-source-history.html; Internet; accessed on November 7, 2003.
  8. “An Open Letter To Hobbyists by Bill Gates – 1976”; available from http://www.tranquileye.com/cyber/1976/gates_open_letter_to_hobbyists.html; Internet; accessed on November 7, 2003.
  9. Moody, Glyn, “Rebel Code”, Penguin Books, London, England, 2001.
  10. Rasch, Chris, “A Brief History of Free/Open Source Software Movement”; available from http://www.openknowledge.org/writing/open-source/scb/brief-open-source-history.html ; Internet; accessed on November 7, 2003.
  11. “History of the OSI” [home page online]; available from http://www.opensource.org/docs/history.php ; Internet; accessed on November 7, 2003.
  12. Scannell, Ed. “Linux takes the operating system scene by storm”, Infoworld.com; available from http://archive.infoworld.com/supplements/99poy_drv/99poy_linux.html ; Internet; accessed on November 7, 2003.
华夏公益教科书