開放源碼是開源軟體嗎?

2021-01-10 開源中國
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定義的)開源軟體,與廣義的開源軟體

但是:我沒辦法準確的定義「廣義的開源軟體」。因為太難了!

有中國特色的開源

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

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

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

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

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

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

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

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

正面回答問題

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

從嚴格意義上來說:開源軟體是一個專有名詞,特指選擇了符合OSI定義的授權協議的軟體。

另外還有大量的未選擇明確的授權協議,或者自行擬定開源授權協議,並開放原始碼的軟體,同樣也是廣義的開源生態圈的一部分。

在國內的法律環境對於開源軟體的保護,逐步健全起來之前,盲目要求個人或企業,嚴格按照OSI的定義開源,甚至嚴格按照FSF的定義開源,並不妥當。以是否道德來綁架,更不應該!

無論當前的法制環境如何,選擇經過反覆錘鍊的,成熟的開源協議,其實是對自身開源行為,更加審慎的態度。(如果它保護不了你,你的條款再嚴格,它也保護不了。但是,如果你自己發明的條款有漏洞,國家法制就算健全也幫不了你。)

將開源與道德脫鉤,既不以道德相標榜,也不以道德相指責。這是對於開源軟體,最好的態度!

文/莊表偉(簡書作者)
原文連結:http://www.jianshu.com/p/7a47cbb06a6

相關焦點

  • 開放源碼是開源軟體嗎? - OSCHINA - 中文開源技術交流社區
    開放原始碼促進會於1998年2月創建,以推動使用新名稱,並宣揚開放原始碼的原則。許可協議不得限制其他軟體(License Must Not Restrict Other Software):當某一開放原始碼軟體與其他非開放原始碼軟體一起散布時(例如放在同一光碟),不得限制其他軟體的授權條件也要遵照開放原始碼的授權。
  • Windows 10「源碼洩露「讓我想起微軟「開源之路」
    仔細想想核心源碼就那麼容易「洩露」嗎?源碼對具備研發實力、從事軟體研發公司來說又意味著什麼,簡單的說就是「核心競爭力」,但從本質上來講就是「生存之本」,公司質量運營和安全管理部門可不是擺設,尤其是像微軟這樣的巨頭大佬。
  • 微軟開源軟體特徵源碼分析工具Application Inspector
    微軟近日開源了其內部使用的軟體特徵源碼分析工具 Application Inspector。  現代軟體開發實踐通常需要基於數百個現有組件中構建應用,無論它們是由組織中的另一個團隊、外部供應商還是開源社區中的某個人編寫的。
  • 研究報告:開源軟體正吞食企業軟體市場
    2015年調查的結果反映了企業正在越來越多的採用開源軟體並且突出了參與開源社區組織的豐富度。開源軟體的正式政策和管理方面的需求變得越來越普遍。關於開放源碼的調查結果分析可以幫助我們所看到的趨勢,幫助在公司的代碼基礎上實現開源,確定已知的安全漏洞,並跟蹤修復。今年的結果,非常明顯,企業需要在管理和治理開源方面趕上他們對其的使用。
  • 媒體評熱門開源軟體Top100 17173技術大俠上榜
    做開源中國六年有餘,這六年時間國內的開源蓬勃發展,從一開始的使用到貢獻,到推出自己很多的開源軟體,而且還有很多軟體被國外的認可。中國是開源不可忽視的力量。而我們這個榜單也是從這些國人開發、主要參與開發或者基於國外開源軟體進行改進並形成獨立版本的軟體中,根據該軟體的訪問、收藏、下載等多個角度, 從而得出前 100 名最受歡迎的開源軟體。
  • 盤點10 大開源免費的項目管理軟體
    很多企業在項目開發過程中都會遇到時間、預算、人員配比等各種問題,一款高效的、良好的項目管理軟體必須具備快速的、強大的且包含:調度、成本控制、資源分配、文檔、協作以及溝通等功能。以下 10 款免費且開源的項目管理軟體,希望對你有所幫助!1、項目管理和缺陷跟蹤工具 RedmineRedmine 是一個開源的、基於Web的項目管理和缺陷跟蹤工具。
  • UNIX、GNU、自由軟體、Linux、開源軟體、Ubuntu、Android、GitHub等自由及開源軟體FOSS十大事件
    期待大家參與~】 UNIX、GNU、自由軟體、Linux、開源軟體、Ubuntu、Android、GitHub等自由及開源軟體FOSS十大事件(5037字)很多人看開源軟體,認為是理所當然的,但事實上,自由和開源軟體是半個世紀以來
  • JAVA上百實例源碼以及開源項目
    此時此景,筆者只專注Android、Iphone等移動平臺開發,看著這些源碼心中有萬分感慨,寫此文章紀念那時那景!Java 源碼包Applet鋼琴模擬程序java源碼2個目標文件,提供基本的音樂編輯功能。編輯音樂軟體的朋友,這款實例會對你有所幫助。
  • 它們養活了一票國產軟體!這些開源軟體你知道嗎?
    誠然,國產軟體在很多方面體驗都不錯,但之所以它們這麼強,很大程度上是因為在核心技術方面,借用了相當多來自開源軟體的技術。大家對國產軟體都相當了解,但對於國產軟體背後的開源軟體,又知道多少?今天,就一起來談談國產軟體背後的開源軟體吧。
  • 中國科技雲「第二屆中國開源科學軟體創意大賽」報名通知
    摘要: 報名時間:2020年7—2021年1月 || 主辦單位:中國科學院計算機網絡信息中心;協辦單位:小米集團|| 以「人才創新、技術開源」為主題,以「發展中國科學軟體生態」為目的,匯聚各種優秀國產開源軟體。
  • 「InfoWorld2008最佳開源軟體大獎」[中文版]
    事實上,InfoWorld的年度開源軟體大獎很有分量,不過遺憾的是因為沒有中文版本,所以很少有國內用戶關注這個獎項。InfoWorld 2008年的「開源軟體大獎」最新出爐,CHIP軟體社區乘此機會將InfoWorld 2008年的「開源軟體大獎」中文化並進行整理,希望能夠為中國用戶帶來便利,也希望能夠為開源社區共享綿薄之力。
  • 什麼樣的教育平臺源碼才是受大眾歡迎的
    了解在線教育系統就需要先了解教育平臺源碼,什麼樣的教育平臺源碼才是受大眾歡迎的呢?我們來一起了解一下。但是如果教育平臺源碼僅支持PC端的教育平臺,將會存在著一定的局限性,難道一些偏遠地區為了學習在線課程,就必須一人配一臺電腦嗎?很明顯不現實的事情,如果支持安卓端、IOS端和PC端,多終端互通,必定會滿足不同人群的使用體驗。 2、高清的授課直播間 成熟的教育平臺,在授課直播間的畫面質量上也有所保證。
  • openEuler作業系統源碼正式公開
    近日,歐拉作業系統 openEuler 正式開放原始碼、鏡像及開發測試環境。華為表示,作為項目主要籌備方,將會逐步開放在 ICT 基礎軟體領域的技術積累,將作業系統、編譯器/JDK 等領域的基礎平臺能力開源至 openEuler 社區。
  • 微軟開源用於 Azure 數據壓縮的算法、硬體和源碼
    微軟正在向 OCP(開源計算項目,Open Compute Project)發布 「Project Zipline」 數據壓縮算法
  • NASA棄用Eucalyptus 只為尋求真正的開源
    美國航空航天局(NASA)表示,放棄Eucalyptus 轉向Nebula雲計算平臺,不僅是因為它的工程師相信,開源平臺不能達到他們所需要的規模,而且還因為Eucalyptus 是不完全開放源碼的
  • 微軟宣布開源GW-BASIC解釋器
    不過今日,微軟已經正式將它開源,感興趣的朋友可到 GitHub 上查看完整的源碼。(來自:Microsoft/ GitHub)微軟在自述文件中寫道:這些誕生自 1983 年 2 月 10 日的源碼,採用了 8088 彙編語言。本次開源出於歷史參考和教育的目的,因此不接受以任何方式修改源 PR 。
  • 淺談開源的可視化建站類程序源碼
    好不容易下載下來的,都是幾乎過時的東西,不過也找了幾個能用的,今天筆者就帶大家分享分享我的心得和相關網際網路出來的開源系統。1:建站之星如果說可視化建站系統最久遠的,那絕對是建站之星2.7了,網上找了還附送3000套模板和視頻的。筆者滿懷希望的花了19.9在某站網上下的,結果下載後,震驚。
  • 紅帽收購 API 管理公司 3scale,計劃開源其源碼
    Red Hat 今天宣布收購應用程式接口(API)管理軟體公司3scale。對 Red Hat 來說,本次收購交易可能不會有太多實質性影響,但是,根據這家已上市的開源軟體服務供應商發布的一份聲明顯示,按照一般公認會計原則(GAAP),該公司 2017 財年的運營支出將會達到 700 萬美元。
  • 阮一峰:開源許可證基礎知識掃盲 - OSCHINA - 中文開源技術交流社區
    版權法默認禁止共享,也就是說,沒有許可證的軟體,就等同於保留版權,雖然開源了,用戶只能看看源碼,不能用,一用就會侵犯版權。所以軟體開源的話,必須明確地授予用戶開源許可證。二、開源許可證的種類目前,國際公認的開源許可證共有80多種。它們的共同特徵是,都允許用戶免費地使用、修改、共享源碼,但是都有各自的使用條件。
  • Citrix CloudStack 加入ASF開源組織
    思傑公司近日宣布,廣受歡迎的CloudStack解決方案將成為業內首個即將提交給Apache Software Foundation(ASF)的雲平臺,作為由志願者管理的非營利性開放源碼基金會,ASF是全球最成功的開放源碼項目的聚集地,這標誌著思傑加速廣泛採用開放、可互操作的雲計算戰略進入新階段。