半專有軟體如何基於 Linux Kernel?
如果我理解正確,Linux 核心是根據 GPL 許可的,這意味著如果任何人基於它,他們還必鬚根據 GPL 許可整個衍生作品,使任何人都可以自由修改和/或重新分發他們的衍生作品。
例如,所有 Android 版本都基於 LK。這是否意味著整個版本及其所有組件也必須在 GPL 下發布?
例如,大多數 Android 版本都附帶專有組件。這不違反 GPL 嗎?整個衍生作品不需要在 GPL 下發布嗎?
例如,使用 Ubuntu,您必須在安裝後下載 MPEG 編解碼器。我認為這是因為 MPEG 是專有的,因此 MPEG 的許可證與 GPL 不兼容,所以它們不能包含在同一個版本中?
Android 版本如何解決這個問題?
首先,你必須清楚Google的Android程式碼和Linux核心程式碼是分開的。Android 本身是在 Apache License 2.0 下獲得許可的,這是許可的,用Wikipedia的話來說:
Apache 許可證是許可的,因為它不需要使用相同的許可證分發軟體的衍生作品或對原始作品的修改。
因此,供應商通常不會提供任何 Android 修改。
其次,在 Linux 核心的情況下,在 GPLv2 下獲得許可,程式碼會向公眾發布,或者隱藏在設備中的某個地方(不太可能),或者可以在供應商網站的某個晦澀的頁面上下載,該頁面專門用於開原始碼他們的產品。
但是,公開可用的 Linux 核心程式碼有一個重要的警告——專有驅動程序和類似功能的核心模組。Linux 核心可以載入在專有許可下分發的二進制 blob,而執行您的設備所需的此類 blob 的原始碼自然不會分發。底線是,即使您確實設法獲得了特定於您設備的核心原始碼,您也不一定能夠使用它來編譯您自己執行的基於 Linux 的作業系統。
允許的,在上下文中
我們所說的許可許可證到底是什麼意思?根據您的評論,我認為您已將其理解為執行其他許可或專有許可軟體的能力。但這是錯誤的。
在這種情況下,允許意味著,讓你對原始碼做你想做的事情是多麼允許。
GPL 是不允許的,因為您有法律義務公開您對 GPL 許可程式碼所做的任何修改。它不允許您接受每個人的貢獻,對其進行更改(無論使其變得更好或更糟)並將其隱藏起來。如果要分發二進製文件,則還必須分發原始碼。由於它不允許您進行私人更改,因此它是不允許的。
Apache 許可和 BSD 許可是許可許可的範例。與嚴格禁止的 GPL 相反,它允許您對根據它們許可的程式碼進行任何修改並將其保留給自己,換句話說,它是允許的。也就是說,你可以拿Android程式碼,即使你把它改到無法辨識的程度,你也可以自己保留它。這正是 Android 設備供應商所做的。