应用自由软件标准

四个基本自由为一段特定的代码是否自由/自由(即尊重用户的自由)。我们应该如何应用它们来判断软件包、操作系统、电脑或网页是否适合推荐?

一个程序是否免费首先影响我们关于私人活动:为了维护我们的自由,我们需要拒绝会带走它的程序。然而,它也影响我们应该对别人说,和别人做。

非免费项目是不公平的。要分发非免费程序,向其他人推荐一个非免费的程序,或者更普遍地说引导他们学习使用非免费软件的课程,意味着导致他们放弃自由。当然,引导人们使用非自由软件与在中安装非自由软件不同他们的电脑,但我们不应该把人们带向错误的方向。

在更深层次上,我们不能将非自由程序作为解决方案因为这将赋予它合法性。非自由软件是问题;将其呈现为解决方案否认问题的存在.

本文解释了我们如何将基本的自由软件标准应用于判断各种事物,以便我们决定是否推荐他们或不。

软件包

要使软件包是免费的,其中的所有代码都必须是免费的。但不仅仅是代码。由于文档文件包括手册,自述文件、更改日志等是软件包,他们一定是也免费.

软件包通常与许多其他包一起使用,并与其中一些人互动。与哪些类型的交互非免费项目在道德上可以接受吗?

我们开发GNU是为了有一个免费的操作系统,因为1983年根本不存在。当我们开发初始组件时在20世纪80年代,GNU的每个组件都不可避免地依赖于在非自由软件上。例如,没有在GCC工作之前,C编译器是非自由的,没有GCC就无法运行在glibc工作之前一直使用Unix libc。每个组件只能运行在非自由系统上,因为所有系统都是非自由的。

在我们发布了一个可以在一些非自由系统上运行的组件之后,用户将其移植到其他非免费系统;那些港口也不坏,从道德上讲,我们需要开发这些特定于平台的代码组件,所以我们合并了它们的补丁。

当内核Linux于1992年被释放时,它填补了GNU系统。(最初,在1991年,Linux在非免费许可证。)GNU和Linux的结合使自由操作系统-GNU/Linux.

那时,我们本可以删除对nonfree的支持平台,但我们决定不这样做。非自由系统是不公平的,但用户运行一个不是我们的错。支持上的免费程序这种制度不会加剧不公正。而且它很有用,不是不仅适用于这些系统的用户,也适用于吸引更多的人为开发免费程序做出贡献。

然而,在自由程序之上运行的非自由程序是完全不同的问题,因为它会导致用户离开远离自由。在某些情况下,我们不允许这样做:例如,GCC禁止非免费插件。当程序允许非免费插件时至少不应该引导人们使用它们。例如,我们选择LibreOffice而不是OpenOffice,因为OpenOffice建议使用非免费插件,而LibreOffice则避开它们。我们开发了冰猫最初为避免推荐Firefox建议的非免费插件。

实际上,如果IceCat包解释了如何在MacOS,这不会导致人们运行MacOS。但如果它谈到一些非免费的附加组件,鼓励IceCat用户安装因此,IceCat包,包括手册和web网站,不应该谈论这样的事情。

有时一个自由程序和一个非自由程序可以互操作,但两者都不是基于另一个。我们对此类情况的规则是,如果非免费程序是众所周知的,我们应该告诉人们如何使用我们的免费程序;但如果专有程序模糊不清,我们不应该暗示它的存在。有时我们支持与非自由程序的互操作(如果已安装),但避免告诉用户这样做的可能性。

我们拒绝只在非免费系统上工作的“增强功能”。这将鼓励人们使用非免费系统而不是GNU,自己得分。

GNU/Linux发行版

1992年Linux解放后,人们开始开发GNU/Linux发行版(“发行版”)。只有几个发行版完全免费的软件.

软件包的规则也适用于发行版:道德规范发行版必须只包含自由软件并引导用户免费软件。但是对于发行版来说意味着什么“包含”特定的软件包?

一些发行版从属于发行版;其他人从上游来源构建每个程序,以及照字面意思包含只有食谱可以下载和构建。对于自由的问题,发行版如何安装给定的包不是显著;如果它将该包作为选项提供,或其网站是的,我们说它“包含”那个包。

免费系统的用户可以控制它,因此他们可以安装他们想干什么就干什么。免费发行版提供一般设施哪些用户可以安装自己的程序及其修改后的版本免费程序;他们还可以安装非免费程序。提供这些通用设施并不是发行版中的道德缺陷,因为发行版的开发人员对用户获得的内容和自行安装。

开发人员负责非自由软件的安装当他们引导用户使用非免费程序时例如,通过将其放入发行版的包列表中,或从他们的服务器分发它,或将其作为解决方案呈现而不是一个问题。这是大多数GNU/Linux发行版有道德缺陷。

自行安装软件包的人有一定的水平复杂度:如果我们告诉他们“Baby包含非自由代码,但巴比是自由的,“我们可以期待他们小心记住哪一个是哪一个。但发行版推荐给那些会忘记这些细节。他们会想,“你叫什么名字他们说我应该用?我想是宝贝。”

因此,为了向公众推荐发行版,我们坚持它的名称与我们拒绝的发行版不相似,所以我们的消息只有推荐的免费发行版才能可靠传输。

发行版和软件包之间的另一个区别是如何很可能是为了添加非自由代码。开发人员程序仔细检查他们添加的代码。如果他们决定如果程序是免费的,他们不太可能添加非免费代码。也有例外,包括非常有害的添加到Linux中的“二进制blob”,但它们是现有免费程序的一小部分。

相比之下,GNU/Linux发行版通常包含数千个包,发行版的开发人员可能会添加数百个包年。不小心避免包含非免费软件,一些肯定会悄悄进入。由于免费发行版数量很少,我们要求每个免费发行版的开发人员制作一个承诺通过删除任何非免费软件来保持发行版免费软件代码或恶意软件,作为列出该发行版的条件。请参阅无GNU系统分发指南.

我们不要求对自由软件包做出这样的承诺:事实并非如此可行,幸运的是没有必要。30000个免费程序的开发者可以避免一些问题,以FSF员工的大量工作为代价;此外,大多数开发人员与GNU项目没有关系可能没有兴趣给我们任何承诺。所以我们要处理当我们发现从免费变为非免费的罕见案例时关于他们。

外围设备

计算机外围设备需要计算机中的软件驱动程序,可能是系统要加载到外围设备使其运行。因此,可以使用外围设备并建议是否可以在没有非免费的计算机上使用安装的软件-外围设备的驱动程序,以及系统需要加载到其中,是免费的。

检查这个很简单:将外围设备连接到计算机运行一个完全免费的GNU/Linux发行版,看看它是否有效。但大多数用户想知道之前他们买了外围设备,所以我们列出了许多外围设备的信息在里面h-node.org网站,一个硬件用于完全免费操作系统的数据库。

计算机

计算机包含各种级别的软件。根据什么标准我们应该证明计算机“尊重你的自由”吗?

显然,操作系统及其上面的一切都必须是免费的。在90年代,启动软件(当时是BIOS)变得可替换因为它是在CPU上运行的,所以这与操作系统。因此,固件和驱动程序等程序安装在系统中或与系统一起使用,或者启动软件必须是免费的。

如果计算机的硬件功能需要非免费驱动程序或固件与系统一起安装,我们可能会认可它。如果如果没有这些功能,它是可用的,如果我们认为大多数人不会这样做被引导安装非免费软件使其发挥作用,然后我们可以支持它。否则,我们不能。这将是一个判断。

计算机可以在较低级别。它也可以在真正的只读内存中包含代码。我们决定在今天的认证标准中忽略这些程序,因为在其他情况下没有计算机可以遵守,并且因为固件在道德上,“通常不改变”等同于电路。所以我们的认证标准仅涵盖计算机上运行的代码主处理器,不在真正的只读内存中。何时免费软件可以用于其他级别的处理,我们将也需要这些级别的自由软件。

由于认证产品是对产品的积极推广,我们坚持作为回报,卖家通过谈话支持我们关于自由的软件相当地打开来源以及GNU和Linux的结合作为“GNU/Linux”.我们没有义务积极推广不认可的项目我们的工作和支持我们的运动。

请参见我们的认证标准.

Web页

如今,许多网页包含复杂的JavaScript程序,而不会在没有他们的情况下工作。这是一种有害的做法,因为它妨碍了用户的控制他们的计算。此外,这些程序大多是不自由,不公正。JavaScript代码经常监视用户。JavaScript已经演变为对用户自由的攻击。

为了解决这个问题,我们开发了LibreJS公司,Firefox的一个附加组件阻止非平凡的非自由JavaScript代码。(无需阻塞实现次要用户界面攻击的简单脚本。)我们问网站请释放其JavaScript程序并标记其许可证让LibreJS认可。

同时,链接到包含非免费内容的网页是否合乎道德JavaScript程序?如果我们完全不屈,我们只会联系释放JavaScript代码。然而,许多页面即使在JavaScript代码未运行。此外,您将经常遇到非免费除了遵循我们的链接之外,还可以通过其他方式使用JavaScript;为了避免它,必须使用LibreJS或禁用JavaScript。所以我们决定去前进并链接到不使用非免费JavaScript的页面,同时敦促用户保护自己免受非自由JavaScript的攻击。

然而,如果一个页面不运行非免费的不可否认,链接到它的JavaScript代码要求人们运行非自由代码。原则上,我们不链接到此类页面。

结论

运用基本理念软件应该是免费的不同的情况导致不同的实际政策。作为新的出现情况时,GNU项目和自由软件基金会将调整我们的自由标准,以引导计算机用户实践和原则上的自由。仅通过推荐自由检测程序、发行版和硬件产品,以及陈述你的政策,你可以免费提供急需的支持软件运动。