1. 程式人生 > >常見開源協議

常見開源協議

電腦科學的難度,最低階是寫寫程式碼,再高階是研究演算法,再高階,就是一切和錢有關的問題。
這裡充斥著辯駁,也充斥著人性。

一個流傳很廣的圖。
在這裡插入圖片描述

GPL協議和linux

https://blog.csdn.net/hwaeb/article/details/12888881
GPL 代表著 Linux 的開源精神,毫不為過。然而,現實世界中,GPL 開源烏托邦和商業社會的叢林法則之間存在劇烈的衝突,其中犬牙交錯,艱難成長,從中引發的思考,與大家共享。
如果你用了我的 GPL軟體,那麼必須你的軟體也要開源,如果你不開源,那麼就不能使用我的軟體,你是否把你的軟體商用和我沒關係,如果你不能遵循GPL協議來開源,那麼你付再多的錢也不能用GPL的軟體, 事實上很多GPL軟體是很多人共同完成的,每個人在前人的基礎上做出自己的貢獻,如果收費的話你把錢交給誰?提出 GPL協議的GNU希望做到的是通過開源來使軟體行業得到一個好的發展,試想如果你要做一個大型的軟體,不在前人的原始碼基礎上開發,那必然會是曠日持久 的,也會有很多重複勞動,顯然不利於軟體技術的發展。所以理解了GNU的精神,也就能理解GPL在說些什麼,其實就是開源。在現實生活中,我們受益於 GPL的地方,其實很多,幾乎所有的作業系統,除了windows,其他的幾乎都是基於linux開原始碼改寫的。GPL協議看起來似乎很友善。

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

幾個核心爭議問題。

1、使用 Linux 核心的標頭檔案定義,進行系統呼叫的程式是否會被定性為衍生產品?
2、連結使用了其他 GPL 的類庫的程式是否會被定性為衍生產品?
3、Linux 核心動態載入的模組 LKM(Loadable Kernel Modules)是否會被定性為衍生產品,以 LKM 形式開發的 Linux 驅動程式是不是衍生產品?

第一個問題,答案是不是。所以你可以自由的的在linux上開發程式碼而不需要將自己的程式碼開源。
第二個問題,答案是是。glibc是linux上的主流的c執行時庫,幾乎每個linux程式都會簡介的依賴c執行時庫。由於glibc是gpl授權的,因此如果採用glibc作為crt(C run-time library),這些程式必須開源。因此安卓採用bionic作為c執行時庫替代glibc來規避gpl。
第三個問題,則是爭論的中心,一些硬體廠商常年以二進位制形式釋出驅動的原始碼(ATI/AMD/NVIDA等)這個一直被linux的開發人員口誅筆伐並揚言違法。

JAVA

正所謂一波未平,一波又起。

2018年,9月26日。Oracle釋出了java 11,同時也釋出後續更新策略。
Oracle jdk(目前JDK8和JDK11)授權使用BCL協議(這個協議說白旅了就是oracle完全私有化)。JDK8具體分個人版本和商業版本兩種。商業版本在19年1月停止免費的更新,這之前的更新還是能夠免費用,交錢可以繼續獲得後續的更新。個人版本在20年12月停止免費的更新,這之前的更新還是能夠免費用,交錢可以繼續獲得後續的更新。個人版本禁止商用。JDK11沒有免費版本和商業版本一說。除非交錢,完全不能商業使用。

對於普通企業,如果不交錢,則必須

  • 絕不能使用Oracle JDK11。
  • 也不能使用Oracle JDK8的部分高階特性。
  • 也不能再非“通用計算”領域使用Oracle JDK8。通用計算指的是非專用嵌入式應用,比如說機頂盒,智慧家庭閘道器,網路交換機。
  • 繼續使用Oracle JDK8則不要奢望Oracle為其提供更新和支援。