0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

【RT-Thread學(xué)習(xí)筆記】常見開源許可協(xié)議的區(qū)別與聯(lián)系

嵌入式物聯(lián)網(wǎng)開發(fā) ? 來源:嵌入式物聯(lián)網(wǎng)開發(fā) ? 作者:嵌入式物聯(lián)網(wǎng)開發(fā) ? 2022-07-30 11:58 ? 次閱讀

作為一個軟件開發(fā)人員,你一定也是天天接觸一些開源軟件,比如一些開源的軟件框架,比如開源的操作系統(tǒng)。這里大名鼎鼎就是Linux操作系統(tǒng)了,在服務(wù)器領(lǐng)域和嵌入式開發(fā),它決定是大神中的大神級別的存在。

那么,就算我們學(xué)會了這么多的開源軟件,我們真的就了解這些開源軟件使用的【開源許可協(xié)議】嗎?這年代,不會還真有人理解成:【開源就是免費】吧?

通過閱讀本文,你講會了解到以下幾部分內(nèi)容:

  • 開源許可協(xié)議是什么及它的來源
  • 開源許可協(xié)議之間的區(qū)別與聯(lián)系
  • 幾種常見開源許可協(xié)議的主要內(nèi)容
  • 學(xué)習(xí)開源許可協(xié)議的意義

一、開源許可協(xié)議是什么及它的來源

開源許可協(xié)議是指開源社區(qū)為了維護(hù)作者和貢獻(xiàn)者的合法權(quán)利,保證軟件不被一些商業(yè)機(jī)構(gòu)或個人竊取,影響軟件的發(fā)展而開發(fā)的協(xié)議。它的中文名:開源許可協(xié)議;外文名:open source license

開源許可協(xié)議是怎么來的呢?

自由軟件/開源軟件是自由的,源代碼開放的,我們可自由下載安裝和使用。

人們不太容易區(qū)分一個軟件是否真正開源的根本原因,在于開源研究院認(rèn)可的許可有60多種。但在這60多種許可中,有一個許可明顯主宰著開源世界。迪博納說:“GPL(General Public License,通用性公開許可協(xié)議)是當(dāng)今開源世界中最重要的許可。”根據(jù)迪博納引述的Google所進(jìn)行的研究,基于GPL的開源代碼在所有開源軟件中占45%---50%。

二、開源許可協(xié)議之間的區(qū)別與聯(lián)系

為了能夠讓大家更加直觀地了解到,各種開源許可協(xié)議之間的區(qū)別與聯(lián)系,我參考了了一些資料,重新畫了這一張圖,供大家參考。下面的內(nèi)容,我將會圍繞這張圖來展開。

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?編輯這張就很清晰地描述了6種常見的開源許可協(xié)議之間的區(qū)別與聯(lián)系,主要圍繞的就是幾個核心問題:

  • 修改源代碼后,是否允許閉源?
  • 每一個修改過后的文件,是否都必須放置版權(quán)說明?
  • 是否需要對每一個修改過的文件提供說明文檔?
  • 新增代碼是否需要使用同樣的許可證?
  • 衍生軟件的廣告是否可以使用你的名字進(jìn)行促銷?

三、幾種常見開源許可協(xié)議的主要內(nèi)容

說起各式各樣的開源許可協(xié)議,我們不得不提起GNU,它的全稱是“GNU's Not Unix!”(GNU并非Unix?。┑氖鬃帜高f歸縮寫。

1985年Richard Stallman又創(chuàng)立了自由軟件基金會(Free Software Foundation)來為GNU計劃提供技術(shù)、法律以及財政支持。盡管GNU計劃大部分時候是由個人自愿無償貢獻(xiàn),但FSF有時還是會聘請程序員幫助編寫。當(dāng)GNU計劃開始逐漸獲得成功時,一些商業(yè)公司開始介入開發(fā)和技術(shù)支持。當(dāng)中最著名的就是之后被Red Hat兼并的 Cygnus Solutions。

正因為有了GNU計劃的大力推廣,后面的Linux才逐漸發(fā)展壯大,直至今日,它已經(jīng)走到30個年頭,在服務(wù)器領(lǐng)域可謂是一枝獨秀。

也正因為有了Linux的蓬勃發(fā)展,慢慢才看到了越來越多的開源軟件走向大眾視野,整個軟件行業(yè)才走向了發(fā)展的快車道,今后也會是長盛不衰,勇往直前。


下面著重說一下各大流行的開源許可協(xié)議的核心內(nèi)容。

1、Apache開源許可協(xié)議

Apache (Apache License) :Apache許可協(xié)議,一般常用是2.0版本,Apache 2.0許可證是ASF(Apache Software Foundation,Apache軟件基金會)在2004年發(fā)布的,以幫助ASF實現(xiàn)其目標(biāo):“通過開源軟件開發(fā)協(xié)作,提供可靠且長久不衰的軟件產(chǎn)品”。ASF出品的軟件一般都采用Apache 2.0許可證。當(dāng)然,非ASF的項目也可以使用,Apache許可證設(shè)計出來是供所有人使用的。

它的核心內(nèi)容如下:

你可以隨便用!不會因版權(quán)和專利找你麻煩的!

不能用我的商標(biāo)!

你分發(fā)本作品或衍生作品時,可以不再提供源碼!

你在分發(fā)時,必須做到:

1)帶上本許可證!

2)保留本軟件的所有版權(quán)、專利等說明!

3)你改過的文件,你得說改了哪!

4)NOTICE文件中的信息得保留!

5)在遵循本許可證的條件下,你可以再許可!

6)本作品就這樣了,我不會負(fù)任何責(zé)任的!你想負(fù)責(zé)你可以負(fù),但別拉上我!

2、MIT開源許可協(xié)議

MIT (Massachusetts Institute of Technology):MIT許可協(xié)議之名源自麻省理工學(xué)院,又稱“X許可協(xié)議”或“X11許可協(xié)議”。

MIT內(nèi)容與三條款BSD許可證(3-clause BSD license)內(nèi)容頗為近似,但是賦予軟件被授權(quán)人更大的權(quán)利與更少的限制。

它的核心內(nèi)容是:

1)被授權(quán)人有權(quán)利使用、復(fù)制、修改、合并、出版發(fā)行、散布、再授權(quán)及販?zhǔn)圮浖败浖母北尽?/strong>

2)被授權(quán)人可根據(jù)程式的需要修改授權(quán)條款為適當(dāng)?shù)膬?nèi)容。

3)在軟件和軟件的所有副本中都必須包含版權(quán)聲明和許可聲明。

此授權(quán)條款并非屬copyleft的自由軟件授權(quán)條款,允許在自由/開放源碼軟件或非自由軟件(proprietary software)所使用。

此亦為MIT與BSD(The BSD license, 3-clause BSD license)本質(zhì)上不同處。

MIT條款可與其他授權(quán)條款并存。另外,MIT條款也是自由軟件基金會FSF)所認(rèn)可的自由軟件授權(quán)條款,與GPL相容。

相對于BSD開源許可協(xié)議,MIT開源許可協(xié)議是當(dāng)下流行的開源許可協(xié)議中【最為寬松】的許可協(xié)議。

3、BSD開源許可協(xié)議

BSD (Berkeley Software Distribution) : 伯克利軟件分發(fā)許可協(xié)議。

BSD開源協(xié)議是一個給予使用者很大自由的協(xié)議?;旧鲜褂谜呖梢?為所欲為",可以自由的使用,修改源代碼,也可以將修改后的代碼作為開源或者專有軟件再發(fā)布。

但"為所欲為"的前提是當(dāng)你發(fā)布使用了BSD協(xié)議的代碼,或者以BSD協(xié)議代碼為基礎(chǔ)做二次開發(fā)自己的產(chǎn)品時,需要滿足一些條件。

它的核心內(nèi)容是:

1)如果再發(fā)布的產(chǎn)品中包含源代碼,則在源代碼中必須帶有原來代碼中的BSD協(xié)議。

2)如果再發(fā)布的只是二進(jìn)制類庫/軟件,則需要在類庫/軟件的文檔和版權(quán)聲明中包含原來代碼中的BSD協(xié)議。

3)不可以用開源代碼的作者/機(jī)構(gòu)名字和原來產(chǎn)品的名字做市場推廣。

可以說BSD開源許可協(xié)議是當(dāng)下流行的開源許可協(xié)議中【較為寬松】的許可協(xié)議。

4、MPL開源許可協(xié)議

MPL (Mozilla Public License):Mozilla公共許可協(xié)議。

MPL是The Mozilla Public License的簡寫,是1998年初Netscape的 Mozilla小組為其開源軟件項目設(shè)計的軟件許可證。MPL許可證出現(xiàn)的最重要原因就是,Netscape公司認(rèn)為GPL許可證沒有很好地平衡開發(fā)者對 源代碼的需求和他們利用源代碼獲得的利益。同著名的GPL許可證和BSD許可證相比,MPL在許多權(quán)利與義務(wù)的約定方面與它們相同(因為都是符合OSIA 認(rèn)定的開源軟件許可證)

它的核心內(nèi)容是:

1)允許免費重發(fā)布、免費修改,但要求修改后的代碼版權(quán)歸軟件的發(fā)起者。

2)這種授權(quán)維護(hù)了商業(yè)軟件的利益,它要求基于這種軟件的修改無償貢獻(xiàn)版權(quán)給該軟件。這樣,圍繞該軟件的所有代碼得版權(quán)都集中在發(fā)起開發(fā)人得手中。

3)但MPL是允許修改,無償使用的。

4)MPL軟件對鏈接沒有要求。(要求假如你修改了一個基于MPL協(xié)議的源代碼,則必須列入或公開你所做的修改,假如其他源代碼不是基于MPL則不需要公開其源代碼)

5、GPL開源許可協(xié)議

GPL (GNU General Public License) :GNU通用公共許可協(xié)議。

GNU通用公共許可協(xié)議是一個被廣泛使用的自由軟件許可協(xié)議條款,GPL 保證了所有開發(fā)者的權(quán)利,同時為使用者提供了足夠的復(fù)制,分發(fā),修改的權(quán)利。

它的核心內(nèi)容是:

1)可自由復(fù)制:你可以將軟件復(fù)制到你的電腦,你客戶的電腦,或者任何地方。復(fù)制份數(shù)沒有任何限制。

2)可自由分發(fā):在你的網(wǎng)站提供他人下載,拷貝到U盤送人。

3)可用來盈利:你可以在分發(fā)軟件的時候收費,但你必須在收費前向你的客戶提供該軟件的 GNU GPL 許可協(xié)議,以便讓他們知道,他們可以從別的渠道免費得到這份軟件,以及你收費的理由。

4)可自由修改:如果你想添加或刪除某個功能,沒問題,如果你想在別的項目中使用部分代碼,也沒問題,唯一的要求是,使用了這段代碼的項目也必須使用 GPL 協(xié)議。

需要注意的是,分發(fā)的時候,需要明確提供源代碼和二進(jìn)制文件,另外,用于某些程序的某些協(xié)議有一些問題和限制,使用 GPL 協(xié)議,你必須在源代碼代碼中包含相應(yīng)信息,以及協(xié)議本身。

6、LGPL開源許可協(xié)議

LGPL (GNU Lesser General Public License) :GNU寬通用公共許可協(xié)議

GNU 還有另外一種協(xié)議,叫做 LGPL (Lesser General Public Licence),它對產(chǎn)品所保留的權(quán)利比 GPL 少,總的來說,LGPL 適合那些用于非 GPL 或非開源產(chǎn)品的開源類庫或框架。因為 GPL 要求,使用了 GPL 代碼的產(chǎn)品必須也使用 GPL 協(xié)議,開發(fā)者不允許將 GPL 代碼用于商業(yè)產(chǎn)品。LGPL 繞過了這一限制。

LGPL是GPL的變種,也是GNU為了得到更多的甚至是商用軟件開發(fā)商的支持而提出的。與GPL的最大不同是,它有以下幾個核心內(nèi)容:

1)可以私有使用LGPL授權(quán)的自由軟件;

2)開發(fā)出來的新軟件可以是私有的而不需要是自由軟件;

3)任何公司在使用自由軟件之前應(yīng)該保證在LGPL或其它GPL變種的授權(quán)下。

四、學(xué)習(xí)開源許可協(xié)議的意義

通過對上面幾種常見的開源許可協(xié)議的學(xué)習(xí),至少我們肯定已經(jīng)打破了【開源就是免費】的固化思想,也了解到了【開源并不是簡簡單單把源代碼公開而已】。

從上面的分析,我們可以簡單對上面6中常見開源許可協(xié)議在寬松到嚴(yán)謹(jǐn)?shù)姆较蜃鰝€簡單排序:

MIT > BSD > Apache > LGPL > Mozalla (MPL) > GPL

在今后使用/學(xué)習(xí)一些開源軟件/框架的時候,多一個心眼,了解一下它使用的是什么開源許可協(xié)議,如果你想基于這個開源軟件/框架進(jìn)行一些商業(yè)行為,請務(wù)必了解清楚該開源許可協(xié)議的核心內(nèi)容,以免將來在版本問題上受到法律的制裁。

好了,本期關(guān)于開源許可協(xié)議的介紹就到這里了,感興趣或者有疑問的,歡迎留言評論。謝謝大家。


參考文章:

百度百科開源許可協(xié)議

幾種常見的許可協(xié)議

逐句深扒 Apache 許可協(xié)議原文,一文看懂!

詳細(xì)介紹 MPL (Mozilla Public License) 協(xié)議

幾種開源協(xié)議的比較

?

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 開源
    +關(guān)注

    關(guān)注

    3

    文章

    3153

    瀏覽量

    42096
  • 許可協(xié)議
    +關(guān)注

    關(guān)注

    0

    文章

    4

    瀏覽量

    5787
  • RT-Thread
    +關(guān)注

    關(guān)注

    31

    文章

    1240

    瀏覽量

    39484
收藏 人收藏

    評論

    相關(guān)推薦

    RT-Thread學(xué)習(xí)筆記】使用scons命令生成靜態(tài)庫

    RT-Thread學(xué)習(xí)筆記】如何使用scons 命令中buildlib的生成靜態(tài)庫?
    的頭像 發(fā)表于 07-27 09:13 ?5618次閱讀
    【<b class='flag-5'>RT-Thread</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b>】使用scons命令生成靜態(tài)庫

    RT-Thread學(xué)習(xí)筆記】RISC-V匯編基礎(chǔ)三大塊知識

    RT-Thread學(xué)習(xí)筆記】RISC-V匯編基礎(chǔ)的三大塊知識
    的頭像 發(fā)表于 07-30 11:01 ?2624次閱讀
    【<b class='flag-5'>RT-Thread</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b>】RISC-V匯編基礎(chǔ)三大塊知識

    RT-Thread學(xué)習(xí)筆記開源許可協(xié)議的核心(思維導(dǎo)圖)

    開源許可協(xié)議常見開源許可協(xié)議的核心內(nèi)容(思維導(dǎo)圖
    的頭像 發(fā)表于 07-30 12:02 ?1765次閱讀
    【<b class='flag-5'>RT-Thread</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b>】<b class='flag-5'>開源</b><b class='flag-5'>許可</b><b class='flag-5'>協(xié)議</b>的核心(思維導(dǎo)圖)

    RT-Thread Nano入門學(xué)習(xí)筆記

    RT-Thread Nano入門學(xué)習(xí)筆記
    發(fā)表于 11-26 12:36 ?20次下載
    <b class='flag-5'>RT-Thread</b> Nano入門<b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b>

    RT-Thread 應(yīng)用筆記 - RTC Alarm 組件的使用

    RT-Thread 應(yīng)用筆記 - 不正確使用LOG也會引發(fā)hard faultRT-Thread 應(yīng)用筆記 - RTC Alarm 組件的使用RT-
    發(fā)表于 01-25 18:18 ?10次下載
    <b class='flag-5'>RT-Thread</b> 應(yīng)用<b class='flag-5'>筆記</b> - RTC Alarm 組件的使用

    RT-Thread 內(nèi)核學(xué)習(xí)筆記 - 理解defunct僵尸線程

    RT-Thread 內(nèi)核學(xué)習(xí)筆記 - 內(nèi)核對象rt_objectRT-Thread 內(nèi)核學(xué)習(xí)筆記
    發(fā)表于 01-25 18:19 ?8次下載
    <b class='flag-5'>RT-Thread</b> 內(nèi)核<b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b> - 理解defunct僵尸線程

    RT-Thread 內(nèi)核學(xué)習(xí)筆記 - 設(shè)備模型rt_device的理解

    RT-Thread 內(nèi)核學(xué)習(xí)筆記 - 內(nèi)核對象rt_objectRT-Thread 內(nèi)核學(xué)習(xí)筆記
    發(fā)表于 01-25 18:19 ?8次下載
    <b class='flag-5'>RT-Thread</b> 內(nèi)核<b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b> - 設(shè)備模型<b class='flag-5'>rt</b>_device的理解

    RT-Thread 內(nèi)核學(xué)習(xí)筆記 - 內(nèi)核對象鏈表結(jié)構(gòu)深入理解

    RT-Thread 內(nèi)核學(xué)習(xí)筆記 - 內(nèi)核對象rt_objectRT-Thread 內(nèi)核學(xué)習(xí)筆記
    發(fā)表于 01-25 18:23 ?6次下載
    <b class='flag-5'>RT-Thread</b> 內(nèi)核<b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b> - 內(nèi)核對象鏈表結(jié)構(gòu)深入理解

    RT-Thread 內(nèi)核學(xué)習(xí)筆記 - 內(nèi)核對象初始化鏈表組織方式

    RT-Thread 內(nèi)核學(xué)習(xí)筆記 - 內(nèi)核對象rt_objectRT-Thread 內(nèi)核學(xué)習(xí)筆記
    發(fā)表于 01-25 18:24 ?3次下載
    <b class='flag-5'>RT-Thread</b> 內(nèi)核<b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b> - 內(nèi)核對象初始化鏈表組織方式

    RT-Thread 內(nèi)核學(xué)習(xí)筆記 - 內(nèi)核對象操作API

    RT-Thread 內(nèi)核學(xué)習(xí)筆記 - 內(nèi)核對象rt_objectRT-Thread 內(nèi)核學(xué)習(xí)筆記
    發(fā)表于 01-25 18:26 ?7次下載
    <b class='flag-5'>RT-Thread</b> 內(nèi)核<b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b> - 內(nèi)核對象操作API

    RT-Thread學(xué)習(xí)筆記 RT-Thread的架構(gòu)概述

    RT-Thread 簡介 作為一名 RTOS 的初學(xué)者,也許你對 RT-Thread 還比較陌生。然而,隨著你的深入接觸,你會逐漸發(fā)現(xiàn) RT-Thread 的魅力和它相較于其他同類型 RTOS
    的頭像 發(fā)表于 07-09 11:27 ?4334次閱讀
    <b class='flag-5'>RT-Thread</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b> <b class='flag-5'>RT-Thread</b>的架構(gòu)概述

    RT-Thread學(xué)習(xí)筆記】Makefile的FORCE

    RT-Thread學(xué)習(xí)筆記】十分鐘學(xué)會Makefile的FORCE
    的頭像 發(fā)表于 07-30 13:55 ?2184次閱讀
    【<b class='flag-5'>RT-Thread</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b>】Makefile的FORCE

    RT-Thread學(xué)習(xí)筆記】如何抓取終端的網(wǎng)絡(luò)報文

    RT-Thread學(xué)習(xí)筆記】如何抓取終端的網(wǎng)絡(luò)報文?
    的頭像 發(fā)表于 07-30 13:57 ?2580次閱讀
    【<b class='flag-5'>RT-Thread</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b>】如何抓取終端的網(wǎng)絡(luò)報文

    RT-Thread學(xué)習(xí)筆記】用memwatch排除內(nèi)存泄露

    RT-Thread學(xué)習(xí)筆記】使用memwatch排除內(nèi)存泄露
    的頭像 發(fā)表于 07-30 14:01 ?2079次閱讀
    【<b class='flag-5'>RT-Thread</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b>】用memwatch排除內(nèi)存泄露

    基于RT-Thread Studio學(xué)習(xí)

    前期準(zhǔn)備:從官網(wǎng)下載 RT-Thread Studio,弄個賬號登陸,開啟rt-thread學(xué)習(xí)之旅。
    的頭像 發(fā)表于 05-15 11:00 ?3533次閱讀
    基于<b class='flag-5'>RT-Thread</b> Studio<b class='flag-5'>學(xué)習(xí)</b>