開放源碼是開源軟件嗎?

<pre>
開放源碼和開源軟件的不同是什么?
開放源碼不能叫做開源軟件嗎?
所謂開源,僅僅是指符合OSI定義的Open Source么?
</pre>

Open Source的來歷

1997年,埃里克·雷蒙(Eric Raymond)出版其著作《大教堂和市集》,探討黑客社區與自由軟件原則。1998年初,該論文受到極大的關注,為促成網景通訊公司將其受歡迎的互聯網套裝軟件《網景通訊家(Netscape Communicator)》釋放成為自由軟件的因素之一。這些代碼即為今日大家熟悉的Mozilla Firefox與Thunderbird。

網景的行動激起雷蒙及其伙伴深入研究如何將自由軟件基金會的自由軟件概念及優點帶入商業軟件產業。他們查覺基金會的社會活動不如網景等公司的行動來得吸引人,因而試圖重新包裝自由軟件運動,以強調分享與協作軟件源代碼的潛在商機。他們選用的新名稱為“開放源代碼”(open source),很快地布魯斯·佩倫斯(Bruce Perens)、出版家提姆·奧萊理(Tim O'Reilly)、林納斯·托瓦茲(Linus Torvalds,)及其他人支持新名稱。開放源代碼促進會于1998年2月創建,以推動使用新名稱,并宣揚開放源代碼的原則。

注:以上介紹來源于中文維基百科《開源軟件》詞條

OSI對開源的定義

開放源代碼的定義由Bruce Perens(Debian的創始人之一)定義如下:

  • 自由再散布(Free Distribution):允許獲得源代碼的人可自由再將此源代碼散布。
  • 源代碼(Source Code):程序的可執行文件在散布時,必需以隨附完整源代碼或是可讓人方便的事后獲取源代碼。
  • 派生著作(Derived Works):讓人可依此源代碼修改后,在依照同一許可協議的情形下再散布。
  • 原創作者程序源代碼的完整性(Integrity of The Author’s Source Code):意即修改后的版本,需以不同的版本號碼以與原始的代碼做分別,保障原始的代碼完整性。
  • 不得對任何人或團體有差別待遇(No Discrimination Against Persons or Groups):開放源代碼軟件不得因性別、團體、國家、族群等設置限制,但若是因為法律規定的情形則為例外(如:美國政府限制高加密軟件的出口)。
  • 對程序在任何領域內的利用不得有差別待遇(No Discrimination Against Fields of Endeavor):意即不得限制商業使用。
  • 散布許可協議(Distribution of License):若軟件再散布,必需以同一條款散布之。
  • 許可協議不得專屬于特定產品(License Must Not Be Specific to a Product):若多個程序組合成一套軟件,則當某一開放源代碼的程序單獨散布時,也必需要匹配開放源代碼的條件。
  • 許可協議不得限制其他軟件(License Must Not Restrict Other Software):當某一開放源代碼軟件與其他非開放源代碼軟件一起散布時(例如放在同一光盤),不得限制其他軟件的授權條件也要遵照開放源代碼的授權。
  • 許可協議必須技術中立(License Must Be Technology-Neutral):意即許可協議不得限制為電子格式才有效,若是紙本的許可協議也應視為有效。

注:以上介紹同樣來源于中文維基百科《開源軟件》詞條

從詞語分析的角度,討論“access to the source code”、“open-source”、“開放源代碼”、“開源”

在OSI的開源定義的文本中,開宗明義的第一句話就是:“Open source doesn't just mean access to the source code. ”甚至在后面的文字里,直接將open-source連接起來,表示這是一個詞,而不是2個詞組成的詞組。

所以,與此類似的,在中文里,我們可以認為:“開放源代碼”是一個動詞+一個名詞。而“開源”則是一個特定的詞匯。作為動詞,我們說將某某軟件開源,是一種行為。作為形容詞,我們稱某某軟件是一個開源(的)軟件,不僅僅是指我們能夠獲取到他的源代碼。

從嚴格意義上來說:當我們判斷某某軟件是否開源時,首先需要檢查的,是他的授權協議,是否符合OSI對于開源的定義。最好,他的授權協議已經獲得OSI的認證,我們就不必仔細去分析他的條款了。

但是,如果我們看到一個軟件,不含任何授權協議的文本,我們可以確定:“這只是一堆代碼,雖然我可以獲得代碼,但是不是可以任意使用,都無法明確。更不要說算是開源軟件了。”

為什么開放源代碼,還需要有一個授權協議?

當我將自己的源代碼放到某個地方,供人公開下載。接下來會發生什么事情?如果我是一個老手,由于見多識廣的原因,我會估計到,也許會發生很多不同的事情。有些事情,我樂于見到。比如某人給我發郵件,提交bug或者patch。有些事情,我無所謂(或者也沒辦法干涉),比如某人在自己家里修改了代碼,然后自己使用。有些事情,我認為侵犯了自己的權益,比如別人拿了我的代碼,卻號稱是自己開發的,并且刪除了所有能夠證明是我的勞動的證據。還有些事情,我也很在意,比如:雖然沒有侵犯我的權益,卻潛在的侵害了這個軟件的用戶的權益等等。

總之,當一個項目的源代碼被公開,哪些事情,我希望發生。哪些事情,我不希望發生。這就需要在一個協議里,被明確的規定下來。

如果發布源代碼的人,對此毫不在意,甚至由于“根本沒仔細思考過會發生什么”,那么我們會認為,這樣的“開源”,的確是不夠認真。

在我曾經翻譯的一篇《開源項目成功的十條準則》里,第二條就明確寫到:“以相同方式共享”是開源的安全帶。在遇到嚴重的事故之前,你大可吹噓自己完全不需要它。一旦出現事故,你就會發現自己滿臉污垢,或者‘輕微擦傷’,不要成為一個“傷員”。使用“以相同方式共享”的許可證吧,如果你覺得GPL/LGPL太過于政治化,那就用MPLv2。

老司機的教訓,要認真的聽啊!

太過于政治化的許可證,是怎么回事?

在開源(Open Source)之前,其實另外還有一個重要的先驅,自由軟件(Free Software),在自由軟件的定義中,維護軟件用戶的自由是正義的,限制(剝奪)軟件用戶的自由是非正義的。

自由軟件用戶的四項自由是指:

  • 自由度0:無論用戶出于何種目的,必須可以按照用戶意愿,可以隨時隨處自由地運行該軟件。
  • 自由度1:用戶可以自由地學習并修改該軟件,以此來幫助用戶完成用戶自己的計算。作為前提,用戶必須可以訪問到該軟件的源代碼。
  • 自由度2:用戶可以自由地分發該軟件的拷貝。
  • 自由度3:用戶可以自由地分發該軟件修改后的拷貝。借此,用戶可以把改進后的軟件分享給整個社區令他人也從中受益。作為前提,用戶必須可以訪問到該軟件的源代碼。

正如自由軟件的官方文檔中所說的:“一個軟件只有提供了以上所有的自由給它的用戶,才可以被成為自由軟件。否則,它就是非自由的。盡管我們也可以比較非自由軟件為其用戶提供的自由度,但是我們認為,無論如何,非自由軟件本身是不道德的。參考鏈接

是的,自由軟件的核心,在于其包含嚴厲的道德判斷。事實上,在絕對的軟件用戶的自由背后,開發者的自由,被道德綁架了。

再引用一段:“無論在哪種情況下,只有所有用戶使用的代碼都滿足了這四項基本自由,該程序才能被視作自由軟件。例如,有兩個程序,甲程序運行的時候會自動調用乙程序。發布甲程序意味著用戶必須使用到乙程序,那么必須甲乙兩個程序都是自由的,甲程序才是自由的。如果通過修改甲程序,使其不再依賴乙程序,那么僅僅以自由軟件的形式發布甲程序即可。”

相比之下,開源軟件的相關定義是:“許可協議不得限制其他軟件(License Must Not Restrict Other Software):當某一開放源代碼軟件與其他非開放源代碼軟件一起散布時(例如放在同一光盤),不得限制其他軟件的授權條件也要遵照開放源代碼的授權。”

仔細的閱讀開源軟件的定義,我們就能發現,較之自由軟件,“開源”是道德中立的。雖然RMS非常痛恨這樣的行為,但是我們應該承認,更加寬松的、非道德化的開源標準,更加有助于開發出更多、更好的軟件。

然而,開源同樣被罩上了道德的光環

Open-source是一個好詞,雖然沒有像Free Software那樣標榜自己的道德屬性,這同樣是一個好詞。open-source是一種值得贊賞的行為,即使最終因為開源,企業能夠賺得更多,但是在開源的那一刻,企業是放棄了一部分潛在利益的。

至于個人的開源,那就大多數是無利可圖,也就更加值得欽佩了。

在這種情況下,不僅僅是社會上對于開源有諸多褒揚,一旦企業決定開源,肯定會加入到歌頌開源,標榜&自我標榜的行列之中。既然都已經放棄了一部分潛在的“利”,當然得在“名”上面努力的賺回來呀。

于是,整個IT圈子里,會有這種一種氛圍:只要一個企業愿意開源,就值得稱贊。而且,企業開源,也成為這個企業,變得更加開放,更加“尊重社區”的象征。更進一步的,如果大家發現,這個企業,并非真正開源,只不過賺了名聲,卻完全沒有犧牲利益時。一種感情受到傷害的心態,油然而生。

“偽開源”的道德譴責,也由此而生。

企業開源,不是一種道德行為,而應該是一種商業行為

我們曾經聽過一句話:“免費的其實是最貴的。”同樣的理由:“當一家企業跟你談情懷,最終他還是想賺你的錢。”所以,如果一家企業聲稱自己的“開源”或者“贊助開源”,完全不是為了自己的商業利益。我反正是不信的。

相反,我寧愿一家企業,真的理解了以開源為基礎的商業模式,并且通過成熟、有效運作,借助商業賺取了更多的利益。這種光明正大的賺錢,值得所有人敬佩。包括商業眼光、技術實力與市場手段!

假設真的有企業家,出于情懷而開源。我倒是會內心充滿疑慮。這種事情,他們家真的想明白了?真的能持久?他們的開源軟件,真的能夠放心使用?

開發者(尤其是企業)可以選擇任何一種協議開源

如果我們不但承認用戶的自由,也承認開發者的自由。如果我們不但支持用戶的利益,也支持開發者的利益。如果我們承認不同的軟件,面對著不同的技術與市場狀況。如果我們承認,應該尊重開發者對于自身利弊的判斷。

那么,開發者(尤其是企業)選擇以何種協議開源,是首先應該被尊重的自由。無論他選擇GPL、Apache License還是MIT中的任何一種,都不會比選擇其他協議,更加道德,或者更加不道德。更明確的表達是:并不是一個企業犧牲得越多,就越道德,反之亦然。

更進一步,如果他選擇的不是任何一種已有的開源協議,而是自行草擬了一份協議。并以此來捍衛自己的特別重視的利益。這也同樣無可厚非,無可指責。

因此,當我們聲稱:某某軟件并不是符合OSI定義范疇的開源軟件。也僅僅是一種事實陳述,而非道德譴責。

是否存在OSI定義之外的開源軟件?

這是一個很有趣的話題,我們可以以非常學究的方式來分析,也可以以較為輕松愉快的方式來研究一下。在寫這篇文章的時候,我發現了兩種許可協議,都非常有趣。

WTFPLDo What The Fuck You Want To Public License,中文譯名:你他媽的想干嘛就干嘛公共許可證

大概意思是:你他媽的想干嘛就干嘛,以及,如果你改了這個協議,請不要再用這個名字。來源介紹

還有一種協議,叫做BEER-WARE LICENSE,你可以使用此軟件做任何事。如果我們在某一天相遇了,而且你認為此軟件很有價值,你可以為我買一瓶啤酒來答謝。來源介紹

這兩種協議,看上去都非常亂來。更加有趣的是:他們都經過了FSF(自由軟件基金會)的認證,確認他們是兼容GPL的自由軟件許可證。

但是,他們卻沒有獲得OSI的認證。因此,按照OSI的定義,如果有軟件使用了這樣的許可證,是不能稱之為開源軟件的。

因此,泛泛而論:我們可以認為存在狹義的(符合OSI定義的)開源軟件,與廣義的開源軟件

但是:我沒辦法準確的定義“廣義的開源軟件”。因為太難了!

有中國特色的開源

當開源軟件進入中國,當中國的個人與企業,也開始參與開源,甚至發起開源項目的時候,事情變得更加復雜了。

先說說法律問題:在中國,目前“貌似能夠”保護開源軟件的,是兩部法律:《著作權法》與《計算機軟件保護條例》,但是在這兩部法律中,都沒有明確的開源軟件的定義。而且,在《計算機軟件保護條例》中,還認為“同一計算機程序的源程序和目標程序為同一作品。”但是,發布目標程序與同時發布源程序,明顯是兩種差異巨大的行為。

在軟件著作權人依法享有的權力中,雖然包含修改權。但是,如果在發行或網絡傳播的時候,不提供源程序,事實上是無法轉讓或授予他人修改權的。(非編譯型的腳本語言,混淆以后的源代碼,又是兩種需要分析的特殊情況)

再者,“保護條例”中所說的:“軟件著作權人可以全部或者部分轉讓其軟件著作權,并有權獲得報酬”,其中的部分轉讓,是否包含“修改權的部分轉讓”?例如,雖然允許修改源代碼,但是代碼中關于許可證的注釋內容,能不能被刪除或修改?

還有就是外國開源軟件,包括開源軟件的許可協議,是否受到中國法律保護的問題。更進一步,直接采用國外的開源軟件的常用許可協議的國產開源軟件,是否也能受到中國法律的保護呢?

在我看到的網上的一些分析認為:“將軟件開源只是是作者處置自己版權的一種方式,其附帶的開源協議只要不與其他法律相違背,當然是合法有效的。開發者將軟件源代碼發布并附帶開源協議的行為,就是向不 特定多數的人作出一個附條件的意思表示,任何人只要使用該軟件,就應當理解為使用的行為接受了這樣的意思表示,即作者和使用者之間建立了軟件授權使用合 同,而開源協議中所約定的條款也就成為了這個授權合同的一部分,使用者應當在該合同項下履行自己的義務。” 參考鏈接

但是,真正令人困擾的,是一旦侵權行為發生,如何判斷?如何尋找證據?是不是開源軟件的作者,還需要先去做“著作權登記”?國內雖然的確有一些學術上的研究,但是因為整個法制不夠健全,而且也尚未出現“開源相關的真實案件”,因此在執行上還是空白。

在這種現實情況下,一個中國企業選擇開源,的確是要冒著“被侵權之后求告無門”的風險的!在放出自己的源代碼時,選擇更加嚴格的措辭,更加嚴格的授權,甚至明明是開源,也先寫一句“保留所有權利”,也就可以理解了。

正面回答問題

關于文章開頭提出的問題,我的回答如下:

  1. 從嚴格意義上來說:開源軟件是一個專有名詞,特指選擇了符合OSI定義的授權協議的軟件。
  2. 另外還有大量的未選擇明確的授權協議,或者自行擬定開源授權協議,并開放源代碼的軟件,同樣也是廣義的開源生態圈的一部分。
  3. 在國內的法律環境對于開源軟件的保護,逐步健全起來之前,盲目要求個人或企業,嚴格按照OSI的定義開源,甚至嚴格按照FSF的定義開源,并不妥當。以是否道德來綁架,更不應該!
  4. 無論當前的法制環境如何,選擇經過反復錘煉的,成熟的開源協議,其實是對自身開源行為,更加審慎的態度。(如果它保護不了你,你的條款再嚴格,它也保護不了。但是,如果你自己發明的條款有漏洞,國家法制就算健全也幫不了你。)
  5. 將開源與道德脫鉤,既不以道德相標榜,也不以道德相指責。這是對于開源軟件,最好的態度!
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,517評論 6 539
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,087評論 3 423
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,521評論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,493評論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,207評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,603評論 1 325
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,624評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,813評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,364評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,110評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,305評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,874評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,532評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,953評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,209評論 1 291
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,033評論 3 396
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,268評論 2 375

推薦閱讀更多精彩內容