程式設計師都應該懂一點開源協議

亦楓發表於2017-09-07

讓雷軍倍感壓力的00後CEO,攜手300名最小年齡僅為10歲出頭的員工們,竟豪言:一些三四十歲的老前輩已經看不懂網際網路。可就在被採訪的短視訊剛剛傳遞開來的時候,劇情突然三百六十度大反轉。GitHub 開源專案 AndroidTvLauncher 的作者有理有據、義憤填膺地痛斥這位令人羨慕的00後CEO原封不動地抄襲他的作品。

網際網路之事貌似永遠有著猜不透的劇情。外行看熱鬧,內行看門道。這裡,我們們不聊長江後浪推前浪的勵志故事,也不聊孰是孰非的後續劇情發展,我們就聊點與我們有關係的事情,開源協議。

說到開源協議,必須先簡單介紹一下自由軟體這個詞。根據百科的解釋,自由軟體是一種可以不受限制地自由使用、複製、研究、修改和分發的軟體。注意,自由並不代表著免費。正是這種開放、開源的精神,計算機軟體才得以如此飛快地發展。

開源協議,或者叫開源許可證,就是為保護自由軟體原作者的相關智慧財產權,在作者與使用者之間設立的一種虛擬合同,或者稱之為授權方式。其中的條款內容,就是用來限制軟體使用者的使用方式等。他人如有違反協議,作者有權利發起訴訟,維護自身權益。

開源屆定義有幾百種不同的開源協議,寬鬆程度不一,用以滿足開源專案的各種使用場景。比如,是否允許商用,是否允許修改,修改後是否需要繼續開源,開源是否必須繼續使用相同協議授權等。

不過,作為普通使用者,無論你是作為開源作者造輪子,還是作為普通使用者借輪子,我們只需要知道比較流行的那幾種,並能夠加以區分即可。否則,上百種協議真要細分的話,絕非易事。

早期一名烏克蘭程式設計師畫有一張分析圖,簡單明瞭地描述出六種流行開源協議的使用區分。阮一峰老師翻譯如下:

更簡單點的話,也可以參考來自 GcsSloop 博文的這張圖,更加通俗易懂:

更多的開源協議,我們還可以參考這張圖(目前只發現英文版):

至於使用的話,不妨藉助 GcsSloop 製作的開源協議網站:

choosealicense.online

如圖所示:

選擇所需要的協議,一鍵複製即可。

說完這些,回過頭來想想,估計很多人都會有疑惑:開源協議與我何干?但是,作為一名程式設計師,開源協議還真與你我關係緊密。

如果你是 GitHub 重度依賴者,如果你稍作留意,不難發現,基本上出名的開源專案根目錄中都有一個協議檔案:LICENSE.txt,而在 README.me 說明檔案底部伴隨著 License 內容。這就是你需要留意的地方,使用任意開源專案之前,記得閱讀一下該專案的開源協議。

市場上部分 App 也會在應用中增加第三方開源專案時的使用版權說明,比如支付寶安卓版。這也是一種檢視優秀 App 都使用哪些開源專案的途徑之一。

如果你也是一個作者,準備開源自己的專案時,那就更得注意,想想自己需要選擇哪一個開源協議更加合適。比如,大名鼎鼎的 Linux 系統採用便是 GPL 協議;作為安卓程式設計師,我們當然知道,我們賴以生存的 Android 開源系統,其核心採用的就是 Linux 核心。那麼 Android 系統到底屬於哪種開源協議呢,說來真的話長,感興趣的話,推薦你閱讀這兩篇文章:

所以,以後不要再說開源協議與你我無關啦,還不信的話,你可以閱讀我微信公眾號這次的第二篇推文:別總說這事與你沒關係

關於我:亦楓,部落格地址:yifeng.studio/,新浪微博:IT亦楓

微信掃描二維碼,歡迎關注我的個人公眾號:安卓筆記俠

不僅分享我的原創技術文章,還有程式設計師的職場遐想

相關文章