大家好,我是小麥,今天和大家分享一些開源協議的知識。
這些協議縮寫詞在各種代碼、文檔中隨處可見,比如GPL、BSD、MIT、Mozilla、Apache和LGPL等等。
github新建倉庫時協議選擇
這么多協議,我們了解的有多少呢?
作為一名專業的嵌入式系統開發人員,了解這些開源協議是一種基本素養,特別是當你自己要開源一些東西的時候該如何選擇開源協議就變得非常重要了!
下面對常見的幾種做一下簡單的介紹。
開源協議的作用
開源協議規定了你在使用開源軟件時的權利和責任,也就是規定了你可以做什么,不可以做什么。
開源協議雖然不一定具備法律效力,但是當涉及軟件版權糾紛時,開源協議也是非常重要的證據之一。
對于準備編寫一款開源軟件的開發人員,也非常建議先了解一下當前最熱門的開源許可協議,選擇一個合適的開源許可協議來最大限度保護自己的軟件權益。
如何選擇開源協議
世界上的開源許可證(Open Source License)大概有上百種,今天我們來介紹下幾種我們常見的開源協議。
大致有GPL、BSD、MIT、Mozilla、Apache和LGPL這6種。
點擊放大
下面通過這幾張圖,大家可以一目了然的選擇合適的開源協議:
點擊放大
烏克蘭程序員 Paul Bagwell 畫了一張分析圖
單擊放大 單擊放大
詳細介紹常用開源協議
GNU GPL協議
GNU GPL具體為(GNU General Public License,GNU通用公共許可證)。
只要軟件中包含了遵循 GPL 協議的產品或代碼,該軟件就必須也遵循 GPL 許可協議,也就是必須開源免費,不能閉源收費,因此這個協議并不適合商用軟件。
遵循 GPL 協議的開源軟件數量極其龐大,包括 Linux 系統在內的大多數的開源軟件都是基于這個協議的。
BSD協議
BSD協議具體為(Berkeley Software Distribution,伯克利軟件發布版)協議。
BSD 協議給予用戶極大的權利,用戶可以使用、修改和重新發布遵循該許可的軟件,并且可以將軟件作為商業軟件發布和銷售,前提是需要滿足下面三個條件:
如果再發布的軟件中包含源代碼,則源代碼必須繼續遵循 BSD 許可協議。
如果再發布的軟件中只有二進制程序,則需要在相關文檔或版權文件中聲明原始代碼遵循了 BSD 協議。
不允許用原始軟件的名字、作者名字或機構名稱等進行市場推廣。
BSD 對商業比較友好,很多公司在選用開源產品的時候都首選 BSD 協議,因為可以完全控制這些第三方的代碼,甚至在必要的時候可以修改或者二次開發。
Apache 協議
Apache 協議具體為許可證版本(Apache License Version)協議,Apache 和 BSD 類似,都適用于商業軟件。
Apache 協議在為開發人員提供版權及專利許可的同時,允許用戶擁有修改代碼及再發布的自由。
Hadoop、Apache HTTP Server、MongoDB 等項目都是基于該許可協議研發的,程序開發人員在開發遵循該協議的軟件時,要嚴格遵守下面的四個條件:
該軟件及其衍生品必須繼續使用 Apache 許可協議。
如果修改了程序源代碼,需要在文檔中進行聲明。
若軟件是基于他人的源代碼編寫而成的,則需要保留原始代碼的協議、商標、專利聲明及其他原作者聲明的內容信息。
如果再發布的軟件中有聲明文件,則需在此文件中標注 Apache 許可協議及其他許可協議。
Apache 協議還有以下需要說明的地方: 永久權利:一旦被授權,永久擁有。
全球范圍的權利:在一個國家獲得授權,適用于所有國家。
授權不可撤消: 一旦獲得授權,沒有任何人可以取消。比如,你基于該產品代碼開發了衍生產品,你不用擔心會在某一天被禁止使用該代碼。
MIT協議
MIT協議具體為(Massachusetts Institute of Technology)協議,又稱「X條款」或「X11條款」。
目前限制最少的開源許可協議之一(比 BSD 和 Apache 的限制都少),只要程序的開發者在修改后的源代碼中保留原作者的許可信息即可,因此普遍被商業軟件所使用。
使用 MIT 協議的軟件有 PuTTY、X Window System、Ruby on Rails、Lua 5.0 onwards、Mono 等。
GUN LGPL協議
GUN LGPL協議具體是(GNU Lesser General Public License,GNU 寬通用公共許可證)。LGPL 是 GPL 的一個衍生版本,也被稱為 GPL V2,該協議主要是為類庫設計的開源協議。
LGPL 允許商業軟件通過類庫引用(link)的方式使用 LGPL 類庫,而不需要開源商業軟件的代碼。這使得采用 LGPL 協議的開源代碼可以被商業軟件作為類庫引用并發布和銷售。
但是如果修改 LGPL 協議的代碼或者衍生品,則所有修改的代碼,涉及修改部分的額外代碼和衍生的代碼都必須采用 LGPL 協議。
因此LGPL協議的開源代碼很適合作為第三方類庫被商業軟件引用,但不適合希望以 LGPL 協議代碼為基礎,通過修改和衍生的方式做二次開發的商業軟件采用。
-
嵌入式系統
+關注
關注
41文章
3566瀏覽量
129224 -
開源
+關注
關注
3文章
3247瀏覽量
42400 -
代碼
+關注
關注
30文章
4747瀏覽量
68348
原文標題:寫了這么多年代碼,開源協議你確定自己真的知道嗎?
文章出處:【微信號:zhuyandz,微信公眾號:FPGA之家】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論