成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

一篇帶你了解GPL前世今生

系統 Linux
從事Linux開發的朋友一定都聽過GPL,那么到底什么是GPL呢?他有什么作用呢?本文給大家做詳細講解。

[[440575]]

從事Linux開發的朋友一定都聽過GPL,那么到底什么是GPL呢?他有什么作用呢?本文給大家做詳細講解。

一、GNU/GPL

在講解GPL之前,我們必須先了解什么是GNU?

1. 什么是GNU

GNU:GNU's not unix。也叫革奴計劃。

GNU的創始人,理查德·馬修·斯托曼。

GNU是一個自由的操作系統,其內容軟件完全以GPL方式發布。

這個操作系統是GNU計劃的主要目標,名稱來自**GNU's Not Unix!**的縮寫 【這種遞歸式命名方法也只有程序猿大神才能想起來】

可以說GNU也是一個軟件集合,如:Emas,gcc,bash,gawk等。

由于沒有內核(可以理解成還在實驗室里就GNU系統就被淘汰了)。

因為GNU的設計類似Unix,但它不包含具著作權的Unix代碼。

2. GNU歷史

在二戰(1939-1945)結束后,計算機產業剛剛興起的時候,閉源軟件的概念還未出生。那是個一切代碼都免費共享,可以隨意修改、再發行的時代。

后來,開始有人只發行閉源的程序,這通常是一種原始代碼幾乎不可能被單純地破譯的二進制文件。1983年,IBM成為大型企業中第一個發行閉源軟件的公司;AT&T公司緊隨其后,原本免費的Unix在更新后要價數萬美元…

平日使用的Unix突然開始收費,還如此昂貴,這讓很多人難以接受。

其中,有一個叫Richard Stallman(人稱 RMS)的人站出來了。他推出了 GNU計劃 ,希望有朝一日,從操作系統到各式應用軟件,都能免費開源得讓大家使用。

[[440576]]

而具體的辦法,就是在發布軟件的同時包括我們今天提到的 GPL 許可證。

3. 什么是GPL

GPL許可協議(GNU General Public License):只要軟件中包含有其他GPL協議的產品或代碼,那么該軟件就必須也采用GPL許可協議且開源及免費。

具有以下特點:

  • 復制自由:允許將軟件復制到任何人的電腦中,并且不限制復制的數量。
  • 傳播自由:允許以各種形式進行傳播。
  • 收費傳播:允許在各種媒介上出售該軟件,但必需提前讓買家知道這個軟件是可以免費獲得的,并解釋收費的理由(一般來講都是能夠為用戶提供某種服務,以技術服務的形式來收費)。
  • 修改自由:允許開發人員增加或刪除軟件的功能,但必須依然基于GPL許可協議授權。

4. 通俗的講下GPL到底有什么作用?

總結成一句話,修改后必須以GPL授權開源發布。

只要在代碼中加入這個名叫GPL的許可證,你就能保證軟件的用戶能夠自由地運行、研究、分享和修改你的代碼了。

而且,從你的軟件衍生出的一切修改版本,都必須遵守這個許可協議。

一個有意思的地方是,擁有代碼的人有權利用代碼開發軟件并盈利。

但是,在有人花錢買走軟件之后,這個人可以隨意把買到的軟件分享給其他人,而不必擔心侵權,甚至是被告上法庭——因為對于遵守開源協議的軟件來說,壓根不存在“盜版”的概念。

由此可見,開源協議大大地提高了軟件使用者的權利。

理解了GNU的精神,也就能理解GPL在說些什么,其實就是開源。

在現實生活中,我們受益于 GPL的地方,其實很多,幾乎所有的操作系統,除了windows,其他的幾乎都是基于linux開源代碼改寫的。

5. 舉例

以下是Linux內核中網卡DM9000的驅動程序版權聲明:

DM9000是Davicom公司生產的一款非常流行的網卡芯片。

第一個紅框聲明了代碼的版權屬于作者 Sten Wang 。第二個紅框則是說使用者需要遵守 GPL協議(GNU General Public License)。

二、GPL與Linux

Linus Torvalds 認為 GPL 是 Linux 成功的重要部分

雖然不是每個開源軟件都喜歡 GPL,但是如果沒有 GPL ,或許不會有如今的 Linux 和整個開源世界。

以下節選自Linus Torvalds自傳《知識為了好玩》

  1. 當時的演講者是理查德·斯多曼(Richard Stallman) 。 此人是自由軟件的鼓吹者。 
  2. 1983年, 他開始研究UNIX的一個替代物, 將其稱作GNU系統, 其含義是“GUN不是 
  3. UNIX”(GNU是“GNU is Not UNIX”的字首縮略語--譯注) 。 這 
  4.  
  5. 更重要的是, RMS(理查德·斯多曼希望別人這樣稱呼他) 還撰寫了《自由軟件宣 
  6. 言》 和自由軟件產權證書, 即GPL。 他首先提出的關于開放源代碼的概念完全是有意的, 
  7. 而并非出于偶然, 和UNIX最初的開放發展理念是相吻合的。 
  8.  
  9. 我后來為Linux使用的就是GPL。 就這樣, 我再一次走在了自己的前面。 
  10. 事實是, 為了使Linux有用, 我曾依賴過很多在網上免費下載的工具――我把自己 
  11. 放到了巨人的肩膀上。  
  12.  
  13. 這些免費軟件中最重要的是GCC編譯器, 它是理查德·斯多曼的杰 
  14. 作, 并且已經在公共執照協會(GPL)上注冊了版權。 在GPL條款之下, 錢不是問題, 只要 
  15. 有人愿意買, 你可以賣一百萬美元。 但是, 你必須提供軟件來源。 而得到或買到你的來源 
  16. 的人, 將擁有和你一樣多的對于該程序的。  
  17.  
  18. 這實在是很高明的一招。 我認可GPL的原則, 
  19. 但是和那些認為所有的軟件創新都應該在GPL下向全世界公開的頑固的GPL信仰者不同,我認為發明者本人有決定如何處置自己的發明的權利。 
  20. 于是, 我拋棄了自己舊有的版權聲明, 采納了GPL的內容, 一個斯多曼也曾經和他的 
  21. 律師一道簽署過的文件(因為有律師的參與, 該文件被搞得洋洋灑灑有好幾頁)。 
  22.  
  23.  我擔心, 在現實中, 如果有個美國人侵犯了我的版權, 我無法對其提起訴訟。 現在 
  24. 這仍是我的擔心。 狀告某人侵權很容易, 而我的擔心是, 有的人會即使被起訴也繼續從事 
  25. 這種違法行為, 除非加諸某種強制執行的法律行動他們才會停止。 同時我也不斷地擔心, 
  26. 在像中國這樣的地方, 企業并不承認GPL的效力, 從而也不會尊重我的版權。 
  27.  
  28. 事實上, 這些地方的法律體系對侵犯版權的制止在當時并不得力(中國已經簽署了一 
  29. 系列的國際公約, 林納斯在這里談的是1991年的情況――譯注), 而且, 為防止違法行為 
  30. 的投入在這些地方被認為是不劃算的。 大軟件公司和唱片公司曾作過努力, 但是成效不 
  31. 大。 
  32.  
  33. 不過, 事實減輕了我的擔憂。 有的人確實會暫時侵犯我的版權, 但是他們往往也是那 
  34. 些尊重版權、 反饋改進意見、 使系統功能得以提高的人。 他們將是系統升級過程中的一分 
  35. 子。  
  36.  
  37. 總的來說, 我從兩個方面看版權。 比如一個每月掙五十美元的人, 他可能會為一個軟 
  38. 件花費二百五十美元嗎? 如果花一點錢買非法拷貝軟件, 而把五個月的工資用于吃飽肚 
  39. 子, 我一點不覺得他不道德。 這種侵權是道義上可以接受的。 去追捕這種“侵權者”是不道 
  40. 德的, 更不要說簡直就是愚蠢的。 就Linux而言, 誰在乎如果只將其用于個人目的時, 一 
  41. 個人是否真正遵循了GPL呢? 那些想藉此賺大錢的人們, 才是真正不道德的, 不管他們是 
  42. 在美國還是非洲, 也不管程度如何。 
  43.  
  44. 貪欲從來就不是善的。 
  45.  
  46. 正如開放源代碼在1998年吸引了全世界的目光, 最大的爭議之一就在于其名字本身。 在此 
  47. 之前, 已有了諸如GPL所許可的“自由軟件”, 我們會提到軟件共享現象, 以及通常所談論 
  48. 的“自由軟件運動”。 這一用法源于“自由軟件基金會”(Free Software Foundation) , 該基 
  49. 金會由理查德·斯多曼于1985年為促進自由軟件工程而創立, 比如GUN和由他發起的FreeUNIX。 
  50. 沒準, 像艾立克·雷蒙德這樣的新教徒會發現新聞記者們全搞錯了。  
  51.  
  52. free”一詞真的意 
  53. 味著免收任何費用嗎? “free”真的意味著沒有任何限制嗎? “free”真的意味著自由自在嗎? 
  54. 經過幾周私人信函的往來, 我們最終達成了一致意見: 比起“free”來, 我們更愿意使 
  55. 用“open”(開放) 一詞。 從此, 自由軟件運動變成了開放軟件運動。 對于那些樂意將此一 
  56. 場運動的人來講, 我猜這的確是一場運動。 自由軟件基金會仍然被稱之為自由軟件基金 
  57. 會, 而理查德·斯多曼也仍舊是幕后在心理上進行策劃的人。 

三、其他開源協議(BSD,Apache,LGPL,MIT)

其他開源協議比較

1. BSD開源協議(original BSD license、FreeBSD license、Original BSD license)

BSD開源協議是一個給于使用者很大自由的協議。基本上使用者可以”為所欲為”,可以自由的使用,修改源代碼,也可以將修改后的代碼作為開源或者專有軟件再發布。

但”為所欲為”的前提當你發布使用了BSD協議的代碼,或則以BSD協議代碼為基礎做二次開發自己的產品時,

需要滿足三個條件:

  1. 如果再發布的產品中包含源代碼,則在源代碼中必須帶有原來代碼中的BSD協議。
  2. 如果再發布的只是二進制類庫/軟件,則需要在類庫/軟件的文檔和版權聲明中包含原來代碼中的BSD協議。
  3. 不可以用開源代碼的作者/機構名字和原來產品的名字做市場推廣。

BSD代碼鼓勵代碼共享,但需要尊重代碼作者的著作權。BSD由于允許使用者修改和重新發布代碼,也允許使用或在BSD代碼上開發商業軟件發布和銷售,因此是對商業集成很友好的協議。而很多的公司企業在選用開源產品的時候都首選BSD協議,因為可以完全控制這些第三方的代碼,在 必要的時候可以修改或者二次開發。

2. Apache(Apache License, Version 2.0、Apache License, Version1.1、Apache License, Version 1.0)

Apache Licence是著名的非盈利開源組織Apache采用的協議。

該協議和BSD類似,同樣鼓勵代碼共享和尊重原作者的著作權,同樣允許代碼修改,再發布(作為開源或商業軟件)。

需要滿足的條件也和BSD類似:

  1. 需要給代碼的用戶一份Apache Licence,如果你修改了代碼,需要在被修改的文件中說明。
  2. 在延伸的代碼中(修改和有源代碼衍生的代碼中)需要帶有原來代碼中的協議,商標,專利聲明和其他原來作者規定需要包含的說明。
  3. 如果再發布的產品中包含一個Notice文件,則在Notice文件中需要帶有Apache Licence。

你可以在Notice中增加自己的許可,但不可以表現為對Apache Licence構成更改。

Apache Licence也是對商業應用友好的許可。使用者也可以在需要的時候修改代碼來滿足需 要并作為開源或商業產品發布/銷售。

3. LGPL(GNU Lesser General Public License)

LGPL是GPL的一個為主要為類庫使用設計的開源協議。

和GPL要求任何使用/修改/衍生之GPL類庫的的軟件必須采用GPL協議不同。

LGPL允許商業軟件通過類庫引用(link)方式使用LGPL類庫而不需要開源商業軟件的代碼。

這使得采用LGPL協議的開源代碼可以被商業軟件作為類庫引用并發布和銷售。

但是如果修改LGPL協議的代碼或者衍生,則所有修改的代碼,涉及修改部分的額外代碼和衍生的代碼都必須采用LGPL協議。

因此LGPL協議的開源代碼很適合作為第三方類庫被商業軟件引用,但不適合希望以LGPL協議代碼為基礎,通過修改和衍生的方式做二次開發的商業軟件采用。

GPL/LGPL都保障原作者的知識產權,避免有人利用開源代碼復制并開發類似的產品

4. MIT(MIT)

MIT是和BSD一樣寬范的許可協議,作者只想保留版權,而無任何其他了限制。

也就是說,你必須在你的發行版里包含原許可協議的聲明,無論你是以二進制發布的還是以源代碼發布的。

四、 大名鼎鼎Android內核是Linux,那他是如何規避GPL的

下圖是一個完整的Android軟件系統所用到的所有協議分布。

與Android關系最為密切的主要包括兩個方面:驅動和glibc

1. glibc

glibc是linux上的主流的c運行時庫,幾乎每個linux程序都會簡介的依賴c運行時庫。

由于glibc是gpl授權的,因此如果采用glibc作為crt,按照前述問題的第二條,這些程序必須開源。

因此安卓采用bionic作為c運行時庫替代glibc來規避gpl

2. 驅動

再說驅動,Android是基于Linux 內核開發的,Linux內核是GPL授權。

傳統的驅動是要作為內核模塊被加入到內核中的。

而內核模塊屬于Linux內核的衍生產品,需要遵守GPL協議開源發布。

Android是由開放手機聯盟共同完成的,為了保護聯盟中手機生產商的利益,驅動不能被完全開源。

因此安卓引入HAL,給linux內核開了個后門,增加了一些系統調用。

HAL在內核的部分按照GPL的要求開源。

驅動開發者可以在用戶態使用這些新增的系統調用完成驅動的開發。從而在驅動方面規避了GPL。

進一步了解:

Android的硬件抽象層,簡單來說,就是對Linux內核驅動程序的封裝,向上提供接口,屏蔽低層的實現細節。也就是說,把對硬件的支持分成了兩層,一層放在用戶空間(User Space),一層放在內核空間(Kernel Space), 其中,硬件抽象層運行在用戶空間,而Linux內核驅動程序運行在內核空間。為什么要這樣安排呢?把硬件抽象層和內核驅動整合在一起放在內核空間不可行嗎?

從技術實現的角度來看,是可以的,然而從商業的角度來看,把對硬件的支持邏輯都放在內核空間,可能會損害廠家的利益。我們知道,Linux內核源代碼版權遵循GNU License,而Android源代碼版權遵循Apache License,前者在發布產品時,必須公布源代碼,而后者無須發布源代碼。如果把對硬件支持的所有代碼都放在Linux驅動層,那就意味著發布時要公開驅動程序的源代碼,而公開源代碼就意味著把硬件的相關參數和實現都公開了,在手機市場競爭激烈的今天,這對廠家來說,損害是非常大的。

因此,Android才會想到把對硬件的支持分成硬件抽象層和內核驅動層,內核驅動層只提供簡單的訪問硬件邏輯,例如讀寫硬件寄存器的通道,至于從硬件中讀到了什么值或者寫了什么值到硬件中的邏輯,都放在硬件抽象層中去了,這樣就可以把商業秘密隱藏起來了。

也正是由于這個分層的原因,Android被踢出了Linux內核主線代碼樹中。大家想想,Android放在內核空間的驅動程序對硬件的支持是不完整的,把Linux內核移植到別的機器上去時,由于缺乏硬件抽象層的支持,硬件就完全不能用了,這也是為什么說Android是開放系統而不是開源系統的原因。

五、軟件其他幾個相關的版權概念

1. copyright

copyright就是俗稱的版權,也叫著作權。

版權又稱著作權,用來表述創作者因其文學和藝術作品而享有的權利。版權的取得有兩種方式:自動取得和登記取得。在中國,按照著作權法規定,作品完成就自動有版權(百度百科)。

簡單來說,版權(copyright)只是規定是誰對作品享有權利,而具體享有哪些權力,需要參照當地法律。

比如一種定義是:

根據規定,作者享受下列權利:

  1. 以本名、化名或以不署名的方式發表作品;
  2. 保護作品的完整性;
  3. 修改已經發表的作品;
  4. 因觀點改變或其他正當理由聲明收回已經發表的作品,但應適當賠償出版單位損失;
  5. 通過合法途徑,以出版、復制、播放、表演、展覽、攝制片、翻譯或改編等形式使用作品;
  6. 因他人使用作品而獲得經濟報酬。上述權利受到侵犯,作者或其他版權所有者有權要求停止侵權行為和賠償損失。

2. license

在此基礎上,作者還可以制定授權協議(license),來具體地界定使用者的權利。

也就是說,

  • 作者的具體權利 = 當地法律規定的版權(copyright) + 自己在作品中添加的授權協議(license)。

  • 權利 = 版權(copyright) + 授權協議(license)

比如,商業化的授權協議(license)可能會傾向于強調,使用者的哪些行為是侵權行為,從而保護自己的商業利益。

3. copyleft

而與這一商業化的授權風格相對的是,RMS等人引領的copyleft的思潮。這一思想在保護作者的基本版權之余, 可以讓作者通過在作品中添加開源協議(license),從而放大用戶的權力。

比如我們今天的主角,RMS在198為GNU項目擬定的 GLP 協議,允許用戶自由地運行、研究、分享和修改源代碼。

本文轉載自微信公眾號「一口Linux」

 

責任編輯:姜華 來源: 一口Linux
相關推薦

2021-05-20 06:57:16

RabbitMQ開源消息

2023-05-12 08:19:12

Netty程序框架

2021-07-28 10:02:54

建造者模式代碼

2021-06-30 00:20:12

Hangfire.NET平臺

2021-07-14 08:24:23

TCPIP 通信協議

2021-08-11 07:02:21

npm包管理器工具

2010-05-07 09:33:28

GNU GPL開源許可協議

2021-11-24 08:51:32

Node.js監聽函數

2021-08-02 06:34:55

Redis刪除策略開源

2021-11-08 08:42:44

CentOS Supervisor運維

2019-07-11 10:29:28

操作系統虛擬機Linux

2019-08-05 10:08:25

軟件操作系統程序員

2019-06-10 14:53:15

分布式架構應用服務

2020-11-10 10:48:10

JavaScript屬性對象

2021-06-04 09:56:01

JavaScript 前端switch

2021-07-08 06:30:03

Linux CPULinux 系統

2021-08-14 10:01:43

Python條件語句Python基礎

2021-01-29 18:41:16

JavaScript函數語法

2021-08-26 05:27:08

Base64 字節流算法

2021-02-02 18:39:05

JavaScript
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品成人国产乱一区 | 成人a在线观看 | 精品欧美一区二区三区 | 久久综合狠狠综合久久综合88 | 一二三区视频 | 日本午夜网站 | 99久久婷婷国产综合精品电影 | 国产精品久久久久久久久久免费 | 中文在线一区二区 | 欧美日韩淫片 | 91亚洲国产成人精品一区二三 | 黄色国产区| 一区视频在线播放 | 国产免国产免费 | 亚洲成人999 | 婷婷久久五月 | 精品国产一区三区 | 91精品国产高清久久久久久久久 | 久久综合av | 国产精品网页 | 蜜桃精品视频在线 | 三级在线视频 | 国产成人在线一区二区 | a a毛片| 欧美一区二区三区四区五区无卡码 | 精品欧美视频 | 亚洲国产成人精品女人久久久 | 日韩一二区| 亚洲一区二区三区在线免费 | 国产成人免费视频网站高清观看视频 | 亚洲激情自拍偷拍 | 国产精品黄| 国产成人精品亚洲日本在线观看 | 久久五月婷 | 欧美一级大片免费看 | 久久这里有精品 | 在线欧美视频 | 久久综合色综合 | 91麻豆精品国产91久久久久久 | 浴室洗澡偷拍一区二区 | 日韩欧美精品 |