Como o software semi-proprietário pode ser baseado no Linux Kernel?

9

Se bem entendi, o Linux Kernel é licenciado sob a GPL, o que significa que, se alguém basear alguma coisa nele, também precisará licenciar todo o trabalho derivado sob a GPL, deixando qualquer um livre para modificar e / ou redistribuir seu trabalho derivado.

Por exemplo, todas as versões do Android são baseadas no LK. Isso não significa que toda a versão e todos os seus componentes também precisam ser liberados sob a GPL?

Por exemplo, a maioria das versões do Android é fornecida com componentes proprietários. Isso não viola a GPL? Todo o trabalho derivado não precisa ser liberado sob a GPL?

Com o Ubuntu, por exemplo, você deve baixar os codecs MPEG pós-instalação. Suponho que isso ocorra porque o MPEG é proprietário e, portanto, a licença do MPEG é incompatível com a GPL; portanto, eles não podem ser incluídos no mesmo release?

Como as versões do Android contornam isso?

Revetahw diz Restabelecer Monica
fonte
2
A versão curta é que a qualidade 'viral' da GPL só pode atuar em trabalhos derivados do código sob licença, e uma terra de usuário que chama um kernel não o torna um trabalho derivado do kernel.
Tom Hunt
Entendo, o kernel e o outro software em cima dele têm licenças separadas, e a GPL permite isso.
Revetahw diz Restabelecer Monica
Eu também gostaria de acrescentar que, no meu entendimento, há uma grande diferença entre a GPL v2 e a GPL v3 e a Linus continuou a usar a GPL v2, que é mais permissiva que a última. Aqui está um pouco de informação sobre isso. As duas principais respostas parecem ser muito boas.
KGIII 23/1015

Respostas:

9

Primeiro, você deve deixar claro que o código Android do Google e o código do kernel Linux são separados. O próprio Android é licenciado sob a Licença Apache 2.0, que é permissiva e, nas palavras da Wikipedia :

A Licença Apache é permissiva, pois não exige que um trabalho derivado do software, ou modificações no original, seja distribuído usando a mesma licença.

Como tal, nenhuma modificação do Android pelos fornecedores é normalmente disponibilizada.

Segundo, no caso do kernel Linux, licenciado sob a GPLv2, o código é liberado ao público, oculto em algum lugar do dispositivo (menos provável) ou disponível para download em alguma página obscura no site do fornecedor, dedicada a códigos de código aberto em Produtos deles.

No entanto, existe uma grande ressalva ao código do kernel do Linux disponibilizado ao público - drivers proprietários e módulos do kernel com funcionalidade semelhante. O kernel do Linux pode carregar blobs binários distribuídos sob licença proprietária, e o código fonte desses blobs necessários para executar o seu dispositivo naturalmente não é distribuído. Resumindo, mesmo que você consiga colocar a mão na fonte específica do kernel do seu dispositivo, não poderá necessariamente usá-lo para compilar seu próprio sistema operacional Linux.


Permissivo, em contexto

O que exatamente queremos dizer com licença permissiva ? Com seus comentários, acho que você entendeu a capacidade de executar outro software licenciado de forma permissiva ou proprietária. Mas isso está errado.

Permissivo neste contexto significa quão permissível é deixar você fazer o que quiser com o código-fonte.

A GPL não é permissiva no sentido de que você é legalmente obrigado a divulgar qualquer modificação feita em um código licenciado pela GPL. Não permite que você aceite a contribuição de todos, faça alterações (independentemente de torná-la melhor ou pior) e oculte-a. Se você deseja distribuir o binário, também deve distribuir o código-fonte. Como ele não permite que você faça alterações particulares, não é permitido .

A licença Apache e as licenças BSD são exemplos de licenças permissivas. Ao contrário da GPL estritamente não permissiva, ela permite fazer qualquer modificação nos códigos licenciados sob eles e mantê-la para si mesmo, ou seja, é permissiva . Ou seja, você pode pegar o código do Android, mesmo que o mude o suficiente para torná-lo irreconhecível, você é livre para mantê-lo. E é exatamente isso que os fornecedores de dispositivos Android fazem.

Oxwivi
fonte
1
não. é porque programas simplesmente rodando em um kernel (e fazendo uso dos syscalls do kernel) não são derivados do kernel. O código de usuário do Android apenas roda no kernel do Linux.
cas
1
O kernel Linux @Fiksdal é licenciado sob a GPL, não uma licença permissiva. Você pode executar o Android e outros softwares permissivos no Linux da mesma maneira que pode usar o driver proprietário da Nvidia no seu PC comum.
Oxwivi
1
@Fiksdal Ou um exemplo melhor seria, o Android executa binários proprietários e permissivos no Linux da mesma maneira que pode executar o Steam e o Google Chrome.
Oxwivi
1
@Fiksdal, sim, literalmente, é separado. Considere o seguinte: o mesmo kernel pode executar o Ubuntu ou outras distribuições Linux regulares sobre ele. O kernel do Linux é apenas isso, um kernel. Ele deve ser capaz de executar todos os tipos de programas em cima dele.
Oxwivi
1
@Fiksdal Eu editei a resposta, confira.
Oxwivi