開源愛好者必看!開源許可證基礎知識掃盲

阮一峯 dom

 

做爲一個開發者,若是你打算開源本身的代碼,千萬不要忘記,選擇一種開源許可證(license)。ide

許多開發者對開源許可證瞭解不多,不清楚有哪些許可證,應該怎麼選擇。本文介紹開源許可證的基本知識,主要參考了 OpenSource.com (1,2)。ui

 

1、什麼是開源許可證spa

開源許可證是一種法律許可。經過它,版權擁有人明確容許,用戶能夠免費地使用、修改、共享版權軟件。設計

版權法默認禁止共享,也就是說,沒有許可證的軟件,就等同於保留版權,雖然開源了,用戶只能看看源碼,不能用,一用就會侵犯版權。因此軟件開源的話,必須明確地授予用戶開源許可證。排序

2、開源許可證的種類ci

目前,國際公認的開源許可證共有80多種。它們的共同特徵是,都容許用戶免費地使用、修改、共享源碼,可是都有各自的使用條件。開發

若是一種開源許可證沒有任何使用條件,連保留做者信息都不須要,那麼就等同於放棄版權了。這時,軟件能夠直接聲明進入"公共領域"(public domain)。rem

根據使用條件的不一樣,開源許可證分紅兩大類。源碼

· 寬鬆式(permissive)許可證

· Copyleft 許可證

3、寬鬆式許可證

3.1 特色

寬鬆式許可證(permissive license)是最基本的類型,對用戶幾乎沒有限制。用戶能夠修改代碼後閉源。

它有三個基本特色。

1)沒有使用限制

用戶可使用代碼,作任何想作的事情。

2)沒有擔保

不保證代碼質量,用戶自擔風險。

3)披露要求(notice requirement)

用戶必須披露原始做者。

3.2 常見許可證

常見的寬鬆式許可證有四種。它們都容許用戶任意使用代碼,區別在於要求用戶遵照的條件不一樣。

1)BSD(二條款版)

分發軟件時,必須保留原始的許可證聲明。

2) BSD(三條款版)

分發軟件時,必須保留原始的許可證聲明。不得使用原始做者的名字爲軟件促銷。

3)MIT

分發軟件時,必須保留原始的許可證聲明,與 BSD(二條款版)基本一致。

4)Apache 2

分發軟件時,必須保留原始的許可證聲明。凡是修改過的文件,必須向用戶說明該文件修改過;沒有修改過的文件,必須保持許可證不變。

4、Copyleft 許可證

4.1 Copyleft 的含義

Copyleft 是理查德·斯托曼發明的一個詞,做爲 Copyright (版權)的反義詞。

Copyright 直譯是"複製權",這是版權制度的核心,意爲不經許可,用戶無權複製。做爲反義詞,Copyleft 的含義是不經許可,用戶能夠隨意複製。

可是,它帶有前提條件,比寬鬆式許可證的限制要多。

若是分發二進制格式,必須提供源碼

修改後的源碼,必須與修改前保持許可證一致

不得在原始許可證之外,附加其餘限制

上面三個條件的核心就是:修改後的 Copyleft 代碼不得閉源。

4.2 常見許可證

常見的 Copyleft 許可證也有四種(對用戶的限制從最強到最弱排序)。

1)Affero GPL (AGPL)

若是雲服務(即 SAAS)用到的代碼是該許可證,那麼雲服務的代碼也必須開源。

2)GPL

若是項目包含了 GPL 許可證的代碼,那麼整個項目都必須使用 GPL 許可證。

3)LGPL

若是項目採用動態連接調用該許可證的庫,項目能夠不用開源。

4)Mozilla(MPL)

只要該許可證的代碼在單獨的文件中,新增的其餘文件能夠不用開源。

5、常見問題

本節回答一些開源許可證的常見問題。

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 代碼(法律上叫作"中止侵害"),而不會強制要求你將源碼開源,由於《版權法》裏面的"違約救濟"沒有提到違約者必須開源,只提到能夠中止侵害和賠償損失。

相關文章
相關標籤/搜索