Você pode alterar o código distribuído sob a licença MIT e redistribuí-lo sob a licença GPL? [fechadas]

57

É possível alterar o código do plugin Chili , lançado em julho de 2008 e licenciado sob a licença MIT, para licenciá-lo sob a GPL?

Até onde posso ver, não há restrições quanto ao novo código ser licenciado sob a mesma licença. É realmente verdade ou existe um número mínimo de alterações?

No meu caso, eu alteraria o plugin jQuery no código Javascript normal que é executado em um CMS. Isso significa essencialmente que, entre outras coisas:

  • O código não usará o espaço de nome "ChiliBook".
  • A função não será chamada como $($element).chili(), mas como GlobalObject.ChiliHighlighter.process($jquery_element), onde "GlobalObject" é um objeto JavaScript usado no CMS.
  • O código permitirá que outros módulos alterem o GlobalObject.ChiliHighlighterobjeto para adicionar funções que são opcionalmente chamadas a partir de GlobalObject.ChiliHighlighter.process()quando são definidas.

Como alternativa, como o repositório que estou usando me permite incluir código não licenciado sob a licença GPL 2 ou superior quando o código não é mais mantido, o plug-in pode ser considerado não mais mantido, pois sua última versão foi lançada há três anos?

kiamlaluno
fonte
2
Se você realmente quer uma resposta autoritária, você deve consultar um advogado (na jurisdição relevante, por exemplo, a resposta poderia ser diferente na Itália do que nos EUA)
MarkJ

Respostas:

59

É tecnicamente legal.

A licença do MIT (Expat) impõe algumas restrições a você. Estes são um subconjunto da licença GPL. Portanto, se você relicenciar o código sob a GPL e manter o aviso do MIT, cumpriu os termos da licença do MIT e poderá redistribuir legalmente o código.

Observe que você não pode reivindicar a propriedade dos direitos autorais; você precisará reconhecer os direitos autorais originais.

[editar] Algumas pessoas parecem não entender como o F / OSS funciona em conjunto com a lei de direitos autorais e licença. Tudo começa com direitos autorais, mesmo que seja o padrão. Sob a doutrina de direitos autorais, o autor tem o direito de fazer cópias do código fonte. Sob a licença do MIT, esse direito é concedido a mim, assim como o direito de concedê-lo recursivamente a outras pessoas. Observe que a licença do MIT inclui explicitamente o direito de sublicenciar. Citação:"the rights to use, copy, modify, merge, publish,distribute, sublicense, and/or sell"

Quando sublicencio código, não posso conceder direitos que não possuía originalmente. No caso da GPL, sou expressamente proibido sublicenciar apenas alguns direitos. Mas nem na lei nem na licença do MIT tenho a obrigação de sublicenciar todos os direitos como um todo.

Portanto, a licença do MIT me concede o direito explícito de sublicenciar direitos, e nem a lei nem a licença do MIT me proíbem sublicenciar apenas alguns direitos. Além disso, nenhum deles restringe a forma em que eu faço. Portanto, tenho o direito inegável de conceder uma sublicença GPL nesse código.

MSalters
fonte
6
@artec: você não está alterando a licença sob a qual recebeu o código. Você está criando uma nova licença entre você e o novo destinatário, e ele pode ter os termos que você desejar. (O novo destinatário pode obter direitos adicionais sob a licença original, mas isso não afeta a nova licença.) A norma é que uma sublicença conceda uma fração dos direitos da licença original. Por exemplo, uma sublicença raramente inclui o direito de sublicença, que a licença original deve ter incluído para que haja uma sublicença.
David Schwartz
3
@artec: Essencialmente, você está argumentando que uma licença de direitos autorais que concede o direito de sublicenciar de alguma forma, na verdade, não concede o direito de sublicenciar. Não sei ao certo em que base você está argumentando. Você cita alguma autoridade legal relevante? Você está dizendo que um detentor de direitos autorais não pode conceder a outras pessoas o direito de licenciar seu trabalho? Ou você acha que a licença do MIT, de alguma forma, falha em fazer isso ou não pretende?
David Schwartz
11
@ David: você parece não entender o que significa "sublicenciar".
vartec
11
@artec: Um link para uma fonte que explica que seria ótimo, porque acho que você não entende o que isso significa.
David Schwartz
7
A licença do MIT contém esta parte: "O aviso de direitos autorais acima e este aviso de permissão devem ser incluídos em todas as cópias ou partes substanciais do Software". Isso significa que qualquer garfo precisaria estar disponível sob a licença MIT. As alterações podem ser listadas como GPL. O garfo pode ser listado como GPL + MIT. Mas o garfo não pode ser listado apenas como GPL - isso é uma clara violação da licença do MIT.
Jonathan Vanasco 17/07
26

Sim. Mas o efeito pode não ser o que você pensa que é.

A licença do MIT inclui todos os direitos que a GPL concede e muito mais. E enquanto as pessoas que recebem sua distribuição recebem apenas uma licença GPL para os elementos que você adicionou, elas ainda recebem uma licença MIT (dos autores originais, não de você) para quaisquer elementos contidos no trabalho que os autores ofereceram sob essa licença.

Eles podem não saber disso, e até onde eu sei, nenhuma lei obriga você a contar a eles. Mas se eles "violarem" a licença da GPL com relação à expressão protegível contida no trabalho que você não criou (ou que não foi contribuído por outras pessoas para a liberação somente da GPL), eles não violaram sua licença ou seus direitos autorais. (Na verdade, isso deve ser bastante óbvio - você detém apenas direitos autorais da expressão que criou.)

Portanto, você não converteu nenhum elemento com direitos autorais da licença MIT para a licença GPL. Você simplesmente adicionou novos que são oferecidos apenas sob a licença GPL e liberou os elementos em um trabalho misto / combinado.

David Schwartz
fonte
portanto, na prática, eu faria o seguinte: copie um projeto do MIT, substitua tudo o MIT pela GPL (para que não haja nenhum vestígio do projeto ter sido o MIT) e, em seguida, vincule-o ao projeto original do MIT em alguns lugares importantes (nem todos os no entanto, mencionando que o projeto base está disponível no MIT. seria legal / legal (dado que guardo as declarações originais do proprietário dos direitos autorais)?
hoijui
11
@hoijui Você deve deixar intactos todos os cabeçalhos de licença e avisos de permissão do MIT e incluí-los em seu novo projeto. E, a menos que sua intenção seja enganar, não vejo por que você substituiria todas as menções ao "MIT". Não vai mudar nada, as peças que você tirar ainda serão licenciadas pelo MIT. Basta adicionar seu próprio cabeçalho de licença GPL abaixo dele, ele será válido para todas as alterações de direitos autorais (ou seja, não apenas para renomear variáveis) que você fizer no código-fonte. Aliás, é por isso que a maioria dos projetos tem um cabeçalho de direitos autorais em todos os arquivos.
jmiserez
@jmiserez ok. então vamos ver um arquivo do meu projeto: deixo o cabeçalho do MIT, faço algumas alterações e adiciono um cabeçalho GPL (como eu quero que minhas alterações estejam disponíveis apenas sob a GPL). agora uma terceira pessoa que publicasse meu arquivo teria que honrar o MIT e a GPL? nunca vi um arquivo com dois cabeçalhos de licença e, penso, a maioria das pessoas escolheria a licença de que gosta, pois não sabe qual é o caminho legalmente correto. Além disso, por que preciso incluir o MIT, se honrando a GPL, uma automaticamente também homenageia o MIT?
hoijui
@hoijui Todos os direitos que você possui sob a licença MIT vêm com a restrição “O aviso de direitos autorais acima e este aviso de permissão serão incluídos em todas as cópias ou partes substanciais do Software.” Mas, sinceramente, não tenho certeza se você precisa manter todos dos avisos, ou apenas um, IANAL. Mas tenho certeza de que você precisa incluir um aviso em algum lugar. Caso contrário, você não estará mais em conformidade com a licença MIT, o que significaria que você perderia todos os direitos de usar o código no seu projeto. FYI o kernel Linux tem os arquivos com múltiplas licenças, eles usam cabeçalhos SPDX: lwn.net/Articles/739183
jmiserez
11
Quão triste é que alguém queira tentar o código GPL que foi construído em uma licença do MIT. Parece ser contra tudo o que a licença do MIT representa.
Andrew T Finnell
8

Nada a acrescentar às explicações nas respostas já fornecidas, mas aqui estão as instruções de como moldar os cabeçalhos dos arquivos de origem ( origem ):

2.2 Adicionando modificações da GPL a arquivos com licença permissiva

Um caso mais complicado ocorre quando um desenvolvedor faz alterações protegidas por direitos autorais em um arquivo com licença permissiva que o desenvolvedor está incorporando a um programa da GPL. Os desenvolvedores nessa situação geralmente aplicam a GPL a suas modificações. (No entanto, é possível que o desenvolvedor contribua com um novo código sob termos permissivos, como a licença permissiva que governa o arquivo não modificado. Discutimos esse caso no § 2.3.)

Mesmo que a licença permissiva do projeto externo conceda permissão legal para incorporar o código desse projeto em um projeto da GPL, o desenvolvedor do projeto da GPL deve, no entanto, cumprir o requisito de preservação de aviso na licença permissiva. Em um projeto que usa o método arquivo por arquivo, um desenvolvedor que faz modificações protegidas por direitos autorais em um arquivo licenciado permissivo deve colocar um novo aviso de direitos autorais e um aviso de permissão acima do existente e deixar claro que o desenvolvedor modificou o arquivo. A parte superior do arquivo aparecerá da seguinte maneira:

/*  
 * Copyright (c) 2007  GPL Project Developer Who Made Changes   
 *  
 *  This file is free software: you may copy, redistribute and/or modify it  
 *  under the terms of the GNU General Public License as published by the  
 *  Free Software Foundation, either version 2 of the License, or (at your  
 *  option) any later version.  
 *  
 *  This file is distributed in the hope that it will be useful, but  
 *  WITHOUT ANY WARRANTY; without even the implied warranty of  
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU  
 *  General Public License for more details.  
 *  
 *  You should have received a copy of the GNU General Public License  
 *  along with this program.  If not, see .  
 *  
 * This file incorporates work covered by the following copyright and  
 * permission notice:  
 *  
 *     Copyright (c) YEARS_LIST, Permissive Contributor1   
 *     Copyright (c) YEARS_LIST, Permissive Contributor2   
 *  
 *     Permission to use, copy, modify, and/or distribute this software  
 *     for any purpose with or without fee is hereby granted, provided  
 *     that the above copyright notice and this permission notice appear  
 *     in all copies.  
 *  
 *     THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL  
 *     WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED  
 *     WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE  
 *     AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR  
 *     CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS  
 *     OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,  
 *     NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN  
 *     CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.  
 */

É muito importante que o desenvolvedor preserve todo o aviso de direitos autorais, o aviso de permissão e a isenção de garantia da garantia conforme eles apareceram no código original, conforme exigido pela licença permissiva. Às vezes, vemos avisos da GPL misturados com avisos de licença permissivos - uma prática confusa que obscurece tanto a proveniência do código quanto as permissões precisas que foram concedidas pelos vários detentores de direitos autorais listados nos avisos. Quando diferentes detentores de direitos autorais liberarem suas contribuições sob termos diferentes, os termos que cada um colocou em sua contribuição específica devem ser especificados. Recomendamos fazer uma separação clara e usar recuo, como no exemplo acima.

Essa maneira de organizar os avisos no arquivo torna conveniente para os desenvolvedores escolherem contribuir com termos permissivos ou com a GPL. Se eles desejam disponibilizar suas contribuições sob termos permissivos, podem adicionar seus avisos de direitos autorais ao grupo inferior. Se eles desejam contribuir com a GPL, podem adicionar seus avisos de direitos autorais no topo. Observe, no entanto, que em um único arquivo de origem é tipicamente muito difícil e muitas vezes completamente inviável determinar quais partes de um arquivo são cobertas por termos permissivos. Se o objetivo é disponibilizar código adicional somente sob termos permissivos, o método descrito no § 2.3 deve ser usado.

hoijui
fonte