术语自由软件和开源软件确实有不同的含义,尽管它们所指的软件类别几乎完全相同。
自由软件是以自由(而非价格)为基础定义的,并且与免费软件不同。其理念是,自由软件尊重用户的某些自由(而非自由软件,也称为专有软件)。这包括使用和研究软件的自由,以及分发和改进软件的自由。
自由软件基金会是一个致力于自由软件的倡导和活动组织,为GNU项目提供资金和其他支持(该项目开发了许多进入GNU/Linux发行版如Ubuntu的软件),并且是许多最受欢迎的自由软件许可证的组织作者,其中包括GNU通用公共许可证。FSF 定义自由软件为尊重四项自由的软件,我在此引用:
(0) 任何目的都可以运行程序的自由(自由0)。
(1)有自由研究程序如何运作,并根据个人需求进行修改的权利(自由1)。访问源代码是实现此自由的前提条件。一个人不需要订阅任何特定的意识形态来使用和倡导自由软件。但自由软件的意识形态基础是这样一个观点,即这些自由本质上是好的(或者至少对于超出技术问题的软件质量和盈利能力的重要政治原因来说是好的),人们有责任尊重这些自由,并且软件在很大程度上应该根据是否尊重这些自由来评判。并非所有自由软件的用户都坚决支持这些自由,有些人只在有限程度上认为它们重要,但许多用户致力于这些自由,并且组成了自由软件运动。
一些自由软件的支持者认为,出于其他原因,自由软件是好的,特别是因为自由促进了合作,使自由软件具有优势,并且往往在技术上更为优秀。有些人认为自由本质上很重要,但并不像开发技术上优秀的软件那样重要,或者认为自由与开发技术上优秀的软件同等重要或更重要,但为了有效,有必要从其他方面倡导采用自由软件。
因此,开源 运动应运而生。其中一个融入这个运动的想法是,针对企业的倡导应该强调开放(自由)开发模式的技术优势和盈利能力,而不是涉及伦理或政治问题。开源倡议组织成立为开源运动提供倡导,并正式认可许可证为开源。OSI的开源定义直接基于Debian自由软件准则,这并不奇怪,因为被认为是自由软件的软件类别几乎与被认为是开源的软件类别完全相同。
旧的开源倡议常见问题解答表达了自由软件和开源理念之间的实质性相似之处和不同观点:
开源倡议是一个为自由软件进行市场推广的计划。它以实际务实的理由来推动“自由软件”,而不是意识形态上的高调宣传。获胜的实质并没有改变,失败的态度和象征却有所不同。
尽管自由软件和开源软件背后的理念有所不同 - 或者至少陈述方式完全不同 - 但在实际使用中,区分这两个术语的具体差异要复杂得多。由于它们几乎指的是完全相同的软件类别,人们倾向于选择他们认为最好的术语,无论是出于清晰度、意识形态、社会认同、习惯还是其他原因。此外,虽然自由软件和开源软件的理念是不同的,但也存在一些似乎能够连接两者或至少模糊了其中一个与另一个之间界限的观点。例如,在Eric S. Raymond的《The Cathedral and the Bazaar》平装综合版(ISBN 0-596-00108-8
)前言中,Bob Young写道:
自由并非是商业中的抽象概念。
任何行业的成功几乎直接与该行业供应商和客户所享有的自由程度相关。仅需比较一下美国电话业自从AT&T失去对美国消费者的垄断控制后的创新速度,与那些消费者无权选择时之前缓慢的创新步伐,就可以看出这一点。
这个观点可能没有直接涉及道德和政治问题。但考虑到秘鲁国会议员埃德加·维利亚努瓦在解释他推动国家使用自由软件而非专有软件时提到的某种相似情况(英文翻译由格雷厄姆·西曼提供,也可在此处托管,原文请见):
就像我们所在的国家一样,专有软件产生的工作主要涉及技术任务,其总体价值较小;在当地层面上,为跨国公司生产的专有软件提供支持的技术人员无法修复错误,这不一定是由于缺乏技术能力或才华,而是因为他们无法访问源代码进行修复。通过使用自由软件,可以创造更多具备技术资质的就业机会,并建立一个自由竞争的框架,成功只与提供良好的技术支持和优质服务的能力相关,从而刺激市场增长,增加共享的知识基础,开启生成更高总价值和更高质量水平服务的替代方案,使所有相关方受益:生产者、服务组织和消费者。开源运动的最初和明确的目标之一是减弱明确的争取自由主张,正如本文中早期所表达的:
但采用另一个替代术语的另一个最初的激励理由是,与"自由软件"这个术语相比,"开放源代码"这个术语更不容易引起困惑,因为英文单词"free"也可以表示"免费",即"价格为零"。参见这篇基础文章。这吸引了一些人,他们更多地出于伦理或政治原因而对免费软件感兴趣,而不是因为他们认为它是一种更好的开发模式或商业模式,但他们同意"自由软件"这个术语是有缺陷的,应该被替换。尽管这个术语已经被证明很令人困惑,但"开放源代码"这个术语也被证明很令人困惑,而自由软件基金会创始人Richard Stallman也主张"开放源代码"这个术语更加令人困惑,描述能力也更差。这个标签的含义是我们打算说服企业界出于经济、自利和非意识形态的原因采用我们的方式。
当我开始写下这些字时,已经有五个答案发布在这个问题上。其中两个(this和this)基本上正确地描述了开源的特点,其中一个基本上正确地描述了免费软件的特点,而另一个几乎正确。请注意,这些答案可能已被编辑,因此不能将其视为对它们现在状态的评判。虽然我承认这里的样本远非决定性,但我建议我们每个人都应该根据除了清晰度以外的其他原因使用自己喜欢的术语,因为这两个术语都存在相当大的混淆。
对于同时引用自由软件和开源软件(已经有重叠的概念)的情况,存在同义词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中的大部分软件是自由软件和开源软件。部分软件既不是自由软件也不是开源软件。(None既不是一个也不是另一个。)Ubuntu项目的目标是生产尽可能自由、同时仍能被尽可能多的用户完全使用的系统。
当你安装Ubuntu时,你可以选择安装非自由软件,以执行诸如播放MP3文件之类的功能。在Ubuntu中,附加驱动程序建议并促进了一些设备(如视频和网络卡)的非自由驱动程序的安装。非自由软件(如Adobe Flash和Skype)也可在multiverse和partner厂库中获得。此外,根据“包含”的定义,Ubuntu可能被认为包含非自由软件,因为软件中心提供了安装专有付费软件的能力。
尽管这些和其他因素使Ubuntu(以及大多数其他广受欢迎的GNU/Linux发行版)不完全自由,并且可以说存在着更彻底自由的发行版,但Ubuntu及其社区已将自由软件以及对它的支持带给了成千上万(如果不是数百万)可能从未使用过自由软件的人们,并积极促进了自由软件在全球的传播,以及人们以自己的语言使用自由软件的能力。Ubuntu的哲学从自由和用户能力的角度来表述:
我们相信每个电脑用户都应该: - 有权自由下载、运行、复制、分发、研究、分享、修改和改进软件,无需支付许可费用。 - 能够使用他们选择的语言来使用软件。 - 能够使用所有软件,不受残障的限制。无论您认为自己的目标与自由软件、开源还是两者都一致,甚至都不符合这些,我们鼓励您在满足您的需求时使用Ubuntu。只要您愿意遵循对他人的人性待遇并遵守行为准则, 我们鼓励您参与Ubuntu社区!
对于“开源软件”这个术语,并没有太多的一致性。有人认为这只是意味着源代码可用(参见wikipedia和GNU的一些句子)。其他人则认为自由软件和开源软件是相同的概念,例如opensource.org。然而,分发修改后的软件并不一定被视为“开源软件”的一部分(参见wikipedia,但与此相反,开源定义)。
将其他答案中的一些示例归类如下:skype:都不是;Fedora:自由软件和开源软件;Google Chrome:据我所知,都不是,但Chromium是自由软件和开源软件。
结论:
许多团体都花费了时间和精力来混淆人们对这些术语的理解。特别是自由软件基金会,似乎有意将“开放源代码软件”一词与开放源代码倡议的使用方式区别开来。而开放源代码倡议则引入并大力推广了一个新术语(开放源代码软件),以实质上与已经确立的“自由软件”术语相同。术语“自由软件”和“开放源代码软件”来自于两个运动:-
定义:
有两篇与此相关的文章可以在GNU上找到,它们是:
http://www.gnu.org/philosophy/open-source-misses-the-point.html (新的和更好的)
这两个术语描述了几乎相同的软件类别,但它们代表了基于根本不同价值观的观点。 开源是一种开发方法论;自由软件是一种社会运动。 对于自由软件运动来说,自由软件是一种道德义务,对用户自由的基本尊重。相比之下,开源哲学仅从实际意义上考虑如何使软件“更好”。它认为非自由软件是解决手头实际问题的劣质解决方案。
https://www.gnu.org/philosophy/free-software-for-freedom.html (较旧且已被取代)
这两个运动之间的根本区别在于它们的价值观,它们看待世界的方式。对于开源运动来说,软件是否应该是开源的是一个实际问题,而不是一个伦理问题。正如有人所说,“开源是一种开发方法论;自由软件是一种社会运动。” 对于开源运动来说,非自由软件是次优解决方案。对于自由软件运动来说,非自由软件是一个社会问题,而自由软件则是解决方案。
/----------------------------------------------\ / | | \ / | | \ / | | \ | | | 源代码许可证为GNU *GPL,Apache, | | 原始BSD、修改BSD,free X11,expat,Python,MPL等。 | 开源 | 可执行文件未经Tivo化 | | | | | \ | | \ | | \ | | / \---------------------------------------------- / | Tivo化(暴君)设备 | O | / ----------------------------------------------/