2021-05-12 14:32:11
阮一峰開源許可證教學
作為一個開發者,如果你打算開源自己的程式碼,千萬不要忘記,選擇一種開源許可證(license)。
許多開發者對開源許可證了解很少,不清楚有哪些許可證,應該怎麼選擇。本文介紹開源許可證的基本知識,主要參考了 OpenSource.com (1,2)。
一、什麼是開源許可證
開源許可證是一種法律許可。通過它,版權擁有人明確允許,使用者可以免費地使用、修改、共用版權軟體。
版權法預設禁止共用,也就是說,沒有許可證的軟體,就等同於保留版權,雖然開源了,使用者只能看看原始碼,不能用,一用就會侵犯版權。所以軟體開源的話,必須明確地授予使用者開源許可證。
二、開源許可證的種類
目前,國際公認的開源許可證共有 80 多種。它們的共同特徵是,都允許使用者免費地使用、修改、共用原始碼,但是都有各自的使用條件。
如果一種開源許可證沒有任何使用條件,連保留作者資訊都不需要,那麼就等同於放棄版權了。這時,軟體可以直接宣告進入“公共領域”(public domain)。
根據使用條件的不同,開源許可證分成兩大類。
- 寬鬆式(permissive)許可證
- Copyleft 許可證
三、寬鬆式許可證
3.1 特點
寬鬆式許可證(permissive license)是最基本的型別,對使用者幾乎沒有限制。使用者可以修改程式碼後閉源。
它有三個基本特點。
- 沒有使用限制。使用者可以使用程式碼,做任何想做的事情。
- 沒有擔保。不保證程式碼品質,使用者自擔風險。
- 披露要求(notice requirement)。使用者必須披露原始作者。
3.2 常見許可證
常見的寬鬆式許可證有四種。它們都允許使用者任意使用程式碼,區別在於要求使用者遵守的條件不同。
- BSD(二條款版)
分發軟體時,必須保留原始的許可證宣告。 - BSD(三條款版)
分發軟體時,必須保留原始的許可證宣告。不得使用原始作者的名字為軟體促銷。 - MIT
分發軟體時,必須保留原始的許可證宣告,與 BSD(二條款版)基本一致。 - Apache 2
分發軟體時,必須保留原始的許可證宣告。凡是修改過的檔案,必須向使用者說明該檔案修改過;沒有修改過的檔案,必須保持許可證不變。
四、Copyleft 許可證
4.1 Copyleft 的含義
Copyleft 是理查德·斯托曼發明的一個詞,作為 Copyright (版權)的反義詞。
Copyright 直譯是"複製權",這是版權制度的核心,意為不經許可,使用者無權複製。作為反義詞,Copyleft 的含義是不經許可,使用者可以隨意複製。
但是,它帶有前提條件,比寬鬆式許可證的限制要多。
- 如果分發二進位制格式,必須提供原始碼
- 修改後的原始碼,必須與修改前保持許可證一致
- 不得在原始許可證以外,附加其他限制
上面三個條件的核心就是:修改後的 Copyleft 程式碼不得閉源。
4.2 常見許可證
常見的 Copyleft 許可證也有四種(對使用者的限制從最強到最弱排序)。
- Affero GPL (AGPL)
如果雲服務(即 SAAS)用到的程式碼是該許可證,那麼雲服務的程式碼也必須開源。 - GPL
如果專案包含了 GPL 許可證的程式碼,那麼整個專案都必須使用 GPL 許可證。 - LGPL
如果專案採用動態連結呼叫該許可證的庫,專案可以不用開源。 - Mozilla(MPL)
只要該許可證的程式碼在單獨的檔案中,新增的其他檔案可以不用開源。
五、常見問題
本節回答一些開源許可證的常見問題。
5.1 什麼叫分發(distribution)?
除了 Affero GPL (AGPL) ,其他許可證都規定只有在“分發”時,才需要遵守許可證。換言之,如果不“分發”,就不需要遵守。
簡單說,分發就是指將版權作品從一個人轉移到另一個人。這意味著,如果你是自己使用,不提供給他人,就沒有分發。另外,這裡的“人”也指“法人”,因此如果使用方是公司,且只在公司內部使用,也不需要遵守許可證。
雲服務(SaaS)是否構成“分發”呢?答案是不構成。所以你使用開源軟體提供雲服務,不必提供原始碼。但是,Affero GPL (AGPL)許可證除外,它規定雲服務也必須提供原始碼。
5.2 開源軟體的專利如何處理?
某些許可證(Apache 2 和 GPL v3)包含明確的條款,授予使用者許可,使用軟體所包含的所有專利。
另一些許可證(BSD、MIT 和 GPL v2)根本沒提到專利。但是一般認為,它們預設給予使用者專利許可,不構成侵犯專利。
總得來說,除非有明確的"保留專利"的條款,使用開源軟體都不會構成侵犯專利。
5.3 什麼是披露要求?
所有的開源許可證都帶有“披露要求”(notice requirement),即要求軟體的分發者必須向使用者披露,軟體裡面有開原始碼。
一般來說,你只要在軟體裡面提供完整的原始許可證文字,並且披露原始作者,就滿足了"披露要求"。
5.4 GPL 病毒是真的嗎?
GPL 許可證規定,只要你的專案包含了 GPL 程式碼,整個專案就都變成了 GPL。有人把這種傳染性比喻成“GPL 病毒”。
很多公司希望避開這個條款,既使用 GPL 軟體,又不把自己的專有程式碼開源。理論上,這是做不到的。因為 GPL 的設計目的,就是為了防止出現這種情況。
但是實際上,不遵守 GPL,最壞情況就是被起訴。如果你向法院表示無法履行 GPL 的條件,法官只會判決你停止使用 GPL 程式碼(法律上叫做“停止侵害”),而不會強制要求你將原始碼開源,因為《版權法》裡面的"違約救濟"沒有提到違約者必須開源,只提到可以停止侵害和賠償損失。
本文永久更新連結地址:http://www.linuxidc.com/Linux/2017-10/147991.htm
相關文章