您的位置  > 互联网

你认为免费软件是自由软件,那么你肯定错了

来源|

安排|

也许你认为自由软件就是自由软件,那你肯定错了。 让我们听听专家如何描述自由软件。

自由软件定义

开源是一个不同的故事:它基于不同的价值观有非常不同的哲学。 实际的定义各不相同,但几乎所有开源程序实际上都是免费软件。

“自由软件”尊重其用户的自由并尊重整个社区。 粗略地说,如果一款软件是自由软件,则意味着用户可以自由地运行、复制、分发、研究、修改和改进该软件。 因此,“自由软件”讲的是自由,而不是价格,软件如何定价并不影响它是否被归类为自由软件。

在英语中,我们使用 Free。 因为Free这个词既意味着自由,又意味着自由。 “自由”中的“自由”是指“言论自由”中的自由,而不是“自由”的含义。 为了避免歧义,在使用英语时,我们也会使用法语或西班牙语的“Libre”来指代自由软件。

我们支持软件用户自由,因为我们坚信每个用户都应得的。 有了这些自由,软件用户(无论是个人还是集体)都可以控制他们运行的软件并决定这些程序如何为他们服务。 如果程序剥夺了用户的这种控制权,我们将其称为“非自由”或“专有”程序。 与自由软件相反,非自由软件控制其用户,而软件开发者控制软件。 这使得非自由软件成为不公正的帮凶。

四项基本自由

如果一个软件是自由软件,它必须为其用户提供以下四个基本自由:

自由度0:无论用户的目的是什么,软件都必须按照用户的意愿自由运行。

自由度1:用户可以自由学习和修改软件,帮助用户完成自己的计算。 作为先决条件,用户必须能够访问该软件的源代码。

自由 2:用户可以自由分发软件副本,以便帮助他人。

自由度3:用户可以自由分发软件的修改副本。 通过这种方式,用户可以与整个社区分享他们改进的软件,以便其他人可以从中受益。 作为先决条件,用户必须能够访问该软件的源代码。

只有当一个软件向其用户提供所有上述自由时,才可以称为自由软件。 否则就是不自由的。 尽管我们也可以比较非自由软件为其用户提供的自由度,但我们认为,无论如何,非自由软件本质上都是不道德的。

无论如何,只有当所有用户都使用满足这四个基本自由的代码时,该程序才能被视为自由软件。 例如,有两个程序。 当程序A运行时,程序B会自动被调用。 释放程序A意味着用户必须使用程序B,因此程序A和B都必须是自由的,程序A才能自由。 如果程序A被修改,使其不再依赖于程序B,那么程序A只能作为自由软件发布。

“自由软件”不等于“非商业软件”。 自由软件必须允许商业用户、商业开发和商业分发。 自由软件的商业开发早已司空见惯,这样的自由软件非常重要。 您可能需要付费才能购买免费软件的副本,或者您可以免费获得它。 但无论您如何获得副本,作为用户,您的四项自由都是得到保证的。 您可以自由运行、修改、分发甚至出售您获得的免费软件。

如果获得自由软件副本的用户遵守该自由软件的许可条款,则该自由软件必须向该用户提供自由软件的四项基本自由。 限制用户的自由或要求付费才能行使这些自由与不授予用户自由没有什么不同,因此此类程序不是自由软件。

有几点需要澄清

在本节的其余部分中,我们将进一步准确解释这些自由如何扩展到各种问题以使软件自由。

自由度0:无论用户的目的如何,软件必须按照用户的意愿自由运行。

“运行程序的自由”(自由 0)是指任何个人或组织可以出于任何目的在任何(受支持的)计算机系统上运行该程序,而无需通知该软件的开发者或任何其他个人或团体。 在这里,用户的目的是焦点,而不是开发人员的目的。 如果您是该程序的用户,您可以自由运行它。 同样,如果您将程序发布给其他人,那么该人就成为该软件的用户,并且可以出于自己的任何目的运行该软件。 但是,您作为软件的发布者,不能将您自己的目的强加给您的用户。

“自由运行程序”意味着任何人都不能禁止或阻止用户运行该程序。 这与程序的功能特性无关,与程序在特定环境中的可用性无关,也与程序对特定计算的有效性无关。

例如,如果代码任意拒绝某些有意义的输入——甚至无条件失败——这可能会让程序变得不太有用,甚至完全无用,但这并不妨碍用户运行程序的自由,所以,这并不与自由为零。 如果该程序是免费的,那么它的用户就可以克服这些徒劳,因为自由一和三允许用户和社区修改和发布改进的版本,而无需任意代码。

自由学习和更改程序源代码

自由度1和3(修改软件的自由;分发修改后的软件的自由)意味着用户必须有权访问程序的源代码。 因此,获得源代码是自由软件的必要条件。 ()之后的“源代码”并不是真正的源代码,不能算作这里讨论的源代码。

自由度1(运行程序的自由度)包括运行自己修改的程序来代替原始程序的自由。 如果程序在设备上运行,则该设备可以运行别人修改的软件,但不能运行你修改的软件——这种方法称为“锁定”或(用其发明者的术语)“安全启动”——自由度1会被认为是无法满足的。 设备中的程序也不会被视为自由软件,即使其源代码是免费的。

如果要修改一个程序,一个很重要的方法是使用其他程序中现成的函数或模块。 如果程序的许可证禁止您使用其他合理许可的软件中的代码修改该程序(例如,如果程序的许可证要求您仅使用您拥有版权的代码),则该程序的许可证将不被视为自由软件许可证。

可以出于多种目的对软件进行修改。 特定修改是好还是坏是一个非常主观的问题。 自由软件许可证不能对用户修改软件施加任何限制。 例如,它不能仅仅因为有人觉得更改不够好而禁止用户进行更改。

自由度2:用户可以自由分发软件的副本。

免费分发(自由2和3)是指您(即软件的用户)可以将软件的原始版本或修改版本重新分发给其他用户。 您可以免费发布或收费。 软件可以分发给任何地方的任何人。 所谓“自由”是指您不需要为这些行为(向其他用户发布软件的原始版本或修改版本;或自由度中提到的其他行为)提前获得任何人的许可或支付任何额外费用。 )。

用户可以自由运行程序或对程序进行修改。 如果您只是私下修改或运行该程序,您没有义务向任何人披露该行为。 如果您发布修改后的程序,您没有义务将修改通知指定的个人或组织。

自由度3允许用户自由分发软件的修改版本。 自由软件不一定要求修改版本继续使用自由软件许可证。 换句话说,自由软件许可证不一定是许可证。 但是,如果软件许可证要求修改后的软件必须作为非自由软件发布,则该许可证不被视为自由软件许可证。

“自由分发软件的副本”是指必须允许用户自由分发软件的原始版本或其自己的修改版本。 无论哪个版本,用户都可以选择发布程序的二进制或可执行文件,也可以发布程序的源代码。 (将程序作为可执行文件分发可以方便安装,这对于推广自由软件也至关重要。)对于某些程序,可能无法或没有必要分发二进制或可执行文件(某些编程语言实现可能不支持)例如,某些脚本语言),但用户必须有权以任何方式生成二进制文件或可执行文件,并分发这些生成的软件。