Posso usar comercialmente o software licenciado pela GPL no meu servidor se estiver distribuindo apenas o software cliente?

15

Eu entendo as regras da GPL afirmando que se eu distribuir qualquer software usando o código GPL, em seguida, que o código deve ser licenciado sob a GPL .

No entanto, estou me perguntando quais são as regras neste caso: estou criando um serviço no qual venderei e distribuirei software do lado do cliente .

O software do cliente não possui absolutamente nenhum código GPL. É 100% meu próprio código.

No entanto, o software cliente estará se conectando ao meu servidor, que usa internamente o código GPL.

Estou não distribuir o software do lado do servidor; o software do servidor viverá em um servidor dedicado que eu controle sozinho, mas o software do cliente não funcionará sem conectar-se ao servidor.

Isso conta como um software? Se eu fizesse isso, seria obrigado a licenciar o código-fonte do meu cliente como GPL? Ou posso vender o software do cliente sem liberar seu código-fonte?

Steven Jeffries
fonte

Respostas:

12

Este não é um problema claro. Considere dois extremos do espectro:

  1. Seu software cliente proprietário é um cliente HTTP e renderiza respostas HTML. Pode funcionar com qualquer servidor HTTP. O servidor HTTP que você usa para o seu serviço usa componentes GPL.

  2. Você tem um programa que usa componentes licenciados pela GPL. Você escolhe um ponto arbitrário na operação do programa e divide o programa em dois programas. Os dois programas se comunicam através de um salto de rede totalmente supérfluo. Você coloca todos os componentes licenciados pela GPL no primeiro programa e a licença sob a GPL e o outro programa sob uma licença incompatível com a GPL.

O primeiro caso está claramente bem. O segundo caso claramente não está bem. Você não forneceu muitas informações sobre o seu caso em particular e, mesmo que o tenha feito, apenas uma decisão judicial poderá decidir definitivamente se você está certo.

O FAQ da GPL tem a dizer sobre programas interoperáveis ​​e licenciados separadamente :

No entanto, em muitos casos, você pode distribuir o software coberto pela GPL junto ao seu sistema proprietário. Para fazer isso validamente, você deve se certificar de que os programas gratuitos e não-livres se comuniquem ao alcance de todos , que não sejam combinados de maneira a torná-los efetivamente um único programa.

A diferença entre isso e a "incorporação" do software coberto pela GPL é parcialmente uma questão de substância e parte de forma. A parte substantiva é a seguinte: se os dois programas forem combinados para que se tornem efetivamente duas partes de um programa, você não poderá tratá-los como dois programas separados. Então a GPL tem que cobrir a coisa toda.

Você deve decidir se acha que seu cliente é servidor e atende ao padrão de "duas partes do mesmo programa" (e, portanto, cada uma deve ser licenciada sob a GPL) ou não. O FAQ da GPL fornece mais explicações sobre esse tópico em outra pergunta :

Onde está a linha entre dois programas separados e um programa com duas partes? Esta é uma questão legal que, em última instância, os juízes decidirão. Acreditamos que um critério adequado depende tanto do mecanismo de comunicação (exec, pipes, rpc, chamadas de função em um espaço de endereço compartilhado, etc.) quanto da semântica da comunicação (que tipos de informações são trocadas).

...

Por outro lado, pipes, soquetes e argumentos da linha de comando são mecanismos de comunicação normalmente usados ​​entre dois programas separados. Portanto, quando eles são usados ​​para comunicação, os módulos normalmente são programas separados. Mas se a semântica da comunicação for íntima o suficiente, trocando estruturas de dados internas complexas, isso também poderia ser uma base para considerar as duas partes combinadas em um programa maior .

Portanto, a comunicação em rede certamente passa no teste "mecanismo de comunicação", mas não está claro onde seu par cliente / servidor se enquadra no teste "semântica da comunicação".

apsillers
fonte
Seria razoável basear a distinção na medida em que a interface entre os programas era pública? Se, por exemplo, eu implemento um sistema de xadrez que usa um programa de interface com o usuário GPL que se comunica com um mecanismo de xadrez proprietário, e documento como qualquer pessoa que deseje escrever seu próprio mecanismo de xadrez poderá fazê-lo usar o mesmo front-end da interface do usuário, pense que isso deve satisfazer o espírito (e espero a letra) da GPL, mesmo que, a menos que alguém escreva um mecanismo alternativo, o front end da interface do usuário não tenha outro propósito senão conversar com o programa proprietário.
Supercat
Hmm. Fiz essa pergunta tão vagamente porque estava curioso sobre a GPL em geral. No entanto, acho que entendo a diferença agora. Se meu servidor tiver informações da conta de usuário que meu software cliente precisa executar, isso claramente viola a GPL. Se meu servidor é algo como um servidor de retransmissão de pacotes que permite apenas que duas versões do meu software cliente se comuniquem, tudo bem. Estou correto nessas suposições?
Steven Jeffries
4

Dois processos que se comunicam através de uma rede não envolvem a criação de um trabalho derivado, como a vinculação de um executável a uma biblioteca. Portanto, o código GPL no servidor não se aplica ao código do cliente.

Sob a GPL, você deve distribuir o código-fonte modificado ao distribuir binários. Como você não está distribuindo os binários do servidor, não é necessário distribuir o código-fonte do servidor.

A GNU Affero GPL é uma licença semelhante à GPL com verbage adicional projetada para fechar esse mesmo loop que você deseja aproveitar (consulte: http://www.gnu.org/licenses/why-affero-gpl.html e http://en.wikipedia.org/wiki/Affero_General_Public_License#Examples_of_web_applications_under_GNU_AGPL ).

Isenção de responsabilidade: sou desenvolvedor, não advogado.

J. Lenthe
fonte
3
Apenas uma nota de advertência: Se o cliente é projetado para se comunicar especificamente com este software de servidor, então é inteiramente possível que a FSF faz considerar o software de servidor e cliente como um produto. Veja também aqui no GPL FAQ
Bart van Ingen Schenau
Por outro lado, se um terceiro gravar um software cliente para se comunicar com seu servidor, sem nunca ter visto o software ou a licença do servidor, esse argumento parecerá ridículo. E isso significaria que a Microsoft poderia processar qualquer um que escrevesse software conectado aos servidores do Outlook, por exemplo.
Gshow # 298 #
2

O software cliente depende do software do servidor para seu bom funcionamento? Em outras palavras, o software cliente funcionará sem estar conectado ao servidor?

Se a resposta for "sim" e o servidor apenas fornecer um recurso adicional, e não o suporte principal, ao software do cliente, provavelmente você estará livre. Se o software para servidor for parte integrante do software cliente e fornecer funcionalidade principal ao software cliente (ou seja, o software cliente não funcionará sem o servidor), a combinação será um trabalho derivado, coberto pela GPL.

Robert Harvey
fonte
Devo errar por precaução e não usar o código GPL no meu servidor.
Steven Jeffries
2
@StevenJeffries Esta resposta vai de encontro à prática atual e aos requisitos da GPL. Contanto que eu não distribua um software ou um trabalho derivado, estou livre para usar o software GPL em um servidor, por exemplo, Linux, GCC ou WordPress. O simples uso de um software não cria um trabalho derivado. No caso da GPL, é considerado bom quando pelo menos a separação no nível do processo está envolvida (sem memória compartilhada, sem estruturas de dados compartilhadas). Veja a resposta de J. Lenthe para uma solução correta e para referências.
amon
@ amon: Se você nem compartilha estruturas de dados entre o servidor e o cliente, então você está certo. Duvido que seja o caso, no entanto. A distinção que estou traçando (o software cliente depende do software do servidor para sua correta execução) não é arbitrária; é um dos dois requisitos essenciais para o que a FSF considera não um "trabalho derivado"; o outro é "comunicação de comprimento de braço". Não aceite minha palavra; leia você mesmo no site da FSF.
Robert Harvey
@ amon: Você pode ler mais sobre isso aqui .
Robert Harvey
@amon Outro item muito relevante da FAQ da GPL (que é um acompanhamento após a leitura do link de Robert) é este, principalmente os três últimos parágrafos: gnu.org/licenses/gpl-faq.html#MereAggregation
apsillers