GNU計劃的自由軟體之標誌。
自由軟體心智圖

自由軟體(英語:free software),根據自由軟體基金會对其的定義,是一类可以不受限制地自由使用、複製、研究、修改和分發的,尊重使用者自由的軟體。這方面的不受限制正是自由軟體最重要的本質,與自由軟體相對的是专有软件(英語:proprietary software,一些人也会将其翻译为私有軟體、封閉軟體),后者的定義與是否收取費用無關,事实上,自由軟體不一定是免費軟體,同时自由软件本身也并不抵制商业化。自由軟體受到選定的「自由軟體授權協議」保護而發佈(或是放置在公有領域),其發布以原始碼為主,二進制檔案可有可無。[1]

用戶

自由软件对全世界的商业发展特別是硬件有巨大的贡献,多數嵌入式设备系统厂商鉴于自身无需支付授權費用和实用性方面的原因考虑也会在自由软件的基础上开发操作系统。世界上绝大多數操作系统多少都会包含有自由軟件组件(例如BSDTCP/IP协议栈广泛被包括MacOSWindows在内的专有商业操作系统使用)。隨著越來越多的自由軟體支援 Microsoft Windows 平台,還有得益於 Android 平台的普及,目前有上億[2]的用戶在日常生活或工作中使用自由軟體。

自由軟件直接使用者往往是计算机方面的专业人士,或者有能力理解和改變原始碼的人。隨着Ubuntu[3][與來源不符]Manjaro[4][5][與來源不符] 等对普通用户更友好的 GNU/Linux 操作系统的普及,普通用户也能在缺少相关知识的情况下开箱即用

自由软件许可证

大多数自由软件都使用类似的自由软件许可证,使用最多的自由软件许可如下[6][7]

  • The MIT License
  • The GNU General Public License v2
  • The Apache License
  • The GNU General Public License v3
  • The BSD License
  • The GNU Lesser General Public License
  • The Mozilla Public License (MPL)
  • The

    自由軟體的英文為「free software」。在英文里「free」一詞有「自由」、「免費」的雙重含意,对于如何区分自由軟體(拉丁語libre)和免費軟體(拉丁語gratis),自由軟體運動社区的創始人——理查德·斯托曼做出了以下的定義:“自由軟體的重點在於自由權,而非價格。要了解其所代表的概念,你應該將「free」想成是「言論自由」一词中的含义,而不是「免費啤酒」一词中的含义。”[8]自由軟體代表用户可以自由地运行、拷贝、分发、学习、修改并改进该软件。[9]自由软件的定义可以追溯至GNU宣言

    大部分自由軟體都在互聯網上自由發佈,往往不收取任何費用。一些或是以離線實體的方式發行,有時會酌情收取的費用(例如:工本費和運輸費),而人們可用任何價格來販售這些軟體。所以,自由軟體也可以是商業軟體:因為自由软件许可证并不限制販賣軟體[10][11]或者提供商业服务[12],这些并没有違反例如GPL等自由軟體许可证[13]。因此,“自由软件”是关乎自由的问题,与价格无关,软件如何定价并不影响它是否被归类为自由软件。[10]

    自由軟體的定義

    自由軟體基金會(FSF)對自由軟體的定義首次於1989年發表。[14]這份定義後來被布魯斯·裴倫斯(Bruce Perens)改寫為《Debian自由软件指导方针[15][與來源不符][16][與來源不符]

    根據斯托曼和自由軟體基金會(FSF)的定義,自由软件赋予使用者四种自由:[17]

    • 自由之零:不论目的为何,有使用该软件的自由。
    • 自由之一:有研究该软件如何运作的自由,并且得以修改该软件来符合使用者自身的需求。取得该软件之源码为达成此目的之前提。
    • 自由之二:有重新散布该软件的自由,所以每个人都可以藉由散布自由软件来敦亲睦邻。
    • 自由之三:有改善再利用该软件的自由,并且可以发表修訂後的版本供公众使用,如此一来,整个社群都可以受惠。如前项,取得该软件之源码为达成此目的之前提。

    如果一软件的使用者具有上述四种权利,则该软件得以被称之为「自由软件」。也就是说,使用者必须能够自由地、以不收费或是收取合理的散布费用的方式、在任何时间再散布该软件的原版或是改写版,在任何地方给任何人使用。如果使用者不必问任何人或是支付任何的许可费用从事这些行为,就表示其拥有自由软件所赋予的自由权利。

    自由軟體不是沒有版权

    大部分的自由軟體可以无需费用自由获取,並且它的原始碼可以自由修改並散佈,但它並不是沒有版权。版权是當某項作品完成時就自然產生了,不需申請或註冊,在自由軟體的場合,仍然經常要求署名或維持相同授權。以本文為例,本文在寫作的同時,作者即擁有版权,任何人皆無法剝奪。而當使用者花錢購買某套軟體時,所購買的只是“使用權”,使用者必須接受該軟體的软件许可证才能使用這個軟體;而軟體的原作者則仍然保有其“版权”。[18][與來源不符]

    自由軟體不使用封閉格式

    封閉軟體通常會使用專屬的封閉格式,并且不允许使用者分发,這極大地限制了使用者的自由。而自由軟體則完全不同,由於自由軟體的原始碼是公開的,所以它所使用的任何格式都是透明的。自由軟體永遠不會只发布專屬的封閉格式软件來限制使用者修改的自由。[來源請求]

    自由軟體的精神領袖

    自由軟體的精神領袖是理查德·马修·斯托曼。他被人稱為「最後的真正黑客」,他認為一個好的軟體,应该自由自在地讓人取用。軟體不應該拿來做為相互傾軋、剝削的工具。所以他起草GNU通用公共许可证來保障自由軟體的自由,並創辦了自由軟體基金會來貫徹他的理念。领袖们有时被称作终身仁慈独裁者[來源請求]

    自由软件与开源软件

    最早的開放源代碼定義是在1998年創建,來自Debian自由软件指导方针。虽然大多數的開放原始碼軟體同時也是自由軟體,但是,GNU项目认为“开源”这个词并没有抓住自由软件的真正涵义,容易让人过于着重軟件的质量、流行与成功而忽视或抛弃自由软件精神的道德观和社会价值,力主自由软件是一个道德底线。[19]

    FreeBSDOpenBSD以及NetBSD的社群人员往往認為「Copyleft」是一種對自由的過度限制,是一種自由的侵害,因此他们倾向于使用较为宽松的BSDMIT类似的协议,然而这类协议因为缺少相关的说明并不能避免其成果被专利流氓利用。[20]一些公司/群体为了避免专利流氓的侵害而且也不想使用例如GPLv3MPL2.0等Copyleft协议的情况下会选择使用Apache2.0协议

    对于BSDMIT这类较为宽松的自由软件协议,GNU项目认为这是对专有软件的松懈(英語:lax)和宽容式(英語:permissive[21][22],因为这些协议不能避免其衍生作品成为限制用户自由的专有软件,一旦你允許他們這麼做,那麼你就無法捍衛其他人的自由了。[23][22][與來源不符],例如FreeBSD在PlayStation 4系统软件的使用以及BSD的TCP/IP协议栈在专有软件的使用等。

    形式上的差異

    开源软件與自由軟體是兩個不同的概念,只要符合开源软件定义的软件就能被称为开源软件。而自由软件有比開源软件更严格的概念,因此所有自由软件都是开放源代码的,但不是所有的開源软件都能被称为「自由」。但一般,绝大多数开源软件也都符合自由软件的定义。

    兩者內涵的差異

    1. 開放原始碼作用是,使用开放的开发方式,儘可能的使軟件最佳化,而自由軟件則將尊重用户自由作為道德標準。
    2. 如果說「自由軟體」會引起誤解,(因為英文「Free」一詞有「自由」、「免費」的雙重含意),那麼「開放原始碼」的名字则會引起的誤解則更多。“开源”很容易讓人认为是只要把原始碼「公開」出來就算是开源了,即“你可以看到源代码”。但是如果使用者的自由仍然得不到尊重,那麼即使公開原始碼也沒有意義。有的軟體公司只是為了想找使用者幫它除错、吸收社區貢獻的功能,這樣子會破壞了自由軟體的原意。一个例子是Tivo公司生产的机顶盒。虽然它基于GNU/Linux,TiVo公司也按照许可证发布了源代码,但是却禁止用户在机顶盒上运行自己的程序,或重新安装系统。[19]
    3. 自由軟體的原意就是要給予使用者運用軟體的自由,這個『自由』就是自由軟體的精神所在。但是一些商業化開放的原始碼卻故意忽略了這個最重要的精神,反而無法讓使用者體認到『自由』的真意,那麼开源這一個替代自由軟體的辭句反而把自由的原意除去了。

    自由軟體的精神領袖理查德·马修·斯托曼很反對人們把開放原始碼和自由軟體混為一談。[24]

    自由软件与免费软件

    自由及开放源代码软件列表

    免費軟體(英語:freeware)是一種不須付費就可取得的軟體,但是通常有其他的限制,使用者並沒有使用、複製、研究、修改和分發的自由。該軟體的原始碼不一定會公開,有些免费软件即使所谓开源但是因为有會限制用户软件自由如限制用户修改重分发或者限定/限制特定人群使用等行为的限制性条款存在并不是自由软件。

    Tivo化

    Tivo化英语Tivoization 是一种限制软件自由的行为,即通过检测可执行文件签名,禁止用户安装或运行修改后的可执行文件,这种行为被 Richard Stallman 称为“专制暴君”(英語:tyrants)[19]。这个名字源自于Tivo公司在其数字视频录像机的产品中使用了GNULinux内核的源码但是其从设计上限制了用户的软件自由,用户不能在其产品上自由运行和使用修改后的系统。因此自由软件基金会出版了GPLv3,GNU项目软件的授权协议也随之升级,然而因为各种因素很多Linux内核开发者对升级表示反对。

    数字限制管理

    数字限制管理(英語:Digital Restrictions Management)或数字限制机制(英語:Digital Restrictions Mechanisms)是自由软件社群对数字版权管理的一种讽刺性说法,因为这种行为限制了用户的软件自由权利。[25][與來源不符]自由软件基金会针对此种从设计上就限制用户软件自由的行为发起了Defective By Design[26]运动。[原創研究?]

    JavaScript陷阱

    JavaScript陷阱(英語:The JavaScript Trap)指用户在浏览器中使用专有软件却毫不知情的现象,RMS在GNU项目网站上给出了具体的定义[27]

    为了解决这个问题,GNU项目创造了提供探测并拦截用户访问的网页上非自由、非平凡的JavaScript功能的GNU LibreJS英语GNU LibreJS给重视软件自由的用户使用。[27]一些自由软件社群,为了解决此类问题也作出了一些努力,例如由自由软件基金会支持的LibrePlanet英语LibrePlanet为此专门成立了行动小组[28]

    參見