Come si può basare il software semi-proprietario sul kernel Linux?


9

Se ho capito bene, il kernel Linux è concesso in licenza in base alla GPL, il che significa che se qualcuno basa qualcosa su di esso, devono anche concedere in licenza l'intero lavoro derivato in base alla GPL, rendendo chiunque libero di modificare e / o ridistribuire il proprio lavoro derivato.

Ad esempio, tutte le versioni di Android sono basate su LK. Ciò non significa che anche l'intera versione e tutti i suoi componenti debbano essere rilasciati sotto licenza GPL?

Ad esempio, la maggior parte delle versioni di Android viene fornita con componenti proprietari. Ciò non viola la GPL? L'intero lavoro derivato non deve essere rilasciato sotto licenza GPL?

Con Ubuntu, ad esempio, devi scaricare i codec MPEG dopo l'installazione. Presumo che ciò sia dovuto al fatto che MPEG è proprietario e che la licenza di MPEG è quindi incompatibile con la GPL, quindi non possono essere inclusi nella stessa versione?

In che modo le versioni di Android riescono a ovviare a questo?


2
La versione breve è che la qualità "virale" della GPL può agire solo su lavori derivati ​​del codice su licenza, e una terra dell'utente che chiama un kernel non lo rende un lavoro derivato del kernel.
Tom Hunt,

Vedo che il kernel e l'altro software al di sopra di esso hanno licenze separate e la GPL lo consente.
Revetahw dice di reintegrare Monica il

Vorrei anche aggiungere che, a mio modo di vedere, c'è una differenza abbastanza grande tra GPL v2 e GPL v3 e Linus ha continuato a usare GPL v2 che è più permissivo di quest'ultimo. Ecco alcune informazioni al riguardo. Le prime due risposte sembrano essere abbastanza buone.
KGIII,

Risposte:


9

Innanzitutto, devi essere chiaro che il codice Android di Google e il codice del kernel Linux sono separati. Android stesso è concesso in licenza con Apache License 2.0, che è permissivo, e nelle parole di Wikipedia :

La Licenza Apache è permissiva in quanto non richiede un lavoro derivato del software o modifiche all'originale da distribuire usando la stessa licenza.

Di conseguenza, nessuna delle modifiche Android da parte dei venditori viene normalmente resa disponibile.

In secondo luogo, nel caso del kernel Linux, con licenza GPLv2, il codice viene rilasciato al pubblico, sepolto da qualche parte all'interno del dispositivo (meno probabile) o disponibile per il download in qualche pagina oscura nel sito Web del fornitore dedicato ai codici open source in i loro prodotti.

Tuttavia, c'è un grosso avvertimento nel codice del kernel di Linux reso pubblicamente disponibile: driver proprietari e moduli del kernel con funzionalità simili. Il kernel Linux può caricare BLOB binari distribuiti su licenza proprietaria e il codice sorgente di tali BLOB necessari per eseguire il dispositivo non è naturalmente distribuito. In conclusione, anche se riesci a mettere le mani sul sorgente del kernel specifico per il tuo dispositivo, non sarai necessariamente in grado di usarlo per compilare il tuo sistema operativo basato su Linux funzionante.


Permissivo, nel contesto

Cosa intendiamo esattamente con una licenza permissiva ? Dai tuoi commenti, penso che tu l'abbia inteso come capacità di eseguire altri software autorizzati o proprietari. Ma è sbagliato.

Permissivo in questo contesto significa quanto è permesso lasciarti fare quello che vuoi con il codice sorgente.

GPL non è permissivo nel senso che sei legalmente tenuto a pubblicizzare qualsiasi modifica apportata a un codice con licenza GPL. Non ti consente di prendere il contributo di tutti, di apportare modifiche (indipendentemente dal renderlo migliore o peggiore) e nasconderlo. Se hai intenzione di distribuire il binario, devi distribuire anche il codice sorgente. Poiché non ti consente di apportare modifiche private, non è quindi consentito .

La licenza Apache e le licenze BSD sono esempi di licenze permissive. Di fronte alla GPL strettamente non permissiva, ti consente di apportare qualsiasi modifica ai codici concessi in licenza e di tenerlo per te, in altre parole, è permissivo . Vale a dire, puoi prendere il codice Android, anche se lo cambi abbastanza da renderlo irriconoscibile, sei libero di tenerlo da solo. Ed è esattamente quello che fanno i venditori di dispositivi Android.


1
no. è perché i programmi che funzionano semplicemente su un kernel (e che fanno uso delle syscall del kernel) non sono derivati ​​del kernel. Il codice userland per Android viene semplicemente eseguito sul kernel Linux.
Cas

1
Il kernel di @Fiksdal Linux è concesso in licenza GPL, non una licenza permissiva. Puoi eseguire Android e gli altri software permissivi su Linux nello stesso modo in cui puoi utilizzare il driver proprietario di Nvidia sul tuo normale PC.
Oxwivi,

1
@Fiksdal O un esempio migliore sarebbe, Android esegue binari proprietari e permissivi su Linux allo stesso modo in cui può eseguire Steam e Google Chrome.
Oxwivi,

1
@Fiksdal, sì, è letteralmente separato. Considera questo: lo stesso kernel può eseguire Ubuntu o altre normali distribuzioni Linux su di esso. Il kernel Linux è proprio questo, un kernel. È pensato per essere in grado di eseguire tutti i tipi di programmi su di esso.
Oxwivi,

1
@Fiksdal Ho modificato la risposta, controlla.
Oxwivi,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.