Recomendações e experiências sobre qual licença escolher para o software?

26

Os desenvolvedores de software têm a opção de escolher uma licença apropriada de acordo com o (s) objetivo (s) do trabalho.

Alguém pode dar algumas recomendações / experiências sobre qual licença escolher para o software?

Quais são os prós / contras de "doar" todo o trabalho codificado como códigos de fonte aberta?

Como lidar com atores industriais que gostariam de se beneficiar do código de pesquisa?

Allan P. Engsig-Karup
fonte
Boa pergunta, eu estava pensando sobre isso também.
13271 milancurcic
Isso não é relevante para este site. Eu recomendaria postar em algo como Stack Overflow.
aterrel
Eu só quero corrigir a afirmação de Matt de que o software licenciado GPL / LGPL não pode ser usado comercialmente. Pode também! O software licenciado pela GPL pode ser usado para qualquer coisa que uma entidade comercial desejar, eles simplesmente não podem criar um produto de software derivado e vender (distribuir) como fonte fechada (o que deve ser suficiente se a entidade comercial não for uma empresa de software). A LGPL é mais permissiva e permite a venda de produtos de software fechados vinculados à biblioteca original. Concordo com Matt que o setor tem medo de usar o software GPL, mas é baseado em um conceito errado da GPL. Nós originalmente usado
Anders Logg
1
Discordo. Muitas pessoas investem muito tempo e muito esforço no desenvolvimento de novas bases de código para problemas desafiadores na ciência da computação. Como parte desse esforço, pode ser útil ter uma estratégia para compartilhar o trabalho com outras pessoas.
Allan P. Engsig-Karup
2
Sim, e muitas pessoas computacionais gastam tempo cozinhando, mas cozinhar está fora de tópico aqui. Existem outras trocas empilhadas para problemas básicos de software.
aterrel

Respostas:

18

Alguém pode dar algumas recomendações / experiências sobre qual licença escolher para o software?

A licença que você escolheu depende da liberdade que você deseja que seu código seja, mas a liberdade significa coisas diferentes para pessoas diferentes.

  • Para proponentes de licenças permissivas , grátis significa permitir que as pessoas agora usem o software da maneira que desejarem agora , sem se preocupar com a derivação futura livre .
  • Para proponentes de licenças copyleft , livre significa garantir que o software e qualquer derivação dela permaneçam livres , estando preparado para sacrificar algumas liberdades imediatas para garantir isso.

Quanto mais permissiva for uma licença, mais pessoas poderão usá-la, mas menos controle você terá sobre ela. Quanto mais restritivo, porém, maior a probabilidade de você adiar as pessoas usando o seu software.

Existem várias licenças de código aberto e gratuitas disponíveis, incluindo GPL <= 2, GPL 3 , LGPL , BSD , Eclipse e assim por diante. Existem prós e contras em cada um deles, portanto, leia quais restrições eles impõem ao código e decida quem você deseja usá-lo. Atenção , o que você escolher, alguém irá reclamar - este é um território de guerra santa .

No geral, é um ato de equilíbrio sutil e depende muito do público-alvo do seu software.

  • Um excelente recurso para determinar qual licença é a licença certa para você é o diferenciador de licença interativo e muito abrangente , do Oxford Universities OSS Watch .

Na minha opinião, as licenças permissivas e copyleft são apropriadas para o código científico - o importante é que o código seja de código aberto em primeiro lugar. Acredito que a ciência deve ser aberta, assim como o código usado para apoiar essa ciência.

Quais são os prós / contras de "doar" todo o trabalho codificado como códigos de fonte aberta?

A idéia de doar seu software é que, se outros acharem útil, eles o usarão.

Se eles o usarem, eles encontrarão, reportarão e frequentemente corrigem erros, economizando seu esforço de fazer o mesmo.

Se eles gostarem e o seu software fizer quase o que eles querem, eles poderão aprimorá-lo e contribuir com esses aprimoramentos.

Isso é um monte de ifs embora.

Como lidar com atores industriais que gostariam de se beneficiar do código de pesquisa?

Em primeiro lugar, se você quiser proibir o uso comercial do seu código, poderá selecionar uma licença com uma cláusula de não reutilização comercial.

Em segundo lugar, se você acha que alguém pode usar o seu software para alimentar um serviço, sem nunca distribuir o código para outra pessoa, considere o Affero GPL que conecta essa brecha específica do copyleft.

Em terceiro lugar, você pode fazer o acima e oferecer uma opção de licença dupla. A oferta de licenças GPL ou AGPL para download público e licenças comerciais mediante uma taxa oferece o melhor dos dois mundos e significa que você poderá gerar alguma receita com as vendas comerciais do seu software, o que pode ajudar a apoiar suas atividades científicas.

Observe que, se você quiser fazer isso, ofereça-o desde o início - o que provavelmente causará menos atrito por parte dos contribuidores de código aberto do que começar a oferecer licenças comerciais mais tarde. Se a sua comunidade se tornar popular, você não quer que as pessoas o acusem de vender, se você não tiver certeza da possibilidade de exploração comercial posteriormente. Idealmente, você deve configurar um Contrato de Licença de Colaborador (CLA) adequado antes de começar a aceitar contribuições de terceiros em sua base de código.

Esta resposta a esta pergunta também fornece algumas informações boas sobre esta opção.

Mark Booth
fonte
12

O PETSc usa essa licença , que é uma forma menos restritiva de BSD . A diferença crucial da GPL, é que o software pode ser usado comercialmente. Muitas pessoas têm uma objeção de princípio ao software fechado, no entanto, na minha experiência, nenhum negócio chegará perto do seu código se ele tiver uma licença GPL. Além disso, os usuários industriais do PETSc têm sido incrivelmente valiosos. Eles tendem a enfrentar problemas bastante complexos, que a maioria dos acadêmicos consideraria mais difícil do que o necessário para uma publicação. Eles também contribuíram com muito código para o PETSc, para que ele entrasse na cadeia de suporte normal. Eu recomendaria contra qualquer licença sem potencial de uso comercial e, de fato, defenderia a licença menos restritiva possível (você pode definitivamente gravar o PETSc em um CD e tentar vendê-lo para o crédulo).

Matt Knepley
fonte
Como foi financiado o desenvolvimento do PETSc? e como é suportado (através de financiamento) hoje? Como funciona com a manutenção da base de código do PETSc?
Allan P. Engsig-Karup
2
Aqui está o financiamento . Temos um repositório aberto e muitos colaboradores.
Matt Knepley
Sobre sua declaração sobre o código GPL: O OpenFOAM é GPL e amplamente utilizado na indústria. O motivo é que o código GPL só precisa ser tornado público para que o software seja distribuído. Somente as empresas que desejam vender seu código para um amplo público seriam afetadas pela licença GPL.
Akid
3
@akid Não consigo encontrar informações sobre os usuários do OpenFOAM no site, mas sou cético em relação à caracterização "amplamente usada". Posso dizer que pessoas de grandes empresas (Shell, Boeing, MS) declararam que a política da empresa para o código de pesquisa é nunca tocar na GPL. Talvez as pequenas empresas tenham mais margem de manobra, mas as maiores apenas querem evitar a aparência de impropriedade (observando o código GPL e codificando outra coisa).
Matt Knepley
2
@Tshepang O GNOME e o Linux são usados ​​como material de escritório, o que nunca acontecerá com o seu código científico. Quero dizer, quando você codifica é usado para fins diretamente relacionados ao negócio.
Matt Knepley
5

Eu uso a GPL, principalmente por causa do sentimento ao movimento original de código aberto (e, portanto, espero que ajude a se espalhar). Além disso, esta é paradoxalmente a melhor maneira de proteger seus possíveis ganhos dos capitalistas imorais - como autor, você sempre pode distribuir o código em uma licença diferente em paralelo e, assim, manter a versão proprietária para uso comercial de marca branca.
No entanto, isso também pode ser um problema - sua fonte de financiamento pode ter um aviso de que todo o seu trabalho deve se tornar de domínio público, o que vai além desta licença.

De qualquer forma, a coisa mais importante nesse tópico é que qualquer licença é melhor que nenhuma, o que infelizmente é comum no mundo do desenvolvimento científico - e eu odeio todos aqueles / * Roubados do programa de John Smith que ele nunca publicou * / ou A CI acha que vi isso no post de Jane Smith em algum grupo em 1995 ... ou talvez 1993?

mbq
fonte
1
Lembre-se de que, se o código não tem licença, na maioria dos países (que assinou a convenção de Berna ) ele ainda está coberto por direitos autorais, portanto, não pode ser legalmente usado por qualquer pessoa que não seja o detentor dos direitos autorais, muito menos redistribuído.
Mark Booth
@ MarkBooth Esse é o meu ponto.
MBq
5

Primeiro, os prós / contras de se tornar um código aberto:

Pro: mais pessoas usarão seu código, fornecerão comentários, correções, melhorias etc. Você acabará tendo um código melhor e mais pessoas que confiam nele.

Contras: se você quiser basear uma empresa em seu código, terá menos opções (mas ainda existem algumas, como a venda de serviços de consultoria)

Quanto à escolha de uma licença, eu continuaria na seguinte ordem:

  1. Seu empregador / agência de doações impõe alguma coisa? Então você não tem escolha. Verifique isso para todos os colaboradores do código.
  2. Você reutiliza o código que possui alguma licença específica que limita sua escolha? Então suas escolhas também são limitadas. Na prática, a integração de partes do código licenciado pela GPL é a fonte mais frequente de tais limitações.
  3. Decida o que você mais valoriza: a filosofia de todo o código deve ser aberto por trás da GPL e licenças similares ou a filosofia de incentivar o mais amplo possível por trás da licença BSD.
  4. Dentro de cada uma das duas grandes famílias de licenças de código aberto, escolha de acordo com o que é mais comum / aceito em sua comunidade.
Khinsen
fonte
5

A maior parte da minha pesquisa é financiada por fundos públicos e, portanto, sinto a obrigação de usar a licença menos restritiva possível. Se outras pessoas no meu país estiverem ajudando a pagar por essa pesquisa, eu realmente tenho o direito de dizer que elas não podem integrar meu código em uma fonte fechada e / ou distribuição de software comercial? Espero que a maioria das pessoas que usa meu código seja cientista acadêmico, mas não tenho problemas filosóficos com as empresas que aprimoram meu software, integrando-o a outro software (possivelmente comercial), colocando uma GUI nele, etc., para entregar um produto isso os ajuda a obter lucro.

Dito isto, tento usar licenças que exigem atribuição adequada. Por exemplo, se uma empresa não dobrar meu código em um produto comercial maior, eu quero que eles deixam claro que o meu código pode ser obtido livremente de mim. Mas, além disso, quero impor o mínimo de requisitos possível aos usuários do meu código.

Para o desenvolvimento de software que não é financiado por dólares dos contribuintes, entendo que outras licenças podem ser mais apropriadas.

Daniel Standage
fonte
5

Ninguém explicou isso muito claramente, então acho que vale a pena dizer:

Algumas das licenças de código aberto (principalmente: a GPL) são "virais" no sentido de que sempre que o código é usado em um novo projeto, o novo projeto deve ser licenciado da mesma maneira. Além disso, o código não pode ser vinculado a (de certas maneiras) código licenciado de maneira diferente.

Uma conseqüência prática é:

  • Se você implementar um novo método numérico em C, a licença não permitirá chamá-lo de software comum como MATLAB ou Mathematica

  • Se você implementar um novo algoritmo de processamento de imagem, a licença não permitirá criar um plug-in do Photoshop.

  • e assim por diante ...

Isso não apenas impedirá a reutilização comercial, mas também a reutilização conveniente por outros acadêmicos (se eles usarem software fechado) e, se alguém criar sobre o seu código, impedirá que eles denunciem seu trabalho em um "faça "o que você quiser com ele".

Isso é algo que você deve considerar antes de terminar de formular sua licença.

Coloquei desta maneira porque conheci pessoas (não muito familiarizadas com licenças de código aberto) que não estavam cientes disso ou não o consideraram desse ângulo.


(Esta é apenas uma opinião pessoal, mas acredito que a aplicação de tais restrições ao trabalho proveniente da academia (financiada publicamente) não é apropriada. Portanto, eu mantenho o código ou o denuncio.)

Szabolcs
fonte
4

Independentemente de qual licença você escolher, lembre-se de verificar cuidadosamente todos os seus contratos de financiamento para garantir que não haja cláusulas neles que ditem ou restrinjam como você pode licenciar seu software.

Eu sei que no meu caso muitos dos meus projetos são construídos a partir de várias camadas de financiamento, um pouco aqui e um pouco ali, e manter o controle de como eu estou autorizado a licenciar as minhas coisas pelas pessoas que mantêm as luzes acesas e as máquinas em execução são bastante complexas.

Fomite
fonte
4

Para grandes quantidades de código, busco uma das licenças descritas nas outras respostas, e geralmente LGPL. No entanto, embora geralmente não seja recomendado para software , para pequenos scripts independentes que eu possa estar enviando a um colega do setor, geralmente opto por uma licença Creative Commons . Isso ocorre porque eles tendem a ser mais claros para o indivíduo para quem eu envio o código, o que interrompe qualquer problema potencial de mal-entendido. Isso funcionou bem para mim no passado.

qubyte
fonte
4

Ao contrário da maioria das pessoas que atendem aqui (que trabalham em organizações acadêmicas e / ou públicas), estou trabalhando na esfera comercial.

Para meus produtos, o código está fechado e continuam a existir grandes vantagens comerciais para isso. Mas existem outras maneiras de fazê-lo (por exemplo, como demonstrado pelo MySQL, entre outros). Costumo ver a abordagem de licença comercial LGPL + para bibliotecas. Ainda tenho que usar essa biblioteca em um sistema comercial, mas não a descartaria (até agora, apenas usei essas bibliotecas, por exemplo, ALGLIB, no nível de P&D). Isso contrasta com um produto GPL - que eu poderia usar internamente, mas nunca usaria em um produto, principalmente devido à natureza viral.

Quando libero o código-fonte (exemplos de instruções, programas gratuitos etc.), normalmente uso a licença de Berkeley. Isso parece ser muito mais no espírito do código "livre", com atribuição, mas sem as cordas e a política da GPL. Talvez seja por isso que (ou licenças semelhantes, como a licença MIT) sejam tão populares entre universidades e organizações públicas. O código-fonte é distribuído no verdadeiro significado de 'grátis' (aqui está um código, faça o que você quiser com ele), mas o autor ainda recebe crédito / atribuição.

winwaed
fonte
Não fui eu quem votou contra, e na verdade gostaria de votar, como parece que você prefere a licença BSD e mais detalhes sobre o porquê de ser interessante. No entanto, há um problema. A linguagem usada é provocativa. Exatamente as mesmas informações podem ser comunicadas sem a bílis, e você provavelmente chegaria a mais pessoas com sua mensagem.
qubyte
@ MarkS.Everitt: Além do comentário sobre a política, o que exatamente aqui é provocativo?
aeismail
Sim, nenhuma bílis foi planejada. Meu comentário sobre a política da GPL é uma opinião pessoal, mas também uma observação - presumi que o voto negativo era exatamente o tipo de política que me afasta (como ouso criticar a GPL e escrever código fechado!)
winwaed
Tome, por exemplo, sua frase de abertura. Este é um eu imediato contra você , que é continuado na sentença "Ao contrário do que ...". Não deveria importar, mas infelizmente importa. Também é uma ladeira escorregadia para gerar argumentos, e um jovem SE não precisa deles.
qubyte
A primeira frase define o contexto da minha resposta - TODOS estão escrevendo a partir de suas próprias experiências, admitindo ou não. O contexto é importante - e eu pensei que era especialmente assim para mim. Vou tentar editar o próximo parágrafo, mas posso desistir e excluir a coisa toda. Eu pensei que tinha algo de útil a dizer ...
Winwaed
0

Essa é uma pergunta antiga, mas acho que vale a pena mencionar a Licença Pública Mozilla como um meio termo entre licenças permissivas (BSD, MIT) e licenças copyleft fortes (GPL). O código MPL pode ser usado e redistribuído, mas o código MPL e quaisquer modificações nele devem ser disponibilizados. Por exemplo, uma empresa pode pegar algum código MPL, fazer seus próprios aprimoramentos e distribuí-lo em um pacote de software de código-fonte proprietário, desde que disponibilize sua versão modificada do código MPL original. Eles não são obrigados a liberar todo o seu próprio código-fonte, como fariam com a GPL.

Com a licença BSD, existe o medo de que uma empresa possa pegar seu código e melhorá-lo sem devolver essas contribuições a você ou à comunidade em geral, sob a lógica de que as melhorias que eles fazem a ele conferem uma vantagem competitiva. (A resposta de Matt Knepley sugere que nem todos agem assim). Por outro lado, muitas pessoas podem evitar completamente o código GPL. O MPL evita essas duas armadilhas potenciais, pelo menos em princípio.

Daniel Shapero
fonte