Respostas:
Você pode usar um programa GPLed a partir de seu próprio programa sem que seu programa seja afetado pela GPL, mas não pode vincular o código GPLed a seu próprio programa sem que seu programa fique sujeito aos termos da GPL.
No exemplo fornecido na pergunta, no qual você escreveu um wrapper de GUI em torno de um programa de linha de comando existente, sua GUI não está vinculada aos termos da GPL, desde que seja um programa separado que execute o programa GPL em um separar o processo e se comunicar com ele somente através da (s) interface (s) existente (s) - por exemplo, pela linha de comando e / ou via stdin / stdout.
Alguns bits relevantes da FAQ da GPL :
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).
Se os módulos estiverem incluídos no mesmo arquivo executável, eles definitivamente serão combinados em um programa. Se os módulos são projetados para serem executados vinculados em um espaço de endereço compartilhado, isso quase certamente significa combiná-los em um programa.
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.
Posso lançar um programa não-livre projetado para carregar um plug-in coberto pela GPL?
Depende de como o programa chama seus plug-ins. Por exemplo, se o programa usa apenas fork e exec simples para chamar e se comunicar com plug-ins, então os plug-ins são programas separados, portanto, a licença do plug-in não requer requisitos sobre o programa principal.
Se o programa vincular dinamicamente plug-ins e eles fizerem chamadas de função entre si e compartilharem estruturas de dados, acreditamos que eles formarão um único programa, que deve ser tratado como uma extensão do programa principal e dos plug-ins. Para usar os plug-ins cobertos pela GPL, o programa principal deve ser lançado sob a GPL ou uma licença de software livre compatível com GPL, e que os termos da GPL devem ser seguidos quando o programa principal for distribuído para uso com esses plug-ins.
Se o programa vincular dinamicamente plug-ins, mas a comunicação entre eles se limitar a chamar a função 'principal' do plug-in com algumas opções e aguardar o retorno, esse é um caso limítrofe.
Observe que a GPL se aplica integralmente ao programa de linha de comando subjacente em qualquer caso - se você o distribuir (em vez de os usuários obtê-lo de outra fonte), você é responsável por fornecer uma cópia da GPL aos usuários, tornando-a deixe claro para eles que o programa de linha de comando está sob a GPL (mesmo que o wrapper da GUI não esteja) e disponibilize o código-fonte do programa de linha de comando a pedido. No FAQ da GPL novamente:
Se as pessoas distribuírem software coberto pela GPL, chamando-o de "parte de" um sistema que os usuários sabem ser parcialmente proprietário, os usuários podem ter dúvidas sobre seus direitos em relação ao software coberto pela GPL. Mas se eles souberem que receberam um programa gratuito e outro programa lado a lado, seus direitos serão claros.
Isenção de responsabilidade padrão: não sou advogado e, mesmo sendo advogado, não sou seu advogado. Se você precisar de uma resposta definitiva, consulte um profissional jurídico apropriado, licenciado para atuar em sua jurisdição.
Depende do que você quer dizer com usá-lo?
Também depende exatamente de qual versão / variante da GPL o outro código está.
Isenção de responsabilidade legal: não sou advogado.
Isso depende de como exatamente o seu programa está "usando" o programa GPL. O FAQ da GPL tem uma explicação bastante longa , mas ainda deixa muito em aberto para a interpretação:
Você não pode incorporar software coberto pela GPL em um sistema proprietário. (...) 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. (...) 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.Se os dois programas permanecerem bem separados, como o compilador e o kernel, ou como um editor e um shell, você poderá tratá-los como dois programas separados - mas precisará fazê-lo corretamente. A questão é simplesmente uma das formas: como você descreve o que está fazendo. Por que nos preocupamos com isso? Porque queremos garantir que os usuários entendam claramente o status livre do software coberto pela GPL na coleção.
Eu acho que no seu exemplo de uma GUI que existe principalmente para chamar um programa GPL de linha de comando, os dois formam claramente um único programa, então você teria que liberar seu código sob a GPL.
Não.
O código GPL pode ser usado apenas por outro código GPL.
Citando a primeira linha do artigo da GPL da wikipedia :
A GPL é a primeira licença copyleft para uso geral, o que significa que trabalhos derivados podem ser distribuídos apenas sob os mesmos termos de licença.
Além disso, a GPL tem várias páginas e existe em várias versões.
Aviso, discurso pessoal à frente!
Pessoalmente, não gosto muito da licença GPL devido à sua natureza muito restritiva e semelhante a vírus. Eles o chamam de "grátis", mas, na verdade, é exatamente o contrário, o código GPL não pode ser usado por nada, exceto outro código GPL. Forçando assim outros projetos à GPL ou sendo forçado a reescrever bibliotecas inteiras, independentemente de seu projeto atual ser de código aberto ou não. Havia grandes projetos de código aberto, como o freeBSD, por exemplo, que foram forçados a reescrever centenas de milhares de linhas de código linux porque sua licença era incompatível, era muito "livre" no sentido de "fazer o que você quiser", o que obviamente é não é compatível com a GPL.
Se você deseja uma licença verdadeiramente "gratuita" no sentido de "faça o que quiser", recomendo a licença BSD ou MIT ... na verdade, a maioria das outras licenças está OK. É apenas a GPL que é realmente problemática, porque quão restritiva é e como força outras pessoas a entrar nela. Por fim, é excessivamente complicado.
Ah, sim, também é uma passagem só de ida. A GPL pode usar código / bibliotecas licenciadas na maioria das licenças, mas essas bibliotecas / códigos não podem usar o código GPL por sua vez.