程序員都應該懂一點開源協議
讓雷軍倍感壓力的00后CEO,攜手300名最小年齡僅為10歲出頭的員工們,竟豪言:一些三四十歲的老前輩已經看不懂互聯網。可就在被采訪的短視頻剛剛傳遞開來的時候,劇情突然三百六十度大反轉。GitHub 開源項目 AndroidTvLauncher 的作者有理有據、義憤填膺地痛斥這位令人羨慕的00后CEO原封不動地抄襲他的作品。
互聯網之事貌似永遠有著猜不透的劇情。外行看熱鬧,內行看門道。這里,咱們不聊長江后浪推前浪的勵志故事,也不聊孰是孰非的后續劇情發展,咱就聊點與我們有關系的事情,開源協議。
說到開源協議,必須先簡單介紹一下 自由軟件 這個詞。根據百科的解釋,自由軟件是一種可以不受限制地自由使用、復制、研究、修改和分發的軟件。注意,自由并不代表著免費。正是這種開放、開源的精神,計算機軟件才得以如此飛快地發展。
而 開源協議 ,或者叫開源許可證,就是為保護自由軟件原作者的相關知識產權,在作者與用戶之間設立的一種虛擬合同,或者稱之為授權方式。其中的條款內容,就是用來限制軟件使用者的使用方式等。他人如有違反協議,作者有權利發起訴訟,維護自身權益。
開源屆定義有幾百種不同的開源協議,寬松程度不一,用以滿足開源項目的各種使用場景。比如,是否允許商用,是否允許修改,修改后是否需要繼續開源,開源是否必須繼續使用相同協議授權等。
不過,作為普通用戶,無論你是作為開源作者造輪子,還是作為普通用戶借輪子,我們只需要知道比較流行的那幾種,并能夠加以區分即可。否則,上百種協議真要細分的話,絕非易事。
早期一名烏克蘭程序員畫有一張分析圖,簡單明了地描述出六種流行開源協議的使用區分。 阮一峰老師 翻譯如下:
更簡單點的話,也可以參考來自 GcsSloop 博文的這張圖,更加通俗易懂:
更多的開源協議,我們還可以參考這張圖(目前只發現英文版):
至于使用的話,不妨借助 GcsSloop 制作的開源協議網站:
http://choosealicense.online
如圖所示:
選擇所需要的協議,一鍵復制即可。
說完這些,回過頭來想想,估計很多人都會有疑惑:開源協議與我何干?但是,作為一名程序員,開源協議還真與你我關系緊密。
如果你是 GitHub 重度依賴者,如果你稍作留意,不難發現,基本上出名的開源項目根目錄中都有一個協議文件: LICENSE.txt ,而在 README.me 說明文件底部伴隨著 License 內容。這就是你需要留意的地方,使用任意開源項目之前,記得閱讀一下該項目的開源協議。
市場上部分 App 也會在應用中增加第三方開源項目時的使用版權說明,比如支付寶安卓版。這也是一種查看優秀 App 都使用哪些開源項目的途徑之一。
如果你也是一個作者,準備開源自己的項目時,那就更得注意,想想自己需要選擇哪一個開源協議更加合適。比如,大名鼎鼎的 Linux 系統采用便是 GPL 協議;作為安卓程序員,我們當然知道,我們賴以生存的 Android 開源系統,其內核采用的就是 Linux 內核。那么 Android 系統到底屬于哪種開源協議呢,說來真的話長,感興趣的話,推薦你閱讀這兩篇文章:
所以,以后不要再說開源協議與你我無關啦,還不信的話,你可以閱讀我微信公眾號這次的第二篇推文:別總說這事與你沒關系。