可能你認為免費軟件,就是自由軟件,那么你肯定錯了,下面來聽聽專家怎么描述自由軟件的。
strongerHuang
1
自由軟件定義 開源(Open source)是另外一回事:它有基于不同價值觀的非常不同的哲學。其實際定義也不同,但是幾乎所有的開源程序事實上都是自由軟件。
“自由軟件”尊重用戶的自由,并且尊重整個社區(qū)。粗略來講,一個軟件如果是自由軟件,這意味著用戶可以自由地運行、拷貝、分發(fā)、學習、修改并改進該軟件。因此,“自由軟件”是關乎自由的問題,與價格無關,軟件如何定價并不影響它是否被歸類為自由軟件。 英文中,我們使用Free Software。由于Free一詞既有自由,也有免費的意思。而Free Software中的Free是指“自由言論”中的自由,而非“免費”這一意項。為避免歧義,在使用英文時,我們也會借用法語或西班牙語的“Libre Software”來指自由軟件。 我們支持軟件用戶的自由,因為我們堅信這是每個用戶應得的。有了這些自由,軟件用戶,無論是個人還是集體,都可以掌控所運行的軟件,并決定這些程序如何為自己服務。如果一個軟件令用戶失去了這種控制權,我們則稱它為“非自由”的,或“專有”的程序。與自由軟件相反,非自由軟件會操控它的用戶,而軟件的開發(fā)者則掌控著軟件。這使得非自由軟件成為了非正義力量的幫兇。
strongerHuang
2
四項基本自由
如果一個軟件是自由軟件,那么它必須為用戶提供以下四項基本自由:自由度0:無論用戶出于何種目的,必須可以按照用戶意愿,自由地運行該軟件。 自由度1:用戶可以自由地學習并修改該軟件,以此來幫助用戶完成用戶自己的計算。作為前提,用戶必須可以訪問到該軟件的源代碼。 自由度2:用戶可以自由地分發(fā)該軟件的拷貝,這樣就可以助人。 自由度3:用戶可以自由地分發(fā)該軟件修改后的拷貝。借此,用戶可以把改進后的軟件分享給整個社區(qū)令他人也從中受益。作為前提,用戶必須可以訪問到該軟件的源代碼。 一個軟件只有提供了以上所有的自由給它的用戶,才可以被成為自由軟件。
否則,它就是非自由的。盡管我們也可以比較非自由軟件為其用戶提供的自由度,但是我們認為,無論如何,非自由軟件本身是不道德的。 無論在哪種情況下,只有所有用戶使用的代碼都滿足了這四項基本自由,該程序才能被視作自由軟件。例如,有兩個程序,甲程序運行的時候會自動調(diào)用乙程序。發(fā)布甲程序意味著用戶必須使用到乙程序,那么必須甲乙兩個程序都是自由的,甲程序才是自由的。如果通過修改甲程序,使其不再依賴乙程序,那么僅僅以自由軟件的形式發(fā)布甲程序即可。 “自由軟件”不等于“非商業(yè)軟件”。一個自由軟件必須允許商業(yè)用戶、商業(yè)開發(fā)和商業(yè)發(fā)布。商業(yè)開發(fā)自由軟件早就司空見慣了,這樣的自由軟件非常重要。
你可能需要花錢購買自由軟件的拷貝,也可能免費拿到。但是無論你如何獲得你的拷貝,作為用戶,你的四大自由都會被保證,你可以自由地運行,修改,發(fā)布甚至出售你拿到的自由軟件。 假如獲得自由軟件拷貝的用戶遵守了自由軟件的許可證條款,那么該自由軟件必須為用戶提供自由軟件的四項基本自由。在自由方面對用戶加以限制或者要求付費才能實踐這些自由和不賦予用戶自由沒有什么兩樣,因此這樣的程序不是自由軟件。
strongerHuang
3
澄清幾點 在本節(jié)的以下部分,我們會進一步準確地解釋這些自由針對各種問題會如何擴展才能使軟件自由。 自由度0:無論用戶出于何種目的,必須可以按照用戶意愿自由地運行該軟件?!白杂傻剡\行程序”(自由度0)意味著任何人或組織可以在任何(支持的)計算機系統(tǒng)上,出于任何目的去運行該程序,并且沒有義務通知軟件的開發(fā)者或任何個人或團體。此處,用戶的目的是重點,而非開發(fā)者的目的。如果你是該程序的用戶,那么你就可以自由地運行該程序。同理,如果你把程序發(fā)布給別人,那么此人也成了軟件的用戶,他也可以出于自己的任何目的運行該軟件。然而,你作為軟件的發(fā)布者,不可將自己的目的強加于你的用戶。
“自由地運行程序”意味著沒有人可以禁止或阻止用戶運行該程序。這和該程序的功能特性沒有關系,既不考慮該程序在特定環(huán)境下的可用性,也不考慮該程序?qū)μ囟ㄓ嬎愕挠行浴? 例如,如果代碼隨意地拒絕某些有意義的輸入——或者甚至無條件地失效——這就可能使該程序不那么有用,甚至可能完全無用,但是這并不妨礙用戶運行該程序的自由,因此,這和自由之零并無矛盾。如果該程序是自由的,那么其用戶可以克服這些無用之處,因為自由之一和自由之三允許用戶和社區(qū)修改和發(fā)表不帶有隨意代碼的改進版本。 學習和更改程序源代碼的自由自由度1和3(自由地修改軟件;自由地發(fā)布修改后的軟件)意味著用戶必須有權訪問程序的源代碼。
由此,訪問源代碼是成為自由軟件的必要條件?;炀帲∣bfuscated)后的“源代碼”不是真正的源代碼,不能被算作此處討論的源代碼。 自由度1(自由地運行程序)包括自由地運行自己修改后的程序以替代原版程序。如果程序是跑在某種設備上,該設備可以運行別人修改的軟件但不運行你修改的軟件—這個方法叫做“tivoization”或者 “鎖死”,或者(用其發(fā)明者的術語)叫做“安全啟動”—自由度1將被視為無法滿足。該設備中的程序也將不被視為自由軟件,即使它們的源代碼是自由的。 倘若要修改某個程序,一種很重要的方法就是從別的程序中拿來現(xiàn)成的函數(shù),或模塊來使用。如果某個程序的許可證中禁止你使用其他合理授權的軟件的代碼來修改該程序—比如,如果某個程序的許可證要求你只能使用你擁有版權的代碼—那么這個程序的許可證將不被視為自由軟件許可證。 對軟件的修改可能是出于各種目的。某個特定的修改究竟是好是壞,這本身是個非常主觀的事情。
自由軟件許可證不能對用戶修改軟件做任何限制,例如,不能僅僅因為某人覺得哪處修改不夠好,就禁止用戶自己做這個改動。 自由度2:用戶可以自由地分發(fā)該軟件的拷貝。自由分發(fā)(自由度2和3)意味著你(即,軟件用戶)可以把軟件原版或修改版再發(fā)布給其他用戶。你可以免費發(fā)布,也可以收取費用。軟件可以發(fā)布給任何地方的任何人。所謂“自由”,意味著你的這些行為(發(fā)布軟件原版或修改版給其他用戶;或其他自由度中提及的行為)不必事先征得任何人的許可,也不必為此額外支付任何費用。 用戶可以自由地運行該程序或?qū)Τ绦蜻M行修改。如果僅僅私下自己修改或運行該程序,那么你沒有義務將該行為公開給任何人。
如果你發(fā)布了自己修改后的程序,那么你也沒有任何義務將該修改行為告知給哪個或哪些指定的人或組織。 自由度3允許用戶自由地發(fā)布軟件的修改版。自由軟件不一定要求修改版必須繼續(xù)采用自由軟件許可證。換句話說,自由軟件許可證可以不必是copyleft許可證。但是,如果一個軟件許可證要求修改后的軟件必須以非自由軟件的形式發(fā)布,那么該許可證則不被視為自由軟件許可證。 “自由地分發(fā)軟件的拷貝”意味著必須允許用戶自由地發(fā)布軟件的原版或用戶自己的修改版。無論那個版本,用戶都可以選擇發(fā)布程序的二進制或可執(zhí)行文件,也可以發(fā)布程序的源代碼。(以可執(zhí)行文件的形式發(fā)布程序可以讓人方便安裝,這一點對于推廣自由軟件也至關重要。)對于某些程序,也許無法或者不必發(fā)布二進制或可執(zhí)行文件(一些編程語言的實現(xiàn)可能并不支持,例如某些腳本語言),但是用戶必須有權利以任何方式生成二進制或可執(zhí)行文件,并且發(fā)布這些生成的軟件。
Copyleft(公共版權)當然,只要不違背這些核心自由,自由軟件許可證也可以額外添加一些要求,限制軟件的分發(fā)步驟。例如,copyleft就是常見的一種限制。簡言之,copyleft要求軟件的修改版必須同樣以自由軟件的形式發(fā)布。這條限制與核心自由并不沖突,相反,copyleft可以用來很好地保護軟件用戶的自由。
strongerHuang
4
打包和發(fā)行的詳細規(guī)則
自由軟件可以對修改版的打包或分發(fā)方式做一定的限制。這些限制不得與前面提到的四大自由相矛盾,不得直接或間接地限制用戶運行,修改或發(fā)布軟件。例如,某些自由軟件可以要求修改版不得使用軟件的原有名字發(fā)布;不能使用軟件的原有商標;必須標明軟件來自誰的修改等等。只要這些限制不會明顯地限制用戶再發(fā)布軟件的修改版,那么它們就是可以接受的。既然已經(jīng)對軟件修改了,那么你估計也就不會在乎針對這些額外的小限制再做一點修改了。 同理,自由軟件也可以要求用戶“如果以這種方式發(fā)布,那么用戶必須也可以從另外某一渠道獲得”。
比如,某個自由軟件可能會要求如果發(fā)布了修改版,那么必須也要給原作者一份修改后的拷貝。(注意:此處前提是軟件必須發(fā)布,用戶可以私下修改軟件而不發(fā)布,這樣也就不必把修改版發(fā)給開發(fā)者了。)另外還有一些規(guī)則也不會與自由軟件原則沖突,比如軟件可以要求修改后的版本發(fā)布時需要附帶相應的原版軟件的代碼。 有一些特例需要額外討論:如果某軟件許可證要求修改后的軟件必須修改可執(zhí)行文件的名字,那么必須保證軟件運行的環(huán)境允許修改文件名或具備某種別名機制,否則該要求將被視作與自由軟件原則相背。因為軟件的可執(zhí)行文件可能會被其他第三方軟件調(diào)用,而文件名則是這種調(diào)用的基礎。別名機制可以保證用戶在遵守該要求的前提下,順利將原版軟件替換成修改版,并且不會影響依賴該軟件的第三方程序。
strongerHuang
5
出口條例
一些政府的出口限制或貿(mào)易制裁可能會影響到軟件用戶在國際范圍內(nèi)發(fā)布軟件的自由。軟件開發(fā)者也許沒有能力去改變這些現(xiàn)實,但是我們可以拒絕自我審查。自由軟件的開發(fā)者不得在軟件許可證中要求用戶遵守哪條特定法律,因為開發(fā)者無法保證用戶所在國度或地區(qū)具備該法律條款。這樣,自由軟件許可證就不會給用戶在法律之外添加額外的違反基本自由的限制。 當然,自由軟件可以僅僅在許可證中提及某條出口條例或相關法律,而不強制要求用戶遵守。這樣做只是為用戶提供了信息而沒有實際限制用戶。如果某條出口限制法律是普遍存在,全部用戶所在的地區(qū)都做出該限制的,那么在許可證中要求用戶遵守該條例也不會被視為限制用戶的自由。然而,這會存在潛在問題:一旦該條出口限制法律在某個用戶的所在地區(qū)做了修改,那么該許可證也就不被視作自由的。
strongerHuang
6
法律考慮 要落實這些自由度,就應該保證:如果用戶遵守許可證上的要求,那么這些自由度就必須是長久的,不可更改的。如果軟件的開發(fā)者有權利隨意修改已發(fā)布軟件的許可證,那么該軟件也不被視為自由軟件。 自由軟件許可證不得要求用戶額外遵守哪些非自由軟件的許可證。例如,自由軟件許可證不得要求用戶必須遵守“所有使用的軟件的許可證”。因為用戶可能使用非自由軟件,而要求用戶遵守全部使用的軟件的許可證則意味著需要遵守非自由軟件許可證,這要的要求將被視作非自由的。 自由軟件許可證可以指定與軟件相關的訴訟需要遵守哪個地區(qū)的法律,或需要在哪里提起訴訟。
strongerHuang
7
基于合同的許可證 絕大部分自由軟件許可證是基于版權的?;诎鏅?,能采取的限制往往相對有限。如果一個許可證基于版權并且遵照上述的自由軟件原則,那么它很可能被視作是自由軟件許可證。當然,我們也見過一些例外,不過這些還很少見。然而有些自由軟件許可證是基于合同的。合同可能會有更多的額外要求。這就意味著基于合同的許可證可能會在很多不經(jīng)意的地方違背自由軟件原則,導致軟件不被視作自由軟件。 很遺憾,我們無法列出所有可能的意外情況。如果一份基于合同的許可證對用戶做出了一些額外限制,并且這些限制是不可能包含在一份基于版權的許可證中的,那么我們就需要再三考慮它是否可以被視作自由許可證。很多情況下,這些許可證都是非自由的。
strongerHuang
8
其他
除了以上描述的內(nèi)容,還有一些需要注意的,比如:
在談論自由軟件時使用正確的詞匯
如何詮釋這些標準
獲得關于自由許可證的幫助
軟件之外的手冊文檔
······
關于自由軟件,GNU進行多次修訂:.
責任編輯:xj
原文標題:什么是自由軟件?
文章出處:【微信公眾號:strongerHuang】歡迎添加關注!文章轉(zhuǎn)載請注明出處。
-
自由軟件
+關注
關注
0文章
6瀏覽量
7300 -
軟件
+關注
關注
69文章
4704瀏覽量
87091 -
源代碼
+關注
關注
96文章
2943瀏覽量
66618
原文標題:什么是自由軟件?
文章出處:【微信號:strongerHuang,微信公眾號:strongerHuang】歡迎添加關注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論