Posso usar as bibliotecas GPL temporariamente para prototipagem e tornar o código futuro código-fonte fechado?


23

Estou trabalhando em um protótipo para um sistema de software que (pelo menos no início) será de código fechado.

Para economizar tempo, estou pensando em usar (ou seja, vincular estaticamente) uma biblioteca licenciada sob a GPLv3 , para que eu possa testar meu design rapidamente. Se eu distribuísse o software nesse estágio, teria que distribuir o código-fonte junto com ele.

E se eu não fizer isso, mas me convencer de que meu sistema funciona e substituir a biblioteca GPL pelo meu próprio código antes de distribuir? O resultado seria "contaminado" pela GPL?

Tenho a sensação de que manter a biblioteca GPL na minha história do Git ou não pode fazer a diferença.


16
Eu gosto da expressão "contaminado pela GPL".
Arseni Mourzenko

7
vai bem com a natureza viral da licença :)
Laurent S

5
Corrija-me se estiver errado, mas você deseja liberar um sistema de código fechado, enquanto hospeda o código no git? (e eu presumo que isso git pode ser lido por outros, caso contrário, por que você iria se preocupar em ter uma lib GPL na história?)
user2813274

3
@ user2813274, você pode ter um repositório Git privado.
Arturo Torres Sánchez /

5
Quando você achar essa pergunta interessante, também poderá estar interessado na proposta para o novo Open Source Stackexchange .
Philipp

Respostas:


20

A GPL escreve :

Você pode transmitir um trabalho baseado no Programa, ou as modificações para produzi-lo a partir do Programa, na forma de código-fonte nos termos da seção 4, desde que você também atenda a todas essas condições:

Portanto, essa condição se aplica apenas se o seu trabalho for "baseado" na biblioteca, que a licença define da seguinte maneira:

"Modificar" uma obra significa copiar ou adaptar toda ou parte da obra de uma maneira que exija permissão de direitos autorais, exceto a realização de uma cópia exata. O trabalho resultante é chamado de "versão modificada" do trabalho anterior ou um trabalho "baseado em" o trabalho anterior.

Ou seja, seu programa é "baseado em" a biblioteca se e somente se for um trabalho derivado de acordo com a lei de direitos autorais. A definição legal desse termo varia um pouco entre jurisdições e geralmente não trata diretamente de software. Por exemplo, o US Copyright Act escreve:

Uma “obra derivada” é uma obra baseada em uma ou mais obras preexistentes, como tradução, arranjo musical, dramatização, ficção, versão cinematográfica, gravação de som, reprodução de arte, resumo, condensação ou qualquer outra forma em que uma obra pode ser reformulado, transformado ou adaptado. Uma obra que consiste em revisões editoriais, anotações, elaborações ou outras modificações que, como um todo, representam uma obra original de autoria, é uma “obra derivada”.

O que isso significa para o software deve ser interpretado pelos tribunais, com base em decisões semelhantes anteriores. Não estou suficientemente familiarizado com a jurisprudência relevante em sua jurisdição para dizer com certeza como um tribunal decidirá seu caso. Alguém poderia argumentar que "substituir a biblioteca GPL por código próprio" é um ato de tradução, principalmente se o seu código for fortemente inspirado pela implementação da GPL. Mesmo a reutilização da API da biblioteca GPL pode levá-lo a água quente (consulte Oracle x Google ).

Se a resposta lhe interessar, recomendo procurar aconselhamento jurídico competente em vez de perguntar a estranhos na Internet.


1
ok, isso é interessante, não percebi que compartilhar uma API poderia ser considerado um trabalho derivado.
Laurent S

Esta resposta faz o mesmo ponto que eu estava tentando fazer na minha resposta abaixo, mas de uma maneira muito mais clara. +1
Michael Shaw

23

Contanto que você não libere o software para ninguém enquanto estiver vinculando às bibliotecas da GPL, você estará seguro. O aspecto viral da GPL só entra em ação se você distribuir seu software.

Seria melhor se você pudesse encontrar uma biblioteca com uma licença mais permissiva, é claro, como LGPL ou APL2 ou MIT.


Claramente, tentarei encontrar outra biblioteca com uma licença permissiva. Mas, na falta disso, parece que eu poderia ter um código GPL antigo no histórico do git, e não violar os termos, distribuindo o estado futuro do código.
Laurent S

5
Esta resposta não leva em consideração o risco de criar um trabalho derivado ao implementar a nova versão da biblioteca.
Michael Shaw

4
@Ptolemy Lembre-se de que, se seu histórico do git for lançado, você lançou a versão antiga. Ele não precisa estar na forma binária para contar.
Piojo 7/03

2
@piojo Por outro lado, isso obriga a licenciar a versão antiga sob a GPL (e distribuir a fonte para ela); se em algum momento você se encontrar com os únicos direitos autorais do código, poderá criar todas as versões futuras com código-fonte fechado (embora as versões antigas continuem sob a GPL). Dependendo da quantidade de itens proprietários existentes na versão antiga, você pode ou não ter um problema.
cpast

1
Desde que Laurent S seja o autor e o proprietário dos direitos autorais de todos os outros códigos próximos à GPL, ele também estará seguro. Ele pode e é permitido para liberar toda a obra nos termos da GPL3 apenas no caso de isso pode ser o resultado mais tarde. Isso pode ser indesejável, mas o OP claramente é seguro em qualquer caso (se os direitos autorais pertencerem).
hakre

8

Não acho que sua pergunta seja realmente sobre a GPL. É sobre o protótipo e se ele será usado no futuro como base para o sistema de software que pode ser entregue.

Se você está criando um protótipo descartável e não vai reutilizar nenhum código em seu sistema de entrega, vá em frente e use uma biblioteca GPL.

Três abordagens que você pode adotar

No entanto, para desenvolver o protótipo (algo que muitos gerentes buscam!), Você tem três abordagens que pode adotar:

  1. Mova as partes não essenciais para aplicativos separados que se comunicam com seu núcleo por JSON ou uma API REST ou alguma outra linguagem / biblioteca de Comunicação entre processos. Suas partes não essenciais também podem ser GPL e você pode usar quaisquer bibliotecas GPL nelas.
  2. Crie seu código para poder trocar as bibliotecas. Isso significa criar uma fachada que oculta os detalhes da implementação. Quando você estiver pronto para mudar para uma biblioteca proprietária ou uma biblioteca MIT / BSD.
  3. Não use o código da GPL.

Eu sugiro que você siga a primeira abordagem, porque então você tem um trabalho de código aberto que poderá usar no futuro como parte de seu portfólio profissional.

A segunda abordagem também é boa porque é assim que você deve projetar o sistema de qualquer maneira, criando as funções / classes exatas necessárias e eliminando-as até ter a biblioteca ou o código personalizado que preenche essa funcionalidade.


2
Colocar o código GPL em outro processo não significa, por si só, que não faz mais parte do programa e, portanto, não é mais relevante para licenciar o restante. Pode ajudar a separá-los suficientemente bem.
Deduplicator

1
@Duplicator Se eles não são suficientes para aplicativos separados, eles precisam ser tratados como uma base de código separada, você está certo. Meio que gosto do que o Twitter faz com o Bootstrap e o que o Facebook faz com todas as suas bibliotecas. Código aberto não básico com código proprietário básico.
Rudolf Olah

@omouse, não posso fazer 1, pois é um software incorporado. 2 foi meu primeiro pensamento, mas vendo o que Ptolomeu e Meriton mencionam, parece que eu estaria fazendo trabalhos derivados, então 3 é provavelmente o caminho a percorrer.
Laurent S

1
Re: "Eu não acho que sua pergunta seja realmente sobre a GPL": eu discordo. Uma licença de software certamente poderia proibir esse tipo de uso. Uma resposta que ignorasse a parte "GPL" da pergunta e a considerasse uma pergunta geral sobre uma licença de código-fonte aberto com termos restritivos e comportamento viral, teria que recorrer a "não sabemos, você terá para ler os termos da licença ".
Ruakh

Se você criar um trabalho derivado e jogá-lo fora, você ainda criou um trabalho derivado e só poderá fazê-lo com permissão / licença do detentor dos direitos autorais original. Com a GPL, você tem essa licença (se nunca distribuir o trabalho derivado antes de jogá-lo fora). Com outra licença, você pode não ter a permissão. Processar você por danos pode ser difícil.
gnasher729

5

Posso pensar em dois aspectos a considerar com sua abordagem. O primeiro é direto: não distribuindo seu projeto ou (ou, como é o GPLv3 , disponibilizando-o para uso público) enquanto você estiver usando o código lançado sob o GPL, é difícil ver como você seria obrigado a distribuir seu código. sob a licença GPL também sob os termos de redistribuição.

O segundo aspecto é possivelmente mais significativo para você. Ao criar sua própria implementação para substituir a biblioteca GPL, você deve ter cuidado para não criar um trabalho derivado. Embora eu tenha certeza de que tem boas intenções, não copie diretamente o código-fonte - é mais provável que você não copie partes significativas da API da biblioteca.

Se este é um produto comercial, esse risco precisa ser considerado e avaliado através da leitura cuidadosa da licença GPLv3 e em caso de dúvida, solicitando uma opinião legal profissional.


4

Se você planeja escrever seu próprio código para substituir o código GPL, terá um problema em potencial porque não está gravando o código em um ambiente de sala limpa. Você realmente gostaria de ter alguém que nunca olhou para o código GPL escrever qualquer biblioteca de substituição. Por outro lado, se você deseja simplesmente trocar uma biblioteca GPL por uma biblioteca já publicada que esteja sob outra licença, isso não é um problema; provavelmente, a outra biblioteca já foi gravada em um ambiente de sala limpa.


2

Se você fornecer acesso às revisões usando o código da GPL, elas serão completamente GPL. Mas você não quer, pois isso não seria de código fechado ...

Para qualquer estado posterior que não use mais nenhum código da GPL, que você usou o código GPL algum dia antes é simplesmente irrelevante.


2

A GPL é acionada apenas na distribuição ... você pode fazer o que quiser se não liberar uma versão modificada ou trabalho derivado.

Tenho a sensação de que manter a biblioteca GPL na minha história do Git ou não pode fazer a diferença.

Se você quer publicar sua fonte em um repositório público como o GitHub , sim, você pode ter um problema. Apenas usar git é irrelevante se for privado.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.