似乎提到開源軟體,往往給人一種錯覺——我拿到了軟體原始碼,接下來我是不是可以大刀闊斧為所欲為?其實非也!開源軟體不等於免費軟體,開源也不等於免費。“Ctrl+C/V 擼起鍵盤就是幹,開源協議要先看”,在你決定使用開源軟體之前,請花幾分鐘,了解一下開源許可(Open Source License)的具體限制條件,對你將大有裨益。
通常,我們接觸到的開源軟體(Open Source Software簡稱OSS)都有對應的開源許可證(Open Source License)對軟體的使用,複製,修改和再發布進行限制。開源協議是確定一個開源軟體版權的法律合同,所以,在使用開源軟體之前,了解各開源協議的特點對一名程式設計師來說尤為重要。
一、 Open Source License(OSL)Open Source License
提到開源軟體或開源協議,首先我們會想到大名鼎鼎的Linux作業系統。Linux是最著名的開源專案之一,它是在GUN作業系統之上構建的免費作業系統核心。雖說Linux作業系統是免費的,但Linux使用了GPL 2.0許可協議對其自身的原始碼進行了限制。通常,所有的開源許可(準確描述是:開放原始碼許可)都旨在控制軟體的使用方式,例如:
個人使用:出於非商業目的情況下使用和修改軟體發行:用於商業或非商業行為用途的軟體共享連結:連結到免費或專有資源專利授予:政府授予的智慧財產權權利分包許可:軟體所有者允許其他人使用其軟體進行二次創新的限制條件商標:對代表組織或產品的符號或文字的使用進行限制二、許可證分類在開源軟體的世界裡,協議分為兩類:Copyleft和Permissive。在介紹Copyleft和Permissive之前,先了解一下Copyright這個詞語。Copyright意為版權,我們在很多網站的頁尾都能看到這個標識。Copyright(版權)是授予創作作品的所有者的專有權利,通常是指在有限時間內對作品進行復制。創作作品可以以文學,藝術,教育或音樂的形式出現。版權旨在以創意作品的形式保護思想的原始表達,而不是思想本身。
Copyright and Copyleft
Copyright(版權)可以通過法律的形式授予,在這種情況下,版權因國家/地區的法律不同而有不同的限制條件;通常情況下,Copyright(版權)的公共法律期限在創作作品所有者去世後50年到100年內到期,具體取決於司法管轄區。
2.1 CopyleftCopyleft(著作權或著作權),源自自由軟體運動,是一種利用現有Copyright(版權)體制來保障使用者軟體自用使用權利的許可方式,可以理解為允許他人使用,傳播創作作品,但會附件一些限制條件。在自由軟體許可中增加Copyleft條款後,該自由軟體除了允許使用者自由使用,修改,釋出以外,Copyleft條款還要求作者所許可的人對修改後的派生作品要求使用相同的許可條件授予作者,以保障其後續所有派生作品都能被任何人自由使用,而不違背第一作者的初衷。
2.2 PermissivePermissive free software licence (寬鬆自由軟體許可協議),是一種對軟體的使用,修改,傳播等方式採用最低要求的自由軟體許可協議條款型別。因此,這種型別的軟體許可協議將不保證被使用軟體的派生軟體會繼續保持原生作品的相關限制條件。怎麼來理解這句話呢?你可以簡單的理解為使用這種型別條款的軟體,在你拿到原始碼後,基本上可以為所欲為。
Copyleft是在有限空間內的自由使用,修改和傳播,且不得違背原始作品的限制條款;而Permissive則可以最大限度的使用,修改和傳播軟體,而不用嚴格按照原始軟體所提出的條款執行。簡單來理解就是:如果一款軟體使用Copyleft型別許可協議規定軟體不得用於商業性質的活動,且不得閉源,那麼後續的衍生子軟體也得遵循該條款,如果是採用Permissive型別的許可協議,則後續衍生的子軟體可以用於商業用途,也可以閉源。
三、通用的開源協議我們任何人都可以建立適合自己軟體作品的開源許可協議,並附帶在自己創作作品的原始碼中,但這樣會導致一個問題,因作者個人喜好和所在地區法律的不同,協議的種類和數量將變得龐大和難以維護;另外對於那些不熟悉法律並且未對開放原始碼許可協議有過詳細了解的人,面對各式各樣的許可協議時,將是一件很頭疼的事情。
面對這樣的問題,最好的解決辦法就是大家都遵循統一的且具有公信力的開放原始碼許可協議,這樣事情就變得簡單得多。在接下來的內容中,我將整理並列舉一些比較好且受歡迎的開放原始碼許可協議。
受個人學習能力和經驗的限制,在此僅列舉一些常見的和使用最多的開放原始碼許可協議。
3.1 GNU通用公共許可證(GPL)GNU的通用公共許可證是最受歡迎的開放原始碼許證可之一。該許可證由理查德·斯托曼(Richard Stallman)所建立,用於保護GUN軟體的自由使用。GPL是Copyleft型別的許可協議,這意味著基於GPL元件編寫的任何軟體都必須以開源的方式進行釋出。
GPL License
GPL允許自由地“使用、複製、修改和釋出”,但修改和釋出後的軟體也必須是可以自由“使用、複製、修改和釋出”的。因此 GPL 大大限制了商業軟體使用GPL授權的軟體,如果非法使用,將面臨起訴的風險。目前 GPL 授權的專案有:Linux、Gnome、KDE、Emacs、GCC。GPL 的出發點是程式碼的開源/免費使用和引用/修改/衍生程式碼的開源/免費使用,但不允許修改後和衍生的程式碼做為閉源的商業軟體釋出和銷售,即必須也是開源和免費,這就是所謂的”傳染性”。
3.2 Apache 許可證由於 GPL 嚴格要求使用了 GPL 類庫的軟體產品必須使用 GPL 協議,對於使用 GPL 協議的開原始碼,商業軟體或者對程式碼有保密要求的部門就不適合整合/採用作為類庫和二次開發的基礎。
Apache許可證是由Apache軟體基金會(ASF)釋出的開源軟體許可證。這是一個由強大社群支援的流行且廣泛部署的許可證。Apache許可證允許您自由使用,修改和分發任何Apache許可產品。但是,在這樣做時,您需要遵循Apache許可的條款。
Apache License
Apache許可證和 BSD許可證類似,同樣鼓勵程式碼共享和尊重原作者的著作權,同樣允許程式碼修改,再發布(作為開源或商業軟體)。需要滿足的條件也和 BSD 許可證類似:(1)需要給程式碼的使用者一份 Apache Licence。(2)如果你修改了程式碼,需要再被修改的檔案中說明。(3)在延伸的程式碼中(修改和有原始碼衍生的程式碼中)需要帶有原來程式碼中的協議,商標,專利宣告和其他原來作者規定需要包含的說明。(4)如果再發布的產品中包含一個 Notice 檔案,則在 Notice 檔案中需要帶有 Apache Licence。你可以在 Notice 中增加自己的許可,但不可以表現為對 Apache Licence 構成更改。(5)Apache Licence 也是對商業應用友好的許可。使用者也可以在需要的時候修改程式碼來滿足需要並作為開源或商業產品釋出/銷售。
3.3 BSD許可證BSD(全稱:Berkeley Software Distribution),1970年代由伯克利加州大學的學生比爾·喬伊建立。BSD許可證非常寬鬆,它允許無限制地重用全部或部分軟體,以整合到自由軟體或所有者中。
BSD Licese
一般情況下,GPL的條款尊重BSD許可的所有政策,因此BSD許可的程式碼可以根據GPL許可釋出,而無需原始作者授權許可。但反過來,未經原始作者許可,不得將GPL許可的程式碼釋出到BSD許可的程式碼中,因為BSD許可證不完全遵循GPL施加的所有限制。
通常,BSD許可證將給使用者很大的自由度,基本上可以理解為”我可以為所欲為”。你可以自由使用原始碼,盡情的修改並再次釋出,或者作為專有軟體再發布。但這種“為所欲為”的行為也是有前提條件的,當你釋出使用了 BSD 協議的程式碼,或則以 BSD 協議程式碼為基礎做二次開發自己的產品時,需要滿足三個條件:(1)如果再發布的產品中包含原始碼,則在原始碼中必須帶有原來程式碼中的 BSD 協議。(2)如果再發布的只是二進位制類庫/軟體,則需要在類庫/軟體的文件和版權宣告中包含原來程式碼中的 BSD 協議。(3)不可以用開原始碼的作者/機構名字和原來產品的名字做市場推廣。
3.4 MIT許可證BSD 程式碼鼓勵程式碼共享,但需要尊重程式碼作者的著作權。BSD 由於允許使用者修改和重新發布程式碼,也允許使用或在 BSD 程式碼上開發商業軟體釋出和銷售,因此是對商業整合很友好的協議。而很多的公司企業在選用開源產品的時候都首選 BSD 協議,因為可以完全控制這些第三方的程式碼,在必要的時候可以修改或者二次開發。
MIT是最寬鬆的自由軟體許可證之一。基本上,只要您添加了原始MIT許可證和版權宣告的副本,就可以和BSD許可證那樣,對原始軟體進行許可範圍內的任何操作,也相當於可以”為所欲為”。如果你在開放原始碼時,只想保留版權,而無需其他任何的限制,那麼你可以選擇MIT許可證。
MIT License
3.5 CDDL許可證CDDL(Common Development and Distribution License)通用開發和發行許可證,是由Sun Microsystems釋出的開源許可證,用來替代Sun Public License(SPL)。Sun公司將CDDL視為SPL的第二個版本,CDDL受到Mozilla公共許可證(MPL)的啟發,對SPL進行了修訂,所有CDDL通常被成為MPL的簡化版,旨在促進程式碼的可複用性。
Sun Common Development and Distribution License
你可以自由複製和分發CDDL許可的任何軟體的任何原始或衍生作品。但是,你不得刪除或更改軟體中包含的任何版權,專利或商標宣告。你還必須保留許可宣告或任何描述性文字,以及任何貢獻者或初始開發者的資訊。
3.6 Eclipse公共許可證EPL(Eclipse Public License)是由Eclipse Foundation開發的開源許可證。它源自通用公共許可證(CPL),EPL許可證是Copyleft型別的許可證,如果你修改了基於EPL許可證的元件並將其作為程式的一部分,然後釋出程式原始碼,則需要在EPL下公開所有修改過的原始碼。如果公司或者組織在其產品中使用EPL許可證,則該協議可以保護作者免受可能的訴訟或損害,此外,EPL還提供了專利授權。
Eclipse Publick License
以上就是常見且比較流行的開源許可證介紹資訊,通過上述的講解我們可以了解到,並非所有的開源軟體都是免費的,基本上所有開放原始碼的軟體作品都附帶有軟體在使用,修改和二次釋出過程中需要履行的條款以及需要承擔的責任。因此,萬不可簡單的將開源等同於免費,且開源的精神和目的也不是免費使用或者對作者原始碼”為所欲為”。
開源的精神在於尊重使用者的自由以及知識傳播的自由,是為了讓優秀的軟體獲得更大的進步和發展。可能Copyleft是一種非常理想化的思想,現實總會與其精神出現偏差,但這種理想主義思想是具有現實意義的,只有不斷的提倡和傳播這種思想,社會才會聚集更多的正能量。開源可以讓人們自由享受軟體所帶來的便利以及思想的交流和創新,但在我們享受別人帶來的福利時,也請尊重別人的勞動成果。自由傳播和使用,不等於免費使用和無償使用,在打破壁壘,敢於創新的同時,也要遵循基本的開源精神。
四、補充
License列表