自由和非自由软件的分类

 [Categories of software]

此图表解释了不同的软件类别。它以 SVGPNG 图像格式提供,并遵循 知识共享署名-相同方式共享 4.0 国际许可协议。
注意:如果您的浏览器完全支持 SVG 格式,则该图表是可点击的。

自由软件

自由软件是指允许任何人使用、复制和/或分发的软件,无论是原样还是修改后的,无论是免费还是收费。特别是,这意味着必须提供源代码。“如果它不是源代码,那就不是软件。”这是一个简化的描述;另请参阅完整定义

如果一个程序是自由的,那么它就有可能被包含在诸如 GNU 之类的自由操作系统中,或者包含在自由版本的GNU/Linux 系统中。

有很多不同的方法可以使一个程序成为自由的——很多细节问题,可以用不止一种方式来决定,并且仍然使程序保持自由。下面介绍了一些可能的变体。有关特定自由软件许可证的信息,请参阅许可证列表页面。

自由软件关乎自由,而不是价格。但是,专有软件公司通常使用“自由软件”一词来指代价格。有时他们指的是您可以免费获得二进制副本;有时他们指的是一个副本与您购买的计算机捆绑在一起,并且价格包含这两者。无论哪种方式,它都与我们在 GNU 项目中对自由软件的定义无关。

由于这种潜在的混淆,当一家软件公司说其产品是自由软件时,请务必检查实际的发布条款,以了解用户是否真的拥有自由软件所暗示的所有自由。有时它确实是自由软件;有时则不是。

许多语言对于自由(如自由)和自由(如零价格)都有两个单独的词。例如,法语有“libre”和“gratuit”。英语则不然;有一个词“gratis”明确指代价格,但没有一个常用的形容词明确指代自由。因此,如果您说另一种语言,我们建议您将“free”翻译成您的语言,使其更清晰。请参阅我们的“自由软件”一词的各种其他语言的翻译列表

自由软件通常比非自由软件更可靠

开源软件

有些人使用“开源”软件一词来表示或多或少与自由软件相同的类别。它与自由软件的类别并不完全相同:他们接受一些我们认为过于限制的许可证,并且有一些他们没有接受的自由软件许可证。但是,该类别扩展的差异很小:我们只知道少数几个开源但不是自由的源代码案例。原则上,可能会发生一些自由程序被拒绝作为开源,但我们不知道是否发生过这种情况。

我们更喜欢“自由软件”一词,因为它指的是自由——“开源”一词没有做到这一点。

公共领域软件

公共领域软件是指不受版权保护的软件。如果源代码在公共领域,这是非著作权自由软件的一个特例,这意味着某些副本或修改后的版本可能根本不是自由的。

在某些情况下,可执行程序可以在公共领域,但源代码不可用。这不是自由软件,因为自由软件需要源代码的可访问性。同时,大多数自由软件不在公共领域;它受版权保护,并且版权所有者已合法授权每个人以自由的方式使用它,并使用自由软件许可证。

有时,人们以一种宽松的方式使用“公共领域”一词来表示“自由”或“免费提供”。但是,“公共领域”是一个法律术语,精确地意味着“不受版权保护”。为了清楚起见,我们建议仅对此含义使用“公共领域”,并使用其他术语来传达其他含义。

根据大多数国家签署的伯尔尼公约,任何书写下来的东西都会自动获得版权。这包括程序。因此,如果您希望您编写的程序处于公共领域,则必须采取一些法律步骤来放弃其版权;否则,该程序将受版权保护。

著作权软件

著作权软件是指其发布条款确保所有版本的所有副本都具有或多或少相同的发布条款的自由软件。例如,这意味着著作权许可证通常不允许其他人对软件添加额外的要求(尽管可以允许一组有限的安全添加要求),并且需要提供源代码。这可以保护程序及其修改后的版本免受一些常见的使程序成为专有的方法的影响。

某些著作权许可证,例如 GPL 第 3 版,会阻止其他使软件成为专有的方法,例如Tivo 化

在 GNU 项目中,我们为我们编写的几乎所有软件设置了著作权,因为我们的目标是让每个用户都拥有“自由软件”一词所暗示的自由。请参阅我们的著作权文章,以更详细地解释著作权的工作原理以及我们为什么要使用它。

著作权是一个通用概念;要为实际程序设置著作权,您需要使用一组特定的发布条款。编写著作权发布条款的方法有很多种,因此原则上可能存在许多著作权自由软件许可证。但是,在实际实践中,几乎所有著作权软件都使用GNU 通用公共许可证。两个不同的著作权许可证通常是“不兼容的”,这意味着将使用一个许可证的代码与使用另一个许可证的代码合并是非法的;因此,如果人们使用单个著作权许可证,对社区有利。

非著作权自由软件

非著作权自由软件来自作者,并允许重新分发和修改,并对其添加额外的限制。

如果一个程序是自由的但没有著作权,那么某些副本或修改后的版本可能根本不是自由的。一家软件公司可以编译该程序,无论是否进行修改,并将可执行文件作为专有软件产品分发。

X Window 系统说明了这一点。X Consortium 发布了 X11,其发布条款使其成为非著作权的自由软件,随后的开发人员大多遵循相同的做法。具有这些发布条款的副本是自由软件。但是,也存在非自由版本,并且存在(或者至少曾经存在)流行的工作站和 PC 图形板,其中非自由版本是唯一可以工作的版本。如果您正在使用此硬件,则 X11 对您来说不是自由软件。X11 的开发人员甚至在一段时间内使 X11 成为非自由软件;他们之所以能够做到这一点,是因为其他人在相同的非著作权许可证下贡献了他们的代码。

宽松许可的软件

宽松的许可包括 X11 许可证和两个 BSD 许可证。这些许可证允许几乎任何代码使用,包括在不更改源代码的情况下分发专有二进制文件。

GPL 许可的软件

GNU GPL(通用公共许可证)是一组特定的发布条款,用于为程序设置著作权。GNU 项目将其用作大多数 GNU 软件的发布条款。

因此,将自由软件等同于 GPL 许可的软件是错误的。

GNU 操作系统

GNU 操作系统是一个类似 Unix 的操作系统,它是完全的自由软件,自 1984 年以来,我们在 GNU 项目中一直在开发它。

类似 Unix 的操作系统由许多程序组成。GNU 系统包括所有官方 GNU 软件包。它还包括许多其他软件包,例如 X Window 系统和 TeX,它们不是 GNU 软件。

完整的 GNU 系统的首次测试版本是在 1996 年。这包括 GNU Hurd,我们的内核,自 1990 年以来一直在开发。2001 年,GNU 系统(包括 GNU Hurd)开始相当可靠地工作,但 Hurd 仍然缺少一些重要功能,因此它没有被广泛使用。同时,GNU/Linux 系统,GNU 操作系统的一个分支,它使用 Linux 作为内核而不是 GNU Hurd,自 90 年代以来取得了巨大的成功。正如这表明的那样,GNU 系统不是一组单一的静态程序;用户和分发者可以根据自己的需要和愿望选择不同的软件包。结果仍然是 GNU 系统的一个变体。

由于 GNU 的目的是自由的,因此 GNU 操作系统中的每个组件都是自由软件。但是,它们不一定要全部具有著作权;任何类型的自由软件在法律上都适合包含,只要它有助于实现技术目标。

GNU 程序

“GNU 程序”等同于 GNU 软件。如果程序 Foo 是 GNU 软件,那么它就是一个 GNU 程序。我们有时也说它是一个“GNU 软件包”。

GNU 软件

GNU 软件 是在 GNU 项目的主持下发布的软件。如果一个程序是 GNU 软件,我们也说它是一个 GNU 程序或一个 GNU 软件包。GNU 软件包的 README 文件或手册应该说明这一点。此外,自由软件目录 识别并列出了所有 GNU 软件包。

大多数 GNU 软件是 copylefted(著佐权) 的,但并非全部;然而,所有 GNU 软件都必须是 自由软件

一些 GNU 软件是由 自由软件基金会工作人员编写的,但大多数 GNU 软件来自许多志愿者。(其中一些志愿者由公司或大学支付薪水,但他们对我们来说是志愿者。)一些捐赠的软件的版权归自由软件基金会所有;一些版权归编写它的贡献者所有。

由 FSF 拥有版权的 GNU 软件

GNU 软件包的开发者可以将版权转让给 FSF,也可以保留。选择权在他们手中。

如果他们已将版权转让给 FSF,则该程序是 FSF 拥有版权的 GNU 软件,FSF 可以强制执行其许可证。如果他们保留了版权,则强制执行许可证是他们的责任。

作为一项规则,FSF 不接受非官方 GNU 软件包的软件版权转让。

非自由软件

非自由软件是任何不属于自由软件的软件。禁止使用、重新分发或修改它,或者需要您请求许可,或者限制过多,以至于您实际上无法自由地进行这些操作。

专有软件

专有软件是非自由软件的另一个名称。过去,我们将非自由软件细分为“半自由软件”,它可以被非商业性地修改和重新分发,以及“专有软件”,它不能被修改和重新分发。但我们已经放弃了这种区分,现在将“专有软件”作为非自由软件的同义词使用。

自由软件基金会遵循的规则是,我们不能在我们的计算机上安装任何专有程序,除非是为了编写该程序的自由替代品的特定目的而临时安装。除此之外,我们认为安装专有程序没有任何可能的借口。

例如,我们认为 20 世纪 80 年代在我们的计算机上安装 Unix 是合理的,因为我们正在使用它来编写 Unix 的自由替代品。如今,由于自由操作系统可用,这个借口不再适用;我们不使用任何非自由操作系统,并且我们安装的任何新计算机都必须运行完全自由的操作系统。

我们不坚持 GNU 的用户或 GNU 的贡献者必须遵守此规则。这是我们为自己制定的规则。但为了您的自由,我们希望您也能遵守它。

免费软件

“免费软件”一词没有明确的公认定义,但它通常用于允许重新分发但不允许修改的软件包(并且它们的源代码不可用)。这些软件包不是自由软件,因此请不要使用“免费软件”来指代自由软件。

共享软件

共享软件是允许人们重新分发副本的软件,但表示任何继续使用副本的人都必须支付许可费。

共享软件不是自由软件,甚至不是半自由软件。它不是自由软件有两个原因:

  • 对于大多数共享软件,源代码不可用;因此,您根本无法修改程序。
  • 共享软件不允许在不支付许可费的情况下复制和安装,即使对于从事非营利活动的个人也是如此。(在实践中,人们通常会无视分发条款并这样做,但条款不允许这样做。)

私有软件

私有或定制软件是为一个用户(通常是组织或公司)开发的软件。该用户保留并使用它,并且不会以源代码或二进制文件的形式向公众发布。

如果私有程序的唯一用户拥有四项自由,则私有程序是自由软件(在某种程度上是微不足道的意义上)。特别是,如果用户拥有对私有程序的完全权利,则该程序是自由的。但是,如果用户将副本分发给其他人,并且没有为这些副本提供四项自由,则这些副本不是自由软件。

自由软件是自由的问题,而不是访问的问题。一般来说,我们不认为开发一个程序而不发布它是错误的。在某些情况下,一个程序非常重要,以至于人们可能会认为向公众隐瞒它是在对人类做错事。然而,这种情况很少见。大多数程序都不那么重要,而拒绝发布它们并不是特别错误。因此,私有或定制软件的开发与自由软件运动的原则之间没有冲突。

几乎所有程序员的就业都在定制软件的开发中;因此,大多数编程工作都是以与自由软件运动兼容的方式完成的,或者可以这样完成。

商业软件

“商业”和“专有”不是同一回事!商业软件是企业作为其业务的一部分开发的软件。大多数商业软件都是 专有的,但也有商业自由软件,也有非商业的非自由软件。

例如,GNU Ada 由一家公司开发。它始终根据 GNU GPL 的条款分发,并且每个副本都是自由软件;但其开发人员销售支持合同。当他们的销售人员与潜在客户交谈时,有时客户会说:“我们使用商业编译器会感觉更安全。” 销售人员回答说:“GNU Ada 商业编译器;它恰好是自由软件。”

对于 GNU 项目来说,优先级顺序相反:重要的是 GNU Ada 是自由软件;它是商业软件只是一个细节。然而,GNU Ada 因其商业化而带来的额外开发绝对是有益的。

请帮助传播对商业自由软件是可能的认识。您可以通过努力不要在您指“专有”时说“商业”来做到这一点。