阮一峰:開源許可證基礎知識掃盲 - OSCHINA - 中文開源技術交流社區

2020-12-11 開源中國

作為一個開發者,如果你打算開源自己的代碼,千萬不要忘記,選擇一種開源許可證(license)。

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

一、什麼是開源許可證

開源許可證是一種法律許可。通過它,版權擁有人明確允許,用戶可以免費地使用、修改、共享版權軟體。

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

二、開源許可證的種類

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

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

根據使用條件的不同,開源許可證分成兩大類。

  • 寬鬆式(permissive)許可證

  • Copyleft 許可證

三、寬鬆式許可證

3.1 特點

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

它有三個基本特點。

(1)沒有使用限制

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

(2)沒有擔保

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

(3)披露要求(notice requirement)

用戶必須披露原始作者。

3.2 常見許可證

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

(1)BSD(二條款版)

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

(2) BSD(三條款版)

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

(3)MIT

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

(4)Apache 2

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

四、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.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 代碼(法律上叫做"停止侵害"),而不會強制要求你將源碼開源,因為《版權法》裡面的"違約救濟"沒有提到違約者必須開源,只提到可以停止侵害和賠償損失。

(完)

作者: 阮一峰

原標題:開源許可證教程

相關焦點

  • 阮一峰:開源許可證基礎知識掃盲
    許多開發者對開源許可證了解很少,不清楚有哪些許可證,應該怎麼選擇。本文介紹開源許可證的基本知識,主要參考了 OpenSource.com (1,2)。一、什麼是開源許可證開源許可證是一種法律許可。通過它,版權擁有人明確允許,用戶可以免費地使用、修改、共享版權軟體。
  • 開放源碼是開源軟體嗎? - OSCHINA - 中文開源技術交流社區
    所以,與此類似的,在中文裡,我們可以認為:「開放原始碼」是一個動詞+一個名詞。而「開源」則是一個特定的詞彙。作為動詞,我們說將某某軟體開源,是一種行為。作為形容詞,我們稱某某軟體是一個開源(的)軟體,不僅僅是指我們能夠獲取到他的原始碼。
  • 開源軟體蓄勢待發 - OSCHINA - 中文開源技術交流社區
    相關內容11家值得關注的開源技術公司優異的技術特性和相對低廉的價格的結合使得開源產品廠商比以往有了更多進入企業網絡的路徑。Likewise公司執行長 Barry Crist 稱:「在網絡泡沫時期,由於Linux比SPARC上的Solaris更為便宜,開源產品逐漸由Unix轉移到了Linux。
  • Delta Lake 進入 Linux 基金會 - OSCHINA - 中文開源技術交流社區
    「將 Delta Lake 引入 Linux 基金會的中立組織之下,將有助於依賴該項目的開源社區開發解決存儲和處理大數據(本地和雲端)的技術」,Linux 基金會戰略計劃副總裁 Michael Dolan 表示。
  • Git 2.4.3 發布 - OSCHINA - 中文開源技術交流社區
    Git是一個開源的分布式版本控制系統,用以有效、高速的處理從很小到非常大的項目版本管理。開源中國 Git 代碼託管平臺:http://git.oschina.net/Windows下的Git請看這裡:http://www.oschina.net/p/msysgitGit 是 Linus Torvalds 為了幫助管理 Linux 內核開發而開發的一個開放源碼的版本控制軟體
  • 關於Facebook 的 React 專利許可證 - OSCHINA - 中文開源技術交流...
    這讓我想起了之前在 Medium 讀過的一篇文章——《React, Facebook, and the Revocable Patent License, Why It’s a Paper》,我覺得那篇文章寫的不錯,而且還是一個會編程的律師寫的,所以有必要把這篇文章傳播到中文社區這邊來。
  • Netflix 的開源文化與技術 - OSCHINA - 中文開源技術交流社區
    在之前的新聞《Netflix企業文化與架構設計》一文中我們介紹了Netflix高擴展的企業文化與架構,而作為一家在線影片租賃提供商Netflix之所以能夠在如此大量的用戶、海量的數據、複雜的拓撲結構下取得成功,離不開其背後的開源文化與技術
  • JavaFX 2012:徹底開源 - OSCHINA - 中文開源技術交流社區
    其中將JavaFX完全開源赫列榜首——在2011年的JavaOne大會上,Oracle已做出保證將開源整個JavaFX平臺。 以下是Richard Bair列出的2012年JavaFX 10大目標: 1.
  • 開源社區的「忌諱」話題 - OSCHINA - 中文開源技術交流社區
    加拿大資深開源技術記者Bruce Byfield較早前發表了一篇名為「開源社區從來不想承認的九大事實」(9 Things That Are Never Admitted About Open
  • 開源春天,此時不來,更待何時? - OSCHINA - 中文開源技術交流社區
    隨後 Apache 軟體基金會與 OpenStack 基金會相繼出來澄清,表示「開源軟體、開原始碼協作、參與公開電話會議或私人會議以及提供贊助資金都是不受 EAR 約束的活動,因此不應對社區產生影響」。
  • SugarCRM:開源與商業的完美結合 - OSCHINA - 中文開源技術交流社區
    他認為,在中國市場以商業為後盾的開源模式將會成為CRM軟體發展的一個趨勢。 2009年4月22日,SugarCRM在上海舉辦了精英聯合峰會,並同時宣布中國區總經理的上任。我們可以看出這是一個信號,是關於SugarCRM商業開源策略正式在中國實施的前奏。
  • Gitbook,這個開源出書平臺了不起 - OSCHINA - 中文開源技術交流社區
    GitHub充分利用了網際網路的能力,讓開發者可以方便地參與不同的項目,不要說查閱別人的代碼,修改別人的項目,是一種更高層次的交流、對話。就好像《如何閱讀一本書》裡提到的「主動閱讀」,是通過不斷了解作者核心觀念,並提出自己觀點進行碰撞的方式,讓讀者成為一名偉大的讀者。相比紙質書中作者與讀者的對話,GitHub 將兩段代碼撰寫者的溝通顯性化,不再是偷偷在旁邊的注釋裡加入自己的觀點。
  • 開源Community 對我來說意味著什麼 - OSCHINA - 中文開源技術交流...
    歲月鬥轉,我接觸了更多的領域,除了市場之外,還負責了網絡內容分發、合辦組織了會議、並共同創立最有可能是第一個專門為開源社區量身定製的德國基金會。人生哲學對於我來說,開源並不意味著僅僅是許可證模式、或開發模式,它還是相互尊重的開放心態、信任新手、對他人意見的重視、共同的目標、共同的理想等,開源還涉及數據隱私、民權、自由知識 開放標準等等。我將之總結為這是一種生活的哲學。
  • 詳解開源界的 5 大開源許可協議 - OSCHINA - 中文開源技術交流社區
    越來越多的開發者與設計者希望將自己的產品開源,以便其他人可以在他們的代碼基礎上做更多事,開源社區也因此充滿生機。
  • Web 是開源最大的成功 - OSCHINA - 中文開源技術交流社區
    開源運動廣受歡迎,並且在軟體開發史上寫下了濃重一筆。但是它影響最深遠的地方在哪呢?有史以來,最成功的開源「項目」又是什麼呢? 事實上,總體來看,Web不就是開源運動最大的成功麼? 可能最有名的例子就是隱藏域眾多網站背後的LAMP,也就是Linux、Apache、MySQL和PHP。
  • zmail 6.1版本更新 - OSCHINA - 中文開源技術交流社區
    Zmail的官方主頁:www.z-email.orgZmail的官方論壇:bbs.z-email.orgZmail的QQ群: 257959126系統要求redhat 6.x centos 6.x 64位最小安裝Zmail安裝說明:概述:(1)該安裝包為一鍵安裝包,方便快捷部署;(2)Zmail是開源郵件技術社區的最新的郵件伺服器軟體包
  • 納德拉時代下的微軟開源之路 - OSCHINA - 中文開源技術交流社區
    Office 365日前微軟開源技術團隊正式宣布,微軟旗下的Offcie 365服務將會被集成到開源教育平臺Open edx中。微軟官方對此表示:「無論是當地小學的四年級小學生,還是一位40歲每夜堅持攻讀MBA的求學者,亦或者是準備參與升職培訓的公司職員,現在都有機會享受到Open edx帶來的學習管理系統(LMS)和大規模在線課堂(MOOC)。」
  • F5 收購 NGINX - OSCHINA - 中文開源技術交流社區
    F5 是應用交付網絡(ADN)領域的全球領先廠商,其解決方案有助於整合不同的技術,以便更好地控制基礎架構,提高應用交付和數據管理能力,並使用戶能夠通過企業桌面系統和智能設備無縫、安全並更快速地接入應用。
  • 開源雲計算市場份額正在上升 - OSCHINA - 中文開源技術交流社區
    雲計算具備轉變政府機構接入IT服務方式的潛力,而開源是政府早期配置的幾種雲採用的基礎技術。
  • 華為莊表偉:三代開源社區的協作模式 - OSCHINA - 中文開源技術...
    在開源社區,事情變得有些不一樣。雖說開源社區也有「領導者」,甚至往往會有「精神領袖」,但他們並沒有暴力手段,也沒有經濟手段,甚至行政手段。因此,要協調一幫自由散漫的黑客,共同開發高質量的開源軟體,必須有更加高明的手段。由於一切都是Open的,所以:不僅代碼人人可見,開源社區的協作模式,也暴露在眾目睽睽之下。