免费和开源软件的区别
介绍
许多人往往忘记的软件开发的一个方面是软件应该如何获得许可。 软件许可证规定了被许可人(最终用户)如何使用和分发代码,这会对技术的广泛采用产生重大影响。 大多数现代软件都是根据专有许可出售的,该许可允许发布者或创建者保留软件的知识产权。
但是,还有另一种观点认为这将不必要的控制权置于软件发行商手中。 通过阻止被许可人复制和更改软件的源代码,该想法成立,专有软件发行商扼杀了创新并阻碍了新技术的潜在增长。 这种立场激发了许可证的创建,授予用户根据自己的喜好学习、更改和共享软件源代码的权利。 以这种方式获得许可的软件通常以两个名称之一而闻名:“自由软件”或“开源软件”。
从广义上讲,这两个术语指的是同一件事:对如何使用几乎没有限制的软件。 从他们的支持者的角度来看,免费和开源软件都比专有软件更安全、更高效、工作更可靠。 但是,为什么同一事物有两个标签? 答案涉及一点历史,以及对形成两个独立但密切相关的运动的细微差别的理解。
一点背景
应该允许使用软件的个人查看、编辑和共享其源代码而不会产生法律后果,这种想法并不是什么新鲜事。 在 1970 年代之前,软件通常与其源代码一起分发,原因是软件通常是特定于硬件的,最终用户必须修改它才能在他们的特定机器上运行或添加特殊功能。
这段时间与计算机交互的大多数人都是在严格的学术或研究环境中进行的。 这意味着计算资源通常是共享的,并且广泛鼓励更改软件以创建更高效的工作流程或更可靠的解决方案。 例如,加州大学伯克利分校的 Project Genie 通过破解实验室 SDS 930 计算机的源代码开发了伯克利分时系统——一个从头开始构建的分时操作系统。
然而,随着软件变得越来越复杂和生产成本越来越高,软件公司想方设法阻止源代码的无节制共享,以保护他们的收入流并拒绝竞争对手访问他们的实施。 他们开始对其产品施加法律限制,包括版权和租赁合同,并开始根据专有许可分发他们的产品。 到 1970 年代末,大多数软件公司已经停止发布包含源代码的软件。 这导致许多长期使用计算机的用户表达了他们的不满,他们的精神最终形成了自由软件运动的基础。
自由软件的开端
自由软件运动很大程度上是 Richard Stallman 的心血结晶。 Stallman 于 1970 年代初在专有软件许可兴起之前开始了他的计算机科学研究,并在 1980 年代初在麻省理工学院人工智能实验室担任研究员。 作为学术黑客社区的成员已有十多年,他对专有软件的传播感到沮丧,并将其视为对人们创新和改进现有软件的权利的侵犯。
1983 年,Stallman 启动了 GNU 项目——努力创建一个完整的操作系统,为用户提供查看、更改和共享其源代码的自由。 Stallman 在 GNU 宣言 中阐明了他对该项目的动机。 在其中,他表示他坚信专有许可会阻碍社区驱动的软件开发,有效地隔离创新并削弱技术进步。
根据 Stallman 的说法,这给用户和开发人员带来了不公平的负担,否则他们将能够更改代码以满足自己的需要或更改代码以提供新功能。 因此,GNU 项目既可以看作是对专有软件兴起的回应,也可以看作是对自由共享源代码和协作软件开发时代的回溯。
1985 年,Stallman 在 GNU 项目的基础上建立了 自由软件基金会 (FSF),这是一个致力于向更广泛的公众推广自由软件概念的非营利组织。 Stallman 后来还开发了 GNU 通用公共许可证,这是一种保证最终用户自由运行、查看和共享源代码的权利的软件许可证。
根据 FSF 的说法,要让一个软件被认为是真正的“免费”,它的许可证必须保证其用户的四项基本自由:
- 为任何目的自由运行程序。
- 研究程序如何工作的自由,并对其进行更改,以便它按照您的意愿进行计算。 访问源代码是这样做的先决条件。
- 重新分发副本的自由,以便您可以帮助您的邻居。
- 将修改后的版本的副本分发给他人的自由。 通过这样做,您可以让整个社区有机会从您的更改中受益。 访问源代码是这样做的先决条件。
FSF 认为任何不符合这些标准的任何软件都是非免费的,因此是不道德的。
开源的兴起
Stallman 选择了“自由软件”这个标签来表达用户可以自由更改和共享源代码的想法。 多年来,这导致了一些混乱,因为许多人认为“免费软件”是指可以以零成本获得的任何软件(更准确地称为“免费软件”或“共享软件”)。 FSF 有一句名言来解释名称的选择,“将免费视为言论自由,而不是免费啤酒。”
然而,到 1990 年代后期,一些 GNU 和 Linux 爱好者越来越担心这种双重含义会导致很大一部分用户错过自由软件背后的哲学及其相对于专有代码的优势。 FSF 还因其对各种专有软件的强硬道德立场而闻名。 一些自由软件倡导者担心这种方法对商业利益太不友好,最终会阻碍自由软件运动的传播。
大教堂和集市
1997 年,埃里克·S。 Raymond,当时是自由软件的倡导者和开发者,他写了 The Cathedral and the Bazaar,一篇被广泛引用的文章,比较了各种自由软件项目中使用的两种不同的开发模式。 “大教堂”指的是一种自上而下的开发模式,由一组独家开发人员生成代码,例如 GNU Emacs 的开发。 另一方面,“The Bazaar”指的是一种通过互联网公开开发代码的方法,就像开发 Linux 内核的情况一样。
这篇文章的中心论点是 Bazaar 模型在发现和解决软件错误方面本质上更有效,因为更多人能够查看和试验源代码。 因此,Raymond 认为,利用社区驱动的、自下而上的开发过程会产生更安全、更可靠的软件。
部分响应 The Cathedral and the Bazaar 中提出的想法,Netscape 在 1998 年初将其 Communicator 网络浏览器的源代码作为免费软件发布。 (Communicator 源代码后来成为 Mozilla FireFox 1.0 的基础)。 受 Netscape 在此源代码发布中看到的商业潜力的启发,一群自由软件爱好者(包括 Raymond、Linus Torvalds、Philip Zimmerman 和许多其他人)试图重新命名自由软件运动并将其重点从道德或哲学转移动机。 该组织选择“开源”作为免费共享软件的标签,希望它能够更好地体现协作、社区驱动的开发模式的商业价值。
此后不久,Raymond 和 Bruce Perens 创立了 Open Source Initiative (OSI),以鼓励使用新术语以及传播开源原则。 OSI 还开发了 开源定义 — 软件许可证必须遵守的十项原则列表才能被视为开源:
- 免费再分发 - 许可证不应限制任何一方将软件作为包含来自多个来源的程序的大型软件分发的组件出售或赠送。
- Source Code - 程序必须包含源代码,并且必须允许以源代码和编译形式分发。
- 派生作品 - 许可证必须允许修改和派生作品,并且必须允许在与原始软件许可证相同的条款下分发它们。
- 作者源代码的完整性 - 只有当许可证允许分发带有源代码的“补丁文件”以修改程序时,许可证才可以限制以修改的形式分发源代码建造时间。
- 不歧视个人或群体 - 许可证不得歧视任何个人或群体。
- 不歧视努力领域 - 许可证不得限制任何人在特定领域使用该程序。
- 许可证的分发 - 附加到程序的权利必须适用于重新分发程序的所有人,而无需这些方执行额外的许可证。
- 许可证不得特定于产品 - 附加到程序的权利不得依赖于程序是特定软件分发的一部分。
- 许可证不得限制其他软件 - 许可证不得限制与许可软件一起分发的其他软件。
- 许可证必须是技术中立的 - 许可证的任何规定不得基于任何单独的技术或界面风格。
免费和开源软件的区别
在大多数人看来,“自由软件”和“开源软件”在含义上的差异是微不足道的,只是方法或理念上的细微差别。 正如开源倡议所认为的那样,这两个术语的含义相同,它们几乎可以在任何情况下互换使用。 他们只是更喜欢“开源”标签,因为他们认为它可以更清晰地描述软件及其创建者对如何使用它的意图。
然而,对于“自由软件”阵营来说,“开源”并没有充分传达运动的重要性以及专有软件可能带来的长期社会问题。 自由软件基金会认为 OSI 过于关注促进非专有软件的实际利益(包括其盈利能力和社区驱动开发模式的效率),而对限制用户权利的道德问题关注不够。根据自己的条件更改和改进代码。
一个给定的软件是免费的还是开源的,取决于它是根据哪个许可证分发的,以及该许可证是否得到了开源计划、自由软件基金会或两者的批准。 哪些许可证由哪个组织批准,有很多重叠之处,但也有一些例外。 例如,NASA 开源协议是 OSI 批准的许可证,FSF 认为它过于严格。 因此,FSF 不鼓励任何人使用根据该许可分发的软件。 不过,一般来说,如果它可以被描述为自由软件,那么它也很有可能符合开源软件的定义。
替代名称
多年来,已经提出了这种软件的其他几个名称来结束这场争论。 “免费和开源软件”——通常简称为“FOSS”——是使用最广泛的软件之一,被认为是两者之间的安全中立。 术语“自由软件”(“自由”源自几种浪漫语言,大致意思是“自由状态”)已经获得了自己的追随者,以至于首字母缩略词“FLOSS”(意思是“自由/自由和开源软件)也变得相当普遍。
应该注意的是,免费和开源软件都不同于公共领域的软件。 免费和开源软件通过其许可来定义其自由,而公共领域的软件可能会坚持某些相同的优点,但会超出许可系统。 自由和开源软件的一个重要区别是,基于自由或开源源代码的作品也必须使用 FOSS 许可证进行分发。 发布到公共领域的软件没有这个要求。
公共领域软件的另一个问题源于并非世界上每个国家都承认非版权内容这一事实。 这使得不可能做出全球公认的声明,即某软件属于公共领域。 因此,FSF 和 OSI 都不鼓励开发人员将软件发布到公共领域。
结论
在大多数情况下,“自由软件”和“开源软件”这两个术语是可以互换的,而某人是否更喜欢其中一个通常归结为语义或哲学观点的问题。 然而,对于许多希望开发软件并将其公之于众的程序员或希望改变人们看待技术和与技术交互方式的活动家来说,这种差异可能是重要的。 因此,在发布新软件时,必须仔细权衡不同许可证(包括专有许可证)的优缺点,然后选择最适合您特定需求的许可证。
如果您有兴趣详细了解哪种软件许可证适合您的下一个项目,自由软件基金会的 许可证列表 提供了免费和非免费许可证的详细说明。 此外,开源计划的许可证和标准页面可能也很有趣。