GNU - 什么是自由的软件

定义

自由的软件的定义四要素:

  • 以任何意愿,目的运行软件的自由
  • 学习软件运行原理的自由,并且能按自主意愿修改(前提还需要能自由访问源代码)
  • 将软件的副本再次分发给其他人的自由
  • 将修改后的软件的副本分发给其他人的自由

一个软件只有具备了上述四点才是自由的软件。

不过,自由的软件不表示不能商用,相反,GNU 鼓励并且认为商用是自由软件社区成功的重要途径。自由的软件必须能够在商业上使用,开发,以及分发。

自由与非自由的边界

以任何意愿运行软件的自由

任何个人或组织可以在任意计算机系统上,出于任意目的运行软件,而不需要事先和开发者或者其他组织联系。同时,你也可以将软件再分发给其他用户,其他用户也能自由的以他们自己的意愿去运行软件而不受你的约束。

学习软件源代码并修改的自由

自由的获取软件的源代码是能够自由修改软件和再分发的前提,不过,经过代码混淆工具处理过的代码不算是源代码。

同时,如果对修改软件有限制,那么该软件也不算是自由的软件,例如:

  • 某软件引用了修改后的软件 A,但不允许将其替换为你自己修改的版本
  • 要求你成为所修改的代码的版权拥有者
  • 只能做出其他人认为是改进的修改

软件再分发的自由

你可以自由的再分发未修改或修改后的软件副本给任何人,即使是收费。同时,你也可以自由的修改软件然后私用,而不需要让其他任何人知道;如果你将修改后的软件再分发,也不需要以任何形式知会任何人。

自由再分发的软件副本必须包含可执行文件,以及修改和未修改的源代码。不过有些软件可能(暂时)无法生成可执行的文件,但是依然要保留能够再分发可执行文件的自由。

Copyleft

版权的单词是 copyrightcopyleft 与之对应。它要求所修改和扩展的软件都必须依然保留自由软件的四要素(而不仅仅是免费),GNU 自己的项目就使用符合 copyleft 的许可证来保证软件的自由。不过,这里并不是说所有自由的软件都必须用 copyleft 许可证,不然也违背了自由一词。

软件分发的约束

只要不限制分发修改后的软件的自由,不限制私用修改后的软件,对软件分发做一定程度的约束是可接受的。例如,要求给修改后的软件换个名字,删除原有软件的 logo,或者声明修改为你所有。

出口规定

有时候政府的出口管制会限制你在国际上分发软件的自由。虽然身为开发人员无法对抗这些规定,但是你可以做也必须做的是,不添加这些法律条文作为软件的使用条件。

合规考虑

如果软件的用户没有做任何不合规的事,那么软件的开发人员不能随意的撤销软件的许可证,或添加使用限制,否则这就不是自由的软件。

基于合约的许可证

有些基于合约的许可证会引入较多的使用限制,从而可能违背自由软件的四要素,因此这类许可证不被认为是自由的许可证。例如某些免费的软件许可证会规定允许被安装的设备的数量,以及限制分享给他人使用。

软件之外

软件的使用手册也必须是自由的,因为手册也是软件的一部分。再扩展一步,自由不仅仅是用在软件上,任何能够以数字形式呈现的产物都可以是自由的。

参考