A resposta da DougM e da AER faz uma observação justa. MPLv2 e LGPLv3 com exceção estática são os mesmos em relação aos eventos que acionariam o copyleft. No entanto, acho que estamos perdendo outra diferença muito importante entre LGPL e MPL. Quando o copyleft é acionado, o copyleft se aplica a:
- para MPL: exatamente os mesmos arquivos da sua biblioteca original
- para LGPL: ao "trabalho baseado na biblioteca", em oposição ao "trabalho que usa a biblioteca". Portanto, o LGPL pode potencialmente estender seu copyleft para novos arquivos.
Borda: o uso de MPL permite que os usuários não compartilhem suas melhorias
MPL é uma licença copyleft no nível de arquivo. Isso significa que se alguém o incorporar em um projeto maior (estaticamente ou dinamicamente) e fizer uma alteração no seu arquivo, ele precisará liberar a alteração feita nesse arquivo em particular.
Se você estiver preocupado em manter aberta a integridade da sua base de código, há casos extremos nos quais esse efeito copyleft da MPL pode não ser suficiente.
Por exemplo, alguém pode pegar um dos arquivos principais do seu projeto, adicionar "import my_private_new_file" e modificar seu método principal, por exemplo, adicionando "my_private_new_file.newAwesomeFeature.run ()" .
E dessa maneira ele poderia adicionar novos recursos ao seu projeto enquanto apenas liberava o arquivo principal modificado e mantinha a lógica real do novo recurso fechada em "my_private_new_file" .
Ter o arquivo principal de volta à comunidade apenas fornece as informações de que "ei, você adicionou um novo recurso", mas não permite que você incorpore esse novo recurso em campo aberto ... Pode ser irritante se o novo recurso estiver próximo relacionado ao problema que sua biblioteca está tentando resolver.
Obviamente, esse é um caso extremo e é pouco provável que alguém queira fazer isso, mas é um risco que você deve estar ciente ao usar o MPLv2.
A LGPL foi criada para proibir tais comportamentos. Vejo:
Cito a licença LGPL original:
Preste muita atenção à diferença entre um "trabalho baseado na biblioteca" e um "trabalho que usa a biblioteca". O primeiro contém código derivado da biblioteca, enquanto o último deve ser combinado com a biblioteca para ser executado.
O copyleft se aplica apenas ao "trabalho baseado na biblioteca". Agora, o que é um "trabalho baseado na biblioteca" na prática? Deixa espaço para a interpretação. O que não é apenas uma coisa agradável, pois significa que o cumprimento da sua licença se torna mais complicado e, portanto, assustador. Isso pode levar algumas pessoas a simplesmente não usar sua biblioteca.
Nesse sentido, a LGPL é mais restritiva que a MPL, mas também mais protetora da integridade do projeto.
A MPL facilita para os usuários do mundo proprietário corrigir sua biblioteca e usá-la, enquanto ainda precisa compartilhar a correção
Uma vantagem para o MPL é que, se um usuário encontrar um bug na sua biblioteca, ele poderá corrigi-lo diretamente no arquivo, sem precisar fornecer todo o código, mas apenas fornecendo a correção. Na prática, ao distribuir seu trabalho para um cliente, ele pode apenas fornecer um link para um fork do seu projeto contendo a correção, e ele é bom.
Ao usar LGPL, as coisas ficam mais complicadas. Se alguém bifurcar o seu projeto, corrigir um bug e incorporá-lo estaticamente ao seu software proprietário, ele deverá distribuir aos seus usuários o "trabalho baseado na biblioteca" sob a LGPL. Qual é uma noção bastante obscura, especialmente quando a biblioteca está estaticamente incorporada ... Nesse aspecto, acho que foi a razão original pela qual não existe uma exceção "estática" na LGPL original. Torna a identificação do "trabalho baseado na biblioteca" trivial: é a biblioteca dinâmica que você chama no seu software proprietário.
Como resultado, o MPL torna muito mais fácil para os fornecedores proprietários usar E enviar correções para sua biblioteca do que o LGPL.
Ao mesmo tempo, na maioria das vezes os fornecedores proprietários não têm recursos nem tempo para mergulhar em sua complicada biblioteca e provavelmente não o consertariam sozinhos. Eles preferem abrir um problema no seu repositório do GitHub ou enviar um email na lista de emails e aguardar sua correção.
Nesse sentido, a LGPL reforça mais esse tipo de comportamento. Mas a imposição é realmente necessária?
Conclusão
Escolher entre LGPL e MPL é uma pergunta complicada e, como de costume na licença de software, depende do seu objetivo. Ambas as licenças são muito semelhantes, mas ao mesmo tempo extremamente diferentes. Eles foram projetados para objetivos e filosofia muito diferentes.
A LGPL foi criada pela Free Software Foundation para permitir o amplo uso de bibliotecas de software livre no mundo proprietário, mas sempre com a ideia de promover o software livre e combater softwares proprietários. Tudo faz parte de uma estratégia em direção à sua ideologia. Veja:
https://www.gnu.org/licenses/why-not-lgpl.html
MPL é uma licença prática projetada pela Mozilla para impor algum tipo de compartilhamento à biblioteca original, enquanto ainda encoraja as pessoas a criar softwares e complementos proprietários no topo (incluindo o próprio Mozilla), que é uma prática que a FSF autoriza via LGPL, mas ainda considera prejudicial.
Por essência, o MPLv2 é considerado por muitos como uma licença permissiva, enquanto o LGPLv3, incluindo exceção estática, raramente é chamado dessa maneira.
EDITAR
Eu esqueci de mencionar algo importante. LGPLv3 (com ou sem exceção estática) proíbe a tivoização . Você pode pensar que é um "detalhe", mas na verdade não é, dependendo do seu objetivo. Você se preocupa com os usuários Freedom? Então não é um detalhe. Você se importa que sua biblioteca possa ser usada no dispositivo da Apple? O VLC se preocupa mais com o uso, então eles decidiram usar o LGPLv2, que não contém essa restrição. Da mesma forma, essa é uma das razões pelas quais o Linux continua usando a GPLv2 . O MPLv2 também não tem nenhuma restrição de ativação, obviamente, pois é uma licença criada com a filosofia de código aberto mais "prática" em mente, não a ideologia da FSF.
Pode haver outras coisas "menores" como essa que eu perdi.