自由及开放源代码软件

自由及开放源代码软件（Free and open source software，缩写为FOSS，又称自由和开源软件，是一种既可归类为自由软件又可归类为开源软件的计算机软件。自由及开放源代码软件允许任何人自由地使用、复制、研究及以任何方式来改动软件，并且其源代码是公开的。FOSS 的权利来源包括《自由软件定义》中的四大自由，以及《开源定义》所列出的标准。所有 FOSS 都会公开提供源代码，但并非所有可取得源代码的软件都是 FOSS。自由及开放源代码软件相对于专有软件（proprietary software），后者受到版权的严格限制，且通常其源代码对用户不开放。

使用自由及开放源代码软件的好处包括降低软件成本、提高安全性和稳定性（如避免恶意软件威胁）、保护隐私、教育，和让用户更多地控制自己的硬件。自由开源的操作系统如 Linux 和 BSD 及其分支（fork）如今被广泛使用，为数百万台服务器、台式机、智能手机（例如 Android）和其他设备提供支持。许多软件套件也采用了自由软件授权条款或开源授权条款。自由软件运动与开源软件运动则是推动 FOSS 生产、采用与推广的重要社群运动。

## 概述

自由及开放源代码软件（FOSS）是同时涵盖自由软件与开源软件的总称。自由软件与开源软件的精确定义，皆适用于在特定条款下散布的软件；这些条款允许使用者依其需求使用、修改及再散布该软件，且不要求使用者因从事这些行为而向软件作者支付权利金或费用。

虽然自由软件授权条款与开源软件授权条款几乎完全重叠，两者的倡议者之间仍存在重要的哲学分歧。FOSS 这一术语的使用，常被视为试图在自由软件基金会（FSF）与开放源代码促进会（OSI）之间的哲学分歧上采取较中性的表述，并以单一名称同时指称两种概念。不过，理查·史托曼认为，相较于“Free/Libre and Open Source Software”（FLOSS），FOSS 一词并未真正达到中立。

### 自由软件

由理查·史托曼提出、并由自由软件基金会采用的《自由软件定义》，将自由软件定义为关乎自由而非价格的软件；也就是说，自由软件必须保障使用者的四项基本自由。该定义最早已知的出版版本，出现在 1986 年 2 月自由软件基金会已停刊的《GNU's Bulletin》中。此文件的正式版本则收录于GNU计划网站的哲学页面。

截至 2017 年 8 月，《自由软件定义》已被翻译成 40 种语言。

#### 自由软件的四项基本自由

依照自由软件基金会的定义，若一个软件要被视为自由软件，其授权条款必须尊重软件使用者的“四项基本自由”：

- 根据任何目的依照使用者意愿执行该程式的自由(自由之零)。
- 研究程式如何运作，并依照使用者需求修改程式的自由(自由之一)。取得源代码是行使此自由的前提。
- 再散布副本以帮助他人的自由(自由之二)。
- 将修改后版本的副本散布给他人的自由(自由之三)。透过这项自由，使用者可以让整个社群有机会受益于其修改。取得源代码也是行使此自由的前提。

### 开源软件

《开源定义》由开放源代码促进会使用，用以判定某一软件授权条款是否符合该组织对开源软件的认定标准。

这一定义以《Debian自由软件指导方针》为基础，主要由布鲁斯·佩伦斯撰写并改写而成。佩伦斯撰写该指导方针后，Debian 开发者社群于 1997 年将其编修并通过为正式政策；1998 年 2 月，开放源代码促进会成立时，则透过移除 Debian 特定内容，将其改写为《开源定义》。

## 历史

在电脑发展的早期数十年，特别是 1950 年代至 1970 年代，软件开发大多具有协作性质。程式通常会以源代码形式在学术界、研究人员与企业开发者之间共享。当时多数公司的收入主要来自硬件销售，软件，包括源代码，通常会随硬件一同自由散布，并经常以公有领域软件的形式存在。

到了 1960 年代后期至 1970 年代，独立的软件产业开始逐渐形成。公司开始将软件作为独立商品贩售，并使用限制性授权条款与技术措施，例如只散布二进制可执行档，来限制使用者对软件的存取与控制。这一转变受到市场竞争增加，以及美国政府对软硬件捆绑销售进行反垄断审查的影响；其中一个代表性案例是 1969 年的“美国诉 IBM 案”。

1980 年，美国著作权法正式将电脑软件纳入保护范围，成为重要转折点。这使 IBM 等公司能够进一步执行闭源散布模式。1983 年，IBM 推出“仅提供目的码”（object code only）政策，停止散布其系统软件的源代码。

为了回应软件使用限制日益增加的情况，理查·史托曼于 1983 年在麻省理工学院发起GNU计划。他的目标是开发一套完整的自由软件操作系统，并恢复使用者对软件的自由。自由软件基金会（FSF）于 1985 年成立，以支持此一目标。斯托曼的《GNU宣言》与自由软件的四项基本自由，奠定了自由软件运动的伦理立场，强调使用者应能控制自己所使用的软件。

1991 年，林纳斯·托瓦兹释出 Linux核心；1992 年，Linux 核心改采 GNU通用公共授权条款（GPL）授权，这标志着建立完整自由操作系统的重要一步。另一方面，在 1993 年 USL v. BSDi 诉讼解决后，FreeBSD、NetBSD 与 OpenBSD 等其他自由软件专案也逐渐受到关注。

1997 年，艾瑞克·雷蒙的文章《大教堂和市集》探讨了自由软件的开发模式，并影响了网景于 1998 年释出其浏览器套件的源代码。该程式码基础后来发展为 Mozilla Firefox 与 Mozilla Thunderbird。

为了扩大企业界的接受度，包括雷蒙、布鲁斯·佩伦斯、提姆·奥莱理与林纳斯·托瓦兹在内的一群开发者，将自由软件运动重新包装为“开源”。开放源代码促进会（OSI）于 1998 年成立，用以推广这一新术语，并强调协作式开发的优点，而非意识形态。

尽管早期曾遇到阻力，例如微软在 2001 年主张“开源是智慧财产的破坏者”，FOSS 最终仍在企业界获得广泛接受。Red Hat 等公司证明，商业成功与自由软件原则可以并存。

## 使用

### 相较于专有软件的优点

#### 个人控制、可客制化与自由

FOSS 的使用者可受益于自由软件所强调的四项基本自由，包括不受限制地使用、研究、复制、修改与再散布软件，无论软件是否经过修改皆然。若使用者希望改变软件的功能，可以修改其源代码；在授权条款允许下，也可以散布修改后的版本。依照专案的决策模式与社群运作方式，使用者也可能向原始专案提交修改，或请求将修改纳入之后的版本。

#### 隐私与安全

专有闭源软件的使用者通常必须信任软件供应商，因为其源代码不对外公开，外部使用者难以直接检查软件是否包含后门、资料搜集机制或其他未公开功能。相较之下，FOSS 的源代码公开，使用者、研究人员与社群成员可检查与验证程式码，并在发现漏洞时提出修正。这种公开审查可能有助于更早发现与修补错误，但其效果仍取决于实际参与审查与维护的人数及能力。

#### 低成本或无成本

FOSS 通常可以免费取得，虽然许多专案会鼓励使用者捐款或购买商业支援服务。低取得成本也使使用者较容易测试、比较与部署不同软件方案，降低尝试新软件时的成本。

#### 品质、协作与效率

FOSS 允许不同组织与个人共同参与开发，以改善软件并满足不同使用情境。与主要由单一公司控制的专有软件相比，FOSS 专案在许多情况下可吸引更多外部贡献者参与，包括使用者、志愿开发者、企业与研究机构。企业采用开源软件的原因之一，也可能是其技术品质、可修改性与避免供应商锁定的能力。

### 相较于专有软件的限制

#### 安全性与使用者支援

依照常被称为“林纳斯定律”的观点，能检视与测试程式码的人越多，缺陷越有可能被快速发现与修复。然而，源代码公开并不必然保证会有足够的人力参与审查。某些由商业公司支援、拥有专职安全团队的专有软件，在特定情况下可能比依赖志愿者维护的 FOSS 专案更能提供稳定的安全维护与使用者支援。

此外，公开源代码也可能让攻击者更容易研究程式码并寻找漏洞。不过，这一点是否构成实际劣势，取决于恶意攻击者、白帽骇客、专案维护者与安全研究社群之间的相对能力，以及漏洞揭露与修补流程是否有效。

#### 硬件与软件相容性

FOSS 有时可能无法与特定专有硬件或软件完全相容。造成这种情况的原因之一，是硬件制造商未公开界面、规格或文件，使 FOSS 社群难以撰写对应的驱动程式。部分厂商也可能基于商业策略，希望使用者只能使用其自家的专有软件或服务。

#### 错误与缺少功能

在某些情况下，FOSS 的功能、稳定性或可维护性可能优于对应的专有软件；但在另一些情况下，FOSS 专案也可能存在尚未修复的错误，或缺少商业软件已具备的功能。这通常取决于特定专案的规模、使用者需求、开发者数量与维护活跃程度。与闭源软件不同的是，FOSS 的使用者若具备时间、能力与动机，通常可以自行修正或扩充软件。

FOSS 开发也可能受到外部标准的限制。例如，某些常见格式或技术标准可能需要支付权利金，或需要签署保密协议才能取得完整文件，这会增加自由软件开发者实作相容功能的困难。

#### 开发持续性的保证较少

某些 FOSS 专案可能难以获得足够资源与参与者，以长期维持开发与维护。相较之下，由公司支持的商业软件通常有较明确的资金与人力来源。不过，商业公司也可能因产品无利可图而停止开发。若专有软件供应商停止支援，使用者通常缺乏继续维护该软件的权利与源代码；而在 FOSS 中，只要授权条款允许，使用者仍可自行或委托第三方继续维护与开发。

#### 应用程序数量不足

由于部分 FOSS 操作系统，特别是面向一般桌面使用者的 Linux 发行版，在终端使用者市场的占有率较低，因此某些商业或专业领域的应用程序可能较少提供原生版本。这可能影响一般使用者或特定产业导入 FOSS 操作系统的意愿。

## 开发

开源软件开发过程中，软件的源代码会公开提供，使他人能够使用、修改与改进。著名的开源软件产品包括 Mozilla Firefox、Android 和 VLC媒体播放器。

开源软件的开发流程通常不同于瀑布模型等传统软件开发方法。这类专案往往倾向于较早发布版本，并鼓励社群参与测试、回报问题与贡献程式码。开源软件开发也常采用敏捷软件开发策略，其特征包括反复迭代、逐步改进与增量式开发。

由于开源软件的开发者通常分散在不同地区，专案常使用电子邮件、Wiki、网络论坛、即时通讯服务与其他线上工具进行沟通。为了让多人能够协作修改程式码，开源专案也常使用 Git 等版本控制系统。

## 经济面向

FOSS 运动在资讯的建构与使用上，挑战了传统的所有权规范。由于资讯是当代经济成长的重要领域，FOSS 运动也被一些研究者视为对新自由主义与一般私有化趋势的反制力量。

透过实现新数位世界中“丰裕经济”的历史潜力，FOSS 可能形成一种政治抵抗的方案，或指出资本主义可能转型的方向。