什么是自由软件?
“自由软件”尊重用户的自由,并且尊重整个社区。粗略来讲,一个软件如果是自由软件,这意味着用户可以自由地运行,拷贝,分发,学习,修改并改进该软件。因此,“自由软件”是关乎自由的问题,与价格无关。要理解这个概念,你要按照 Free Software 中的“Free”是指“自由言论(free speech)”中的自由,而非“免费午餐(free lunch)”的免费这一意项。为避免歧义,在使用英文时,我们也会借用法语或西班牙语的“Libre Software”来指自由软件,这样可以明确表示我们说得不是免费。
你可能花钱购买了自由软件的拷贝,也可能免费拿到。但是无论你如何获得你的拷贝,你都有自由复制和修改该软件,乃至 出售 该软件的拷贝。
我们支持软件用户的自由,因为我们坚信这是每个用户应得的。有了这些自由,软件用户,无论是个人还是集体,都可以掌控所运行的软件,并决定这些程序如何为自己服务。如果一个软件令用户失去了这种控制权,我们则称它为“非自由”的,或“专有”的程序。与自由软件相反,非自由软件会操控它的用户,而软件的开发者则掌控着软件。这使得非自由软件成为了非正义力量的帮凶。
“开源”是另外一回事:它有基于不同价值观的非常不同的哲学。其实际定义也不同,但是几乎所有的开源程序事实上都是自由软件。我们在为什么“开源”错失了自由软件的重点一文中阐述了这些不同。
自由软件的定义
四项基本自由
如果一个软件是自由软件,那么它必须为用户提供以下四项基本自由:
- 自由度0:无论用户出于何种目的,必须可以按照用户意愿,自由地运行该软件。
- 自由度1:用户可以自由地学习并修改该软件,以此来帮助用户完成用户自己的计算。作为前提,用户必须可以访问到该软件的源代码。
- 自由度2:用户可以自由地分发该软件的拷贝,这样就可以助人。
- 自由度3:用户可以自由地分发该软件修改后的拷贝。借此,用户可以把改进后的软件分享给整个社区令他人也从中受益。作为前提,用户必须可以访问到该软件的源代码。
一个软件只有提供了以上所有的自由给它的用户,才可以被成为自由软件。否则,它就是非自由的。尽管我们也可以比较非自由软件为其用户提供的自由度,但是我们认为,无论如何,非自由软件本身是不道德的。
无论在哪种情况下,只有所有用户使用的代码都满足了这四项基本自由,该程序才能被视作自由软件。例如,有两个程序,甲程序运行的时候会自动调用乙程序。发布甲程序意味着用户必须使用到乙程序,那么必须甲乙两个程序都是自由的,甲程序才是自由的。如果通过修改甲程序,使其不再依赖乙程序,那么仅仅以自由软件的形式发布甲程序即可。
自由软件 可以 是商业软件
“自由软件” 不表示 “非商业化”。与之相反,自由软件必须可以商用、可以商业开发、可以商业发布。这个政策非常重要—缺乏这样的政策,自由软件将无法实现自己的目标。
我们要邀请所有人使用 GNU 系统,包括商业机构及其员工。这就需要允许商用。我们期待许多程序的自由替代将来可以替换掉相应的专有程序,但是如果禁止商用就无法做到这些。我们期待商业产品包含有 GNU 系统的软件,并且成为商业发布定价的一部分。自由软件的商业开发不再那么不寻常;这些自由的商业软件非常重要。付费的、专业的自由软件技术支持填补了重要的需求空白。
因此,把商业使用、商业开发或商业发布排除在外会羁绊自由软件社区并阻碍其走向成功之路。我们一定要明确使用带有这种限制的许可证发布的软件不是自由软件。
假如获得自由软件拷贝的(潜在)用户遵守了先前发布的自由软件的许可证条款,那么该自由软件必须为获得软件的该(潜在)用户提供自由软件的四项基本自由。在自由方面对用户加以限制或者要求付费才能实践这些自由和不赋予用户自由没有什么两样,因此这样的程序不是自由软件。
form-什么是自由软件
什么是Copyleft?
Copyleft是一种让程序或其它作品保持自由(是言论自由的自由,而不是“零价格”)的通用方法,并要求对Copyleft程序的任何修改和扩展都保持自由。
让程序成为自由软件最简单的方法是放弃对它的版权并把它放到公有领域中。这使得他人在需要的时候可以共享这个软件及其对它的改进。但这也使得其它一些不愿合作的人把它们转变成专有软件。他们可以或多或少的进行修改,并把成果作为商业产品发布。这些修改过的程序不再像它们的原始作者所期望的那样允许用户自由的使用,这种自由被中间商剥夺了。
在GNU工程中,我们的目标是让所有的用户可以自由地重新发布或修改GNU软件。如果允许中间商剥夺这种自由,也许会以此“获得很多的用户”,但这些用户便不再拥有自由。所以我们并不把GNU软件发布到公有领域,我们对它保留“Copyleft”。**所谓Copyleft是指任何人都可以重新分发软件,不管有没有进行修改,但必须同时保留软件所具有的自由特性。**Copyleft是为了保证所有用户都拥有自由。
一个程序遵循Copyleft,我们首先声明它是有版权的;然后,我们给它加上发布条款,这个条款就是一个法律声明,它赋予所有人有使用、修改和重新发布程序的代码及其衍生作品的权利,但要求在这个过程中保持发布规则不变。这样的话,代码和自由权利在法律上就不可分割了。
商业软件开发人员通过版权剥夺了用户的自由,我们使用版权来给予他它自由。这就是为什么我们把“版权(Copyright)”改称为“Copyleft”。
Copyleft 是一种对程序进行版权保护的方法。它并不是放弃版权,实际上,这样会使 Copyleft 变得不可操作。“Copyleft”中的“left”并不使用它在英语中“离开”的意思,而是指它(left,左)与通常的“版权(Copyright)”中的“right(右)”具有镜像的关系。
from-什么是Copyleft?
如何为自己的项目选择一份许可证?参照:
开源软件&自由软件
开源软件和自由软件这两个词在很大程度上描述的是同一类软件,但是它们所基于的价值观却有着本质上的区别。**对于自由软件运动而言,自由软件是一个道德底线,是对用户自由的基本尊重。开源软件则与此不同,开源哲学考虑的是怎么做把软件做得“更好”—仅仅从实用的角度。**开源的哲学里,非自由软件之所以不好,是因为他们采用了一种劣等的开发方式。
然而,对自由软件运动来说,非自由软件是一个社会问题,其解决方法是停止使用非自由软件并开始使用自由软件。
“自由软件”,“开源软件”,既然都指的是同类软件(或基本是同类软件),那何必在名字上这么较真呢?有这个必要的。因为不同的词汇传递着不同的思维。尽管现在看来,用另一个名字称呼自由软件可以给你同等的自由,但若要长期维护用户的自由,则必须让人们意识到自由的价值。倘若你想帮助人们做到这点,那么使用“自由软件”这一称呼则尤为重要。
作为自由软件运动的成员,我们并不将开源阵营视为敌人。我们的敌人是专有(非自由)软件。但我们希望人们至少应该知道,我们所捍卫的是用户的自由。所以我们不愿被开源支持者们贴错标签。我们倡导的并不是 “开源”,我们反对的也不是 “闭源”。为了清楚起见,我们要避免使用这些词汇。
开源的支持者们把一个个用户拉入他们的阵营,而提醒用户维护自由的任务,则落到了我们自由软件支持者们的肩膀上。我们要敢于用比以往更大的声音说“这是自由软件,它才是真正尊重你的自由的软件!”—每当你把“开源软件”一词替换成“自由软件”的时候,你就是在支持我们的理念。
from-为什么开源错失了自由软件的重点