做爲一個開發者,若是你打算開源本身的代碼,千萬不要忘記,選擇一種開源許可證(license)。html
許多開發者對開源許可證瞭解不多,不清楚有哪些許可證,應該怎麼選擇。本文介紹開源許可證的基本知識,主要參考了 OpenSource.com (1,2)。dom
開源許可證是一種法律許可。經過它,版權擁有人明確容許,用戶能夠免費地使用、修改、共享版權軟件。post
版權法默認禁止共享,也就是說,沒有許可證的軟件,就等同於保留版權,雖然開源了,用戶只能看看源碼,不能用,一用就會侵犯版權。因此軟件開源的話,必須明確地授予用戶開源許可證。ui
目前,國際公認的開源許可證共有80多種。它們的共同特徵是,都容許用戶免費地使用、修改、共享源碼,可是都有各自的使用條件。spa
若是一種開源許可證沒有任何使用條件,連保留做者信息都不須要,那麼就等同於放棄版權了。這時,軟件能夠直接聲明進入"公共領域"(public domain)。設計
根據使用條件的不一樣,開源許可證分紅兩大類。htm
- 寬鬆式(permissive)許可證
- Copyleft 許可證
寬鬆式許可證(permissive license)是最基本的類型,對用戶幾乎沒有限制。用戶能夠修改代碼後閉源。blog
它有三個基本特色。排序
(1)沒有使用限制開發
用戶可使用代碼,作任何想作的事情。
(2)沒有擔保
不保證代碼質量,用戶自擔風險。
(3)披露要求(notice requirement)
用戶必須披露原始做者。
常見的寬鬆式許可證有四種。它們都容許用戶任意使用代碼,區別在於要求用戶遵照的條件不一樣。
(1)BSD(二條款版)
分發軟件時,必須保留原始的許可證聲明。
(2) BSD(三條款版)
分發軟件時,必須保留原始的許可證聲明。不得使用原始做者的名字爲軟件促銷。
(3)MIT
分發軟件時,必須保留原始的許可證聲明,與 BSD(二條款版)基本一致。
(4)Apache 2
分發軟件時,必須保留原始的許可證聲明。凡是修改過的文件,必須向用戶說明該文件修改過;沒有修改過的文件,必須保持許可證不變。
Copyleft 是理查德·斯托曼發明的一個詞,做爲 Copyright (版權)的反義詞。
Copyright 直譯是"複製權",這是版權制度的核心,意爲不經許可,用戶無權複製。做爲反義詞,Copyleft 的含義是不經許可,用戶能夠隨意複製。
可是,它帶有前提條件,比寬鬆式許可證的限制要多。
- 若是分發二進制格式,必須提供源碼
- 修改後的源碼,必須與修改前保持許可證一致
- 不得在原始許可證之外,附加其餘限制
上面三個條件的核心就是:修改後的 Copyleft 代碼不得閉源。
常見的 Copyleft 許可證也有四種(對用戶的限制從最強到最弱排序)。
(1)Affero GPL (AGPL)
若是雲服務(即 SAAS)用到的代碼是該許可證,那麼雲服務的代碼也必須開源。
(2)GPL
若是項目包含了 GPL 許可證的代碼,那麼整個項目都必須使用 GPL 許可證。
(3)LGPL
若是項目採用動態連接調用該許可證的庫,項目能夠不用開源。
(4)Mozilla(MPL)
只要該許可證的代碼在單獨的文件中,新增的其餘文件能夠不用開源。
本節回答一些開源許可證的常見問題。
除了 Affero GPL (AGPL) ,其餘許可證都規定只有在"分發"時,才須要遵照許可證。換言之,若是不"分發",就不須要遵照。
簡單說,分發就是指將版權做品從一我的轉移到另外一我的。這意味着,若是你是本身使用,不提供給他人,就沒有分發。另外,這裏的"人"也指"法人",所以若是使用方是公司,且只在公司內部使用,也不須要遵照許可證。
雲服務(SaaS)是否構成"分發"呢?答案是不構成。因此你使用開源軟件提供雲服務,沒必要提供源碼。可是,Affero GPL (AGPL) 許可證除外,它規定雲服務也必須提供源碼。
某些許可證(Apache 2 和 GPL v3)包含明確的條款,授予用戶許可,使用軟件所包含的全部專利。
另外一些許可證(BSD、MIT 和 GPL v2)根本沒提到專利。可是通常認爲,它們默認給予用戶專利許可,不構成侵犯專利。
總得來講,除非有明確的"保留專利"的條款,使用開源軟件都不會構成侵犯專利。
全部的開源許可證都帶有"披露要求"(notice requirement),即要求軟件的分發者必須向用戶披露,軟件裏面有開源代碼。
通常來講,你只要在軟件裏面提供完整的原始許可證文本,而且披露原始做者,就知足了"披露要求"。
GPL 許可證規定,只要你的項目包含了 GPL 代碼,整個項目就都變成了 GPL。有人把這種傳染性比喻成"GPL 病毒"。
不少公司但願避開這個條款,既使用 GPL 軟件,又不把本身的專有代碼開源。理論上,這是作不到的。由於 GPL 的設計目的,就是爲了防止出現這種狀況。
可是實際上,不遵照 GPL,最壞狀況就是被起訴。若是你向法院表示沒法履行 GPL 的條件,法官只會判決你中止使用 GPL 代碼(法律上叫作"中止侵害"),而不會強制要求你將源碼開源,由於《版權法》裏面的"違約救濟"沒有提到違約者必須開源,只提到能夠中止侵害和賠償損失。
(完)