自由软件和开源软件之间有区别吗?

我对这两个术语有点困惑。它们之间有什么区别吗?

1辩论进行得非常好。如果能够提供一些例子,那将会很棒。 - Mysterio
1哇,我对这个问题的热度感到惊讶。毫无疑问,会有出色的回答涌现出来。也许是该网站上最好的问题之一。 - Knowledge Cube
1关于这两个术语的信息汇集非常丰富。优秀的社区提供了出色的反馈。 - Mysterio
5个回答

术语自由软件开源软件确实有不同的含义,尽管它们所指的软件类别几乎完全相同。

什么是自由软件?

自由软件是以自由(而非价格)为基础定义的,并且与免费软件不同。其理念是,自由软件尊重用户的某些自由(而非自由软件,也称为专有软件)。这包括使用和研究软件的自由,以及分发和改进软件的自由。

自由软件基金会是一个致力于自由软件的倡导和活动组织,为GNU项目提供资金和其他支持(该项目开发了许多进入GNU/Linux发行版如Ubuntu的软件),并且是许多最受欢迎的自由软件许可证的组织作者,其中包括GNU通用公共许可证。FSF 定义自由软件为尊重四项自由的软件,我在此引用:

(0) 任何目的都可以运行程序的自由(自由0)。

(1)有自由研究程序如何运作,并根据个人需求进行修改的权利(自由1)。访问源代码是实现此自由的前提条件。
(2)有自由重新分发副本,以便帮助他人(自由2)。
(3)有自由分发您修改版本的副本给他人(自由3)。通过这样做,您可以让整个社区有机会从您的改动中受益。访问源代码是实现此自由的前提条件。
另一个关于自由软件的定义和不包括的重要来源是Debian Free Software Guidelines(来自Debian项目,GNU/Linux发行版Ubuntu是其派生版本,还可参考本文)。

一个人不需要订阅任何特定的意识形态来使用和倡导自由软件。但自由软件的意识形态基础是这样一个观点,即这些自由本质上是好的(或者至少对于超出技术问题的软件质量和盈利能力的重要政治原因来说是好的),人们有责任尊重这些自由,并且软件在很大程度上应该根据是否尊重这些自由来评判。并非所有自由软件的用户都坚决支持这些自由,有些人只在有限程度上认为它们重要,但许多用户致力于这些自由,并且组成了自由软件运动

什么是开源?

一些自由软件的支持者认为,出于其他原因,自由软件是好的,特别是因为自由促进了合作,使自由软件具有优势,并且往往在技术上更为优秀。有些人认为自由本质上很重要,但并不像开发技术上优秀的软件那样重要,或者认为自由与开发技术上优秀的软件同等重要或更重要,但为了有效,有必要从其他方面倡导采用自由软件。

因此,开源 运动应运而生。其中一个融入这个运动的想法是,针对企业的倡导应该强调开放(自由)开发模式的技术优势和盈利能力,而不是涉及伦理或政治问题。开源倡议组织成立为开源运动提供倡导,并正式认可许可证为开源。OSI的开源定义直接基于Debian自由软件准则,这并不奇怪,因为被认为是自由软件的软件类别几乎与被认为是开源的软件类别完全相同。

旧的开源倡议常见问题解答表达了自由软件和开源理念之间的实质性相似之处和不同观点:

开源倡议是一个为自由软件进行市场推广的计划。它以实际务实的理由来推动“自由软件”,而不是意识形态上的高调宣传。获胜的实质并没有改变,失败的态度和象征却有所不同。

自由软件和开源在实践中有哪些比较/对比的理念?

尽管自由软件和开源软件背后的理念有所不同 - 或者至少陈述方式完全不同 - 但在实际使用中,区分这两个术语的具体差异要复杂得多。由于它们几乎指的是完全相同的软件类别,人们倾向于选择他们认为最好的术语,无论是出于清晰度、意识形态、社会认同、习惯还是其他原因。此外,虽然自由软件和开源软件的理念是不同的,但也存在一些似乎能够连接两者或至少模糊了其中一个与另一个之间界限的观点。例如,在Eric S. Raymond的《The Cathedral and the Bazaar》平装综合版(ISBN 0-596-00108-8)前言中,Bob Young写道:

自由并非是商业中的抽象概念。

任何行业的成功几乎直接与该行业供应商和客户所享有的自由程度相关。仅需比较一下美国电话业自从AT&T失去对美国消费者的垄断控制后的创新速度,与那些消费者无权选择时之前缓慢的创新步伐,就可以看出这一点。

这个观点可能没有直接涉及道德和政治问题。但考虑到秘鲁国会议员埃德加·维利亚努瓦在解释他推动国家使用自由软件而非专有软件时提到的某种相似情况(英文翻译由格雷厄姆·西曼提供,也可在此处托管原文请见):

就像我们所在的国家一样,专有软件产生的工作主要涉及技术任务,其总体价值较小;在当地层面上,为跨国公司生产的专有软件提供支持的技术人员无法修复错误,这不一定是由于缺乏技术能力或才华,而是因为他们无法访问源代码进行修复。通过使用自由软件,可以创造更多具备技术资质的就业机会,并建立一个自由竞争的框架,成功只与提供良好的技术支持和优质服务的能力相关,从而刺激市场增长,增加共享的知识基础,开启生成更高总价值和更高质量水平服务的替代方案,使所有相关方受益:生产者、服务组织和消费者。
鉴于采用自由软件的实际后果包括政治和道德影响(在这种情况下,Villanueva认为,秘鲁人民在知识和经济上获得了权力),自由软件和开源思维存在一些重叠(在软件推荐方面几乎完全重叠)。

开源运动的最初和明确的目标之一是减弱明确的争取自由主张,正如本文中早期所表达的:

这个标签的含义是我们打算说服企业界出于经济、自利和非意识形态的原因采用我们的方式。

但采用另一个替代术语的另一个最初的激励理由是,与"自由软件"这个术语相比,"开放源代码"这个术语更不容易引起困惑,因为英文单词"free"也可以表示"免费",即"价格为零"。参见这篇基础文章。这吸引了一些人,他们更多地出于伦理或政治原因而对免费软件感兴趣,而不是因为他们认为它是一种更好的开发模式或商业模式,但他们同意"自由软件"这个术语是有缺陷的,应该被替换。尽管这个术语已经被证明很令人困惑,但"开放源代码"这个术语也被证明很令人困惑,而自由软件基金会创始人Richard Stallman主张"开放源代码"这个术语更加令人困惑,描述能力也更差。

我应该使用哪个术语?

当我开始写下这些字时,已经有五个答案发布在这个问题上。其中两个(thisthis)基本上正确地描述了开源的特点,其中一个基本上正确地描述了免费软件的特点,而另一个几乎正确。请注意,这些答案可能已被编辑,因此不能将其视为对它们现在状态的评判。虽然我承认这里的样本远非决定性,但我建议我们每个人都应该根据除了清晰度以外的其他原因使用自己喜欢的术语,因为这两个术语都存在相当大的混淆。

对于同时引用自由软件和开源软件(已经有重叠的概念)的情况,存在同义词F/OSS(自由/开源软件),FOSS(自由[和]开源软件)和FLOSS(自由/自由/开源软件)。参见this article关于这些术语的文章,以及this article关于自由软件替代术语的更一般主题。

是否存在不是开源的免费软件?

可能不是。根据自由软件定义开源定义, 自由0可能需要OSD标准5、6、7、8、9和10; 自由1需要OSD标准2(可能还需要7); 自由2可能需要OSD标准1、7、8和9; 自由3可能需要OSD标准1、2、3、4、7、8和10。

有没有不是免费的开源软件?

根据定义,是的,因为除了提供源代码的要求外,开源定义只关注许可证可能要求的内容。相比之下,根据自由软件定义, 软件要成为自由软件,必须实际上能够行使这四种自由。

实际上,绝大部分开源软件也是自由软件。然而,锁定化现象使得某些开源软件在实践中非自由。当软件被设计成只能在特定设备上运行,并且该设备被设计成阻止修改版本真正运行时,用户就无法行使自由 1。

最近出现的问题是运行开源软件但实际上不自由的设备重新引发了支持者之间关于开源自由软件概念的争论。开源运动宣传自由和开放源代码软件的技术优点。但当软件的功能实际上不受用户控制时怎么办?Richard Stallman 写道 [省略号为我所加]:

受到电影和唱片公司的压力,用于个人使用的软件越来越多地被设计成具有限制性。这一恶意特性...与自由软件所追求的自由精神背道而驰。不仅如此,由于数字版权管理(DRM)的目标是剥夺你的自由,DRM开发者试图使其难以更改、不可能更改,甚至使更改该实施DRM的软件变成非法。

然而,一些开源支持者提出了“开源DRM”软件的概念。他们的想法是通过公开发布旨在限制用户对加密媒体访问的程序的源代码,并允许他人对其进行更改,从而生产出更强大、可靠的限制用户的软件。然后将该软件安装在不允许你更改的设备中交付给你。

这种软件可能是开源的并采用开源开发模式,但它不会是自由软件,因为它不尊重实际运行该软件的用户的自由。

关于软件必须在实践中遵守哪些自由的确切想法存在分歧。但对于tivoization是否使软件非自由的争议仍然是关于自由的争议。例如,Linus Torvalds认为(他不喜欢这个词)Linux的tivoization不应该被禁止, 而这是出于相信它实际上并没有阻止人们自由地使用该软件(在另一设备上)。

自由软件和开源如何适用于Ubuntu?

Ubuntu中的大部分软件是自由软件和开源软件。部分软件既不是自由软件也不是开源软件。(None既不是一个也不是另一个。)Ubuntu项目的目标是生产尽可能自由、同时仍能被尽可能多的用户完全使用的系统。

当你安装Ubuntu时,你可以选择安装非自由软件,以执行诸如播放MP3文件之类的功能。在Ubuntu中,附加驱动程序建议并促进了一些设备(如视频和网络卡)的非自由驱动程序的安装。非自由软件(如Adobe Flash和Skype)也可在multiverse和partner厂库中获得。此外,根据“包含”的定义,Ubuntu可能被认为包含非自由软件,因为软件中心提供了安装专有付费软件的能力。

尽管这些和其他因素使Ubuntu(以及大多数其他广受欢迎的GNU/Linux发行版)不完全自由,并且可以说存在着更彻底自由的发行版,但Ubuntu及其社区已将自由软件以及对它的支持带给了成千上万(如果不是数百万)可能从未使用过自由软件的人们,并积极促进了自由软件在全球的传播,以及人们以自己的语言使用自由软件的能力。Ubuntu的哲学从自由和用户能力的角度来表述:

我们相信每个电脑用户都应该: - 有权自由下载、运行、复制、分发、研究、分享、修改和改进软件,无需支付许可费用。 - 能够使用他们选择的语言来使用软件。 - 能够使用所有软件,不受残障的限制。
我们的理念反映在我们所生产的软件、分发方式和许可条款中,即Ubuntu许可政策。
安装Ubuntu后,您可以放心,我们的所有软件都符合这些理念。此外,我们不断努力确保您可能需要的每一款软件都可以在赋予您这些自由的许可证下获得。
接下来,文章讨论并赞扬了“自由软件”和“开源”运动,并表示: 尽管一些人将“自由”的与“开源”的视为追求不同目标的竞争性运动,但我们不这样认为。Ubuntu自豪地拥有既认同“自由软件”又认同“开源”的成员。

无论您认为自己的目标与自由软件开源还是两者都一致,甚至都不符合这些,我们鼓励您在满足您的需求时使用Ubuntu。只要您愿意遵循对他人的人性待遇并遵守行为准则, 我们鼓励您参与Ubuntu社区!


2哇,这么多东西都在一个脑袋里。 - Mysterio
非常感谢您提供如此详尽、清晰和平衡的回答。 - lofidevops
@Eliah,如果我在我的博客文章中使用你的大部分回答关于FOSS的问题,你觉得可以吗?我就是那个提问的人 :) - Mysterio
4@Mysterio 是的,请这样做!根据常见问题解答,AskUbuntu.com上的所有帖子都是根据知识共享署名-相同方式共享3.0通用许可协议进行许可的,这是一种自由内容许可证。与GNU GPL类似,CC BY-SA 3.0是一种版权保护协议,因此发布的衍生作品(在这种情况下,您的博客文章)也必须遵循该协议。请参阅此处了解您的权利和责任。(如果您希望获得其中未提供的权利,请告诉我。) - Eliah Kagan
好的,先生,根据所涉及的许可证,此帖子所提供的哪些权利不包括? - Mysterio
@Mysterio 这里有详细信息(http://creativecommons.org/licenses/by-sa/3.0/); 那里提供的摘要比我在评论中说的任何东西都更好,并且完整的许可证文本当然是权威参考。但是,例如,如果您想以CC BY-SA 3.0以外的许可证提供衍生作品,您将无权在CC BY-SA 3.0下这样做。要做到这一点,您需要向版权持有人(在这种情况下是我,尽管Marco Ceppi进行了一个小修改)请求特殊许可。 - Eliah Kagan
@Mysterio 我会给出两个可能需要请求许可的具体示例:(1)你可能希望将你的衍生作品(博客文章)设为专有,禁止他人制作你的衍生作品的衍生作品。这正是版权左传旨在防止的事情,如果你能给出一个令人信服的理由,说明我这样做会带来更多好处而不是伤害,我才会同意授权。 - Eliah Kagan
@Mysterio(2)另一方面,您可能希望能够根据其他的copyleft许可证使用这个答案。例如,您可以要求我授予您在GFDL下没有不变章节的许可证。您之所以要请求此类使用权限的原因之一是为了将其与一个GFDL许可证的作品结合使用。如果有这样的请求,我可能会立即授予许可。 - Eliah Kagan
这只是一篇关于自由开源软件(FOSS)的博客文章(我还没有创建账户),旨在鼓励在我的国家加纳推广使用FOSS。我可以得到您的许可吗?同时,您也会在这篇文章中被署名。 - Mysterio
简单问题的冗长回答 - Dee
自由软件必须是免费软件吗? - Tim

“免费”可以有两种含义:一种是指“不花费任何费用”(“gratis”,“免费如啤酒”),另一种是指“可以自由修改”(“libre”,“免费如言论”)。
“开源”仅意味着开发者提供了源代码,并不一定是“免费如啤酒”或“免费如言论”(尽管可能是其中之一或两者皆有)。
这里有一个有用的维恩图:http://www.gnu.org/philosophy/categories.html

3“开源”并不仅仅意味着开发者公开源代码。请参阅http://opensource.org/docs/osd了解详细信息。 - Eliah Kagan
4此外,在短语“自由软件”中,“自由”一词始终指的是自由而不是价格。请参阅http://www.gnu.org/philosophy/free-sw.html和http://en.wikipedia.org/wiki/Free_software。术语“自由软件”曾被专有软件公司偶尔用来指代[免费软件](http://en.wikipedia.org/wiki/Freeware),但这个意义几乎已经完全不再使用,被认为是对“自由软件”这个术语的错误使用(请参考上述链接)。 - Eliah Kagan
@EliahKagan,你在自己的陈述中自相矛盾了。你说“'free'总是指自由...”,然后又说它被“偶尔用来指代免费软件”。说实话,“自由软件”通常在版权声明中被定义,以明确使用的含义。 - zzzzBov
1@EliahKagan,你可能想强调“GNU人士”在谈论“自由软件”时总是提到自由。 - Thorbjørn Ravn Andersen
@ThorbjørnRavnAndersen 不只是GNU的人有这种看法。例如,相当一部分FreeBSD、NetBSD、OpenBSD的开发者对GNU项目都有很不满的情绪。但当他们谈论免费软件时,他们仍然在提到自由(比如,“存在专有派生版本并不会使OpenBSD变得不那么自由。”)。认为GNU项目和自由软件基金会包括了每一个坚持自由软件理念的人是一种误解。在Ubuntu环境下,特别是将“免费软件”解释为“免费获取”的做法是错误的。 - Eliah Kagan
@EliahKagan BSD和GNU之间的主要区别在于后者不允许你剥夺获得的自由。GNU人员希望“自由软件”保持自由。而BSD人员则不在乎例如微软将他们的TCP/IP堆栈用于其封闭源商业产品中并使其不再免费。 - Thorbjørn Ravn Andersen
@ThorbjørnRavnAndersen 这是一个非常GNU式的表述差异的方式,有趣的是。BSD的支持者会说,微软使用了BSD的TCP/IP实现并不会剥夺任何人的自由,因为对于从中获取的BSD系统而言,每个人的自由仍然完整无缺。也就是说,Windows的存在并不妨碍我们在FreeBSD、OpenBSD、NetBSD或者自由软件方面行使我们的自由。(但这与“自由软件”的含义问题是无关的。你让它听起来像我使用“自由软件”是GNU特定的。事实并非如此。) - Eliah Kagan

没有权威可以定义一个词的意义。它的意义是通过使用方式来定义的,因此一个词的意义随着时间的推移可能会发生变化,或者在同一时间对不同群体的人来说可能有不同的含义。
话虽如此:wikipedia自由软件基金会Debian项目Ubuntu项目GNU都同意一件事情:“自由软件”关乎自由而非成本。自由软件可能需要花钱购买,也可能不需要。

对于“开源软件”这个术语,并没有太多的一致性。有人认为这只是意味着源代码可用(参见wikipediaGNU的一些句子)。其他人则认为自由软件和开源软件是相同的概念,例如opensource.org。然而,分发修改后的软件并不一定被视为“开源软件”的一部分(参见wikipedia,但与此相反,开源定义)。

将其他答案中的一些示例归类如下:skype:都不是;Fedora:自由软件和开源软件;Google Chrome:据我所知,都不是,但Chromium是自由软件和开源软件。

结论:

许多团体都花费了时间和精力来混淆人们对这些术语的理解。特别是自由软件基金会,似乎有意将“开放源代码软件”一词与开放源代码倡议的使用方式区别开来。而开放源代码倡议则引入并大力推广了一个新术语(开放源代码软件),以实质上与已经确立的“自由软件”术语相同。
您也可以在此处阅读更多信息。

术语“自由软件”和“开放源代码软件”来自于两个运动:-

  1. 自由软件运动
  2. 开放源代码运动

定义:

有两篇与此相关的文章可以在GNU上找到,它们是:

  • http://www.gnu.org/philosophy/open-source-misses-the-point.html (新的和更好的)

    这两个术语描述了几乎相同的软件类别,但它们代表了基于根本不同价值观的观点。 开源是一种开发方法论;自由软件是一种社会运动。 对于自由软件运动来说,自由软件是一种道德义务,对用户自由的基本尊重。相比之下,开源哲学仅从实际意义上考虑如何使软件“更好”。它认为非自由软件是解决手头实际问题的劣质解决方案。

  • https://www.gnu.org/philosophy/free-software-for-freedom.html (较旧且已被取代)

    这两个运动之间的根本区别在于它们的价值观,它们看待世界的方式。对于开源运动来说,软件是否应该是开源的是一个实际问题,而不是一个伦理问题。正如有人所说,“开源是一种开发方法论;自由软件是一种社会运动。” 对于开源运动来说,非自由软件是次优解决方案。对于自由软件运动来说,非自由软件是一个社会问题,而自由软件则是解决方案。

在OSI FAQ中:- “自由软件”是什么,它和“开源”是一样的吗? 引用: FSF在评估许可证时使用了一个更简短的四点定义的软件自由,而OSI则使用了一个更长的十点定义。这两个定义在实践中导致了相同的结果,但使用了表面上不同的语言来达到目标。
我在这里附上了详细信息:

自由软件和开源作为程序类别的关系

/----------------------------------------------\
/ |                                            | \
/  |                                            |  \
/   |                                            |   \
|                                            |
| 源代码许可证为GNU *GPL,Apache,         |
| 原始BSD、修改BSD,free X11,expat,Python,MPL等。  |   开源
| 可执行文件未经Tivo化                      |
|                                            |
|                                            |
\   |                                            |
\  |                                            |
\ |                                            |   /
\----------------------------------------------  /
| Tivo化(暴君)设备                       | O | /
----------------------------------------------/
  • 在所有开源的程序中,只有极小一部分是不自由的。如果按比例绘制底部行,其文本可能得用非常小的字体,或许太小而难以阅读。
  • Tivoized 或“专制”设备包含从自由源代码制作的非自由可执行文件。
  • “O”代表“其他”,指的是源代码受开源但不自由许可证保护的程序。


我认为,一个说明差异的例子可以证明Shuttleworth比自由软件更加开源。以下引用(回应与专有公司合作)可以作为例证:
“如果你的世界观确实更具生产力、效率、洞察力和可用性,那么你应该有信心在长期内取得胜利。”
(来源:slashdot采访)
我认为,自由软件的观点可能并不那么自信,认为事物在长期内会变得自由,并且在合作方面也不太相关。你可以将其比作认为奴隶制注定会消失,因为它不高效:人们在自由的情况下工作更好,创新更多,没有叛乱的风险。这是真实的,但你也可以反对奴隶制作为一种更抽象的原则。