不要讓你的開源專案「裸奔」,一文了解開源證書

機器之心發表於2020-01-15

在我們現在所處的這個被軟體和數字化內容包圍的時代,開源證書具有極其重要的價值和意義。但你知道如何為你的專案或工作選擇合適的開源證書嗎?choosealicense.com 就是為這一任務而生的,能輔助你找到最適合的開源證書。本文總結該網站上的部分內容,介紹了選取開源證書的方式以及部分證書的授權內容,最後還談到了對於無證書的情況的應對方法。 

開源證書可以保護貢獻者和使用者。企業和精明的開發者不會觸碰沒有這種保護的專案。

不要讓你的開源專案「裸奔」,一文了解開源證書

已有的專案和社群

如果你在為一個已有的專案做貢獻或做擴充套件,最簡單的方法就是繼續使用該專案的證書。要查詢這個證書,只需尋找一個名叫 LICENSE 或 COPYING 的檔案,另外還要瀏覽一下 README。如果你無法找到證書,可以詢問專案維護者。

不同的專案有不同的偏好。對於某些專案而言,使用原專案的證書不僅是因為這樣做最簡單,而且還是原專案證書規定的一項要求。參見某些證書的「同一證書(same license)」條款。

某些社群非常偏好特定的證書。如果你想要參與其中某個社群,即使當你決定發起一個新專案而且不依賴已有專案時,使用他們偏好的證書會更輕鬆一些。下面給出一些例子: 

  • Apache 需要 Apache License 2.0 證書

  • Cloud Native Computing Foundation(雲原生計算基金會)預設指定了 Apache License 2.0 證書

  • GNU 建議大多數程式使用 GNU GPLv3 證書

  • NPM 軟體包大都使用 MIT 證書或非常相似的 ISC 證書

  • OpenBSD 更偏好 ISC 證書

  • Rust crates 大都使用了 MIT 和 Apache License 2.0 證書

  • WordPress 外掛和主題必須使用 GNU GPLv2(或更新的)證書

社群有各種各樣的型別和規模,而且多個社群之間還可能存在關聯(如果你在某家公司工作,還要注意公司的法律要求)。上面給出的例子都是已經很完善的社群。如果你正在構建專案的社群還沒有固定的證書傳統,或者你並不認為你的專案屬於某個特定的社群,也沒有問題:你需要選擇自己的開源證書。下面簡單介紹幾種開源證書。

MIT 證書

這是一個簡短的許可證,其條款中僅要求保留版權和許可宣告。使用該證書的工作、修改和更大型的成果可能會以不同的條款進行分發,也可以不分發原始碼。

不要讓你的開源專案「裸奔」,一文了解開源證書

不要讓你的開源專案「裸奔」,一文了解開源證書

GNU 許可證 v3.0

GNU 許可證 v3.0 按不同強度 copyleft 許可許可權分為三級,分別是最強的 GNU Affero General Public License v3.0(GNU AGPLv3)、GNU General Public License v3.0(GNU GPLv3)和 GNU Lesser General Public License v3.0(GNU LGPLv3)。

首先,我們先看看 copyleft 許可強度居中的 GNU GPLv3:這是一種強 copyleft 的許可證,其條件是提供使用該證書的工作和修改的完整原始碼,這包括:使用了已有該證書的工作的更大型工作也要使用同一證書。版權和許可宣告必須保留。貢獻者需明確提供專利權授權。

不要讓你的開源專案「裸奔」,一文了解開源證書

不要讓你的開源專案「裸奔」,一文了解開源證書

對於 copyleft 強度更高的 GNU AGPLv3,其要求在使用經過修改的該許可授權的程式碼在網路上提供服務時,同時也必須公開該服務所用的修改版的完整原始碼。

 而對於 copyleft 強度更低的 GNU LGPLv3,其許可:當通過介面方式提供已有該許可證的軟體時,更大型的工作可以基於不同的條款分發,也無需提供該更大型工作的原始碼。 

除此之外,軟體專案常用的開源證書還有 Mozilla Public License 2.0、Apache License 2.0、Boost Software License 1.0、The Unlicense 等,它們都有各自不同的許可許可權範圍以及要求。

非軟體證書

除了用於開源軟體專案的證書之外,也有針對非軟體工作的證書。當然,開源軟體證書基本也都可以用於非軟體的工作,而且也往往也是最好的選擇,尤其是當證書許可的工作是可以編輯或製作不同的版本時(比如開源硬體設計)。下面介紹一些針對不同型別的非軟體工作的證書: 

資料、媒體內容等 

CC0-1.0、CC-BY-4.0 、CC-BY-SA-4.0 是可用於從資料集到視訊等非軟體材料的開放證書。注意,CC-BY-4.0 和 CC-BY-SA-4.0 不應該用於軟體。 

文件 

任何開源軟體證書或用於媒體內容的開放證書都可用於軟體文件。如果你為你的軟體和文件使用不同的證書,一定要確保文件中給出的原始碼示例是用軟體證書授權的。

字型 

SIL Open Font License 1.1 能夠保證字型開放,但同時也讓它們可以在其它工作中被自由地使用。 

混合專案

如果你的專案包含軟體和其它材料,你可以包含多個證書,只要你明確指定哪個證書適用於該專案的哪些部分。

不使用證書

當你在做一項創意工作(包括程式碼)時,該工作預設是有專屬版本的。除非你使用一個證書明確說明許可許可權,那麼其他人都不能複製、分發或修改你的工作,因為這可能面臨著被下架、索賠和起訴的風險。如果該工作還有其他貢獻者(每個人都是一個版權所有者),那麼就沒人能用它了,包括你自己。

即使在缺少證書檔案時,你也可能會授予一些許可權,因為當你在某些網站上釋出原始碼時需要接受一些服務條款。舉個例子,如果你在 GitHub 的一個公共庫中釋出你的原始碼,那麼你就接受了該網站的服務條款,也就是說你允許其他使用者檢視和分叉你的庫。如果在特定情況中使用了版許可權制和例外,那麼其他人可能還需要你的許可。但是,不管是網站服務條款還是法律指定的版許可權制,都不足以支援人們希望在公共程式碼託管方面所尋求的合作,比如開源證書所提供的那種實驗、修改和共享授權。

不提供證書完全無需任何操作。但是,你也許需要在顯眼的位置(比如 README)新增一個版權注意和宣告,表明你不提供任何證書,這樣使用者就不會認為你忽視了這一點。如果你希望在你的無證書專案中接受其他人的貢獻,你可能還需要和你的律師談談,新增一個貢獻者宣告,以便你能夠維護來自貢獻者的版權許可,即便你並不提供同樣的許可權。

你選擇「無證書」的意圖可能並不是禁止人們使用你的程式碼。有的開源證書允許人們在使用你的程式碼時維持你的版權。如果你的目標是完全拋棄版許可權制,那麼試試公共領域專用的證書:The Unlicense

使用者該如何應對無證書的情況?

如果你發現某個軟體沒有證書,那麼這通常意味著你無權使用、修改和共享該軟體。儘管 GitHub 上的程式碼託管可能讓你可以檢視和分叉程式碼,但這並不意味著你有權以任何目的使用、修改和共享該軟體。

你有如下選擇:

  • 懇請維護者新增一個證書。除非該軟體明確說明不允許使用,否則缺少證書多半是因為疏忽。如果該軟體託管在 GitHub 這樣的網站上,那麼可以開一個問題,要求其提供一個證書。如果你膽子夠大,而且你知道什麼證書是最合適的,那麼可以提出一個 pull 請求來新增證書。

  • 不要使用這個軟體。尋找或建立有開源證書的替代軟體。

  • 協商獲取私人授權。叫上你的律師。

參考連結:

https://choosealicense.com/
https://github.com/github/choosealicense.com

相關文章