Como usar licenças de código aberto e o que você recomenda para mim

8

Eu tenho um código que gostaria de compartilhar, mas gostaria de publicá-lo usando uma licença de código aberto. Mas não sei como você deve usar essas licenças.

Como você precisa ativar uma licença de código aberto? Apenas incluindo o texto da licença em todos os arquivos? O que mais eu tenho que fazer? Preciso comprar algo certo? Incluir um readme.txt em todos os diretórios? Quero dizer, o que devo fazer se quiser que meu código seja protegido pelo teste legal de uma licença?

A segunda pergunta é qual é a melhor licença para essas condições:

  • Não me importo com o que as pessoas fazem com meu código, propósitos educacionais, para ganhar dinheiro, não me importo com o que elas querem fazer com ele.
  • Mas quero que as pessoas não excluam meu nome do código e, se usarem meu código, forçam-nas a me mencionar. Se eles mudarem meu código e alguém solicitar essas modificações, eles fornecerão o código com as modificações.
  • Mas não quero forçar as pessoas a publicar o código de seus aplicativos, mesmo que estejam usando meu código.

Qual é a melhor licença para esse fim?

Pedro Ballesteros
fonte
Eu acho que você precisa ser mais claro sobre o que deseja. "Se eles mudarem o seu código e alguém pedir essas modificações" - você quer dizer como em um aplicativo da Web ou em um aplicativo de desktop ou em ambos? Isso é realmente relevante para a licença, surpreendentemente!
22611 Robin Green
obrigado pelo ponto, acabei de esclarecer em comentários posteriores, só quero que se alguém usar meu código, será obrigado a dizer em qualquer lugar (sobre, web, etc) que o código é meu. Mas não me importo se eles não querem transformar seu projeto em um projeto de código aberto apenas porque estão usando meu código.
Eu acho que é claro, você faz um presente (o código), e as pessoas podem usar esse presente como algo semelhante, podem usá-lo até para obter lucro, e você não se importa. Mas você quer que as pessoas saibam que estão usando seu código, é isso.
Notei que muitas pessoas aqui sugeriram o uso do BSD de 4 cláusulas. Tecnicamente, essa licença nem é de código aberto, de acordo com o OSI. Não concordo com a visão dos projetos GNU sobre as coisas, mas acho que vale a pena ler o artigo deles sobre o BSD de 4 cláusulas . tl; dr - Isso leva a milhares de sentenças de atribuição em anúncios de grandes projetos, como distribuições Linux ou BSD.
precisa saber é o seguinte

Respostas:

13

Aqui está um guia útil:

http://i.stack.imgur.com/GvOBw.png

As referências às versões PDF e Graffle do fluxograma acima estão disponíveis no blog de Karl Fogel .

RHPT
fonte
1
[-1] Embora compreenda perfeitamente que, principalmente, deveria ser engraçado, e não informativo, também acredito que não deve conter defeitos, que podem induzir alguém em algo tão complicado como o licenciamento; mas contém alguns. [Veja os próximos comentários]
Dmitry Alexandrov
1
① O gráfico é intitulado 'Qual licença de código aberto?' e a infame licença BSD de 4 cláusulas é uma das opções. Porém, o software sob o 4-BSDL não é considerado OSI como 'código aberto'. É chamado de 'livre' de acordo com a FSF, mas ainda não é altamente recomendado .
Dmitry Alexandrov
1
② 'Creative Commons' não é uma licença, é uma fundação que publicou várias licenças fundamentalmente diferentes, que variam da dedicação de domínio público CC0 à 'licença de publicidade gratuita' CC-BY-NC-ND, a maioria delas é não livre.
Dmitry Alexandrov
③ Embora a proposição de segundo plano de que, ao escrever algo para infraestrutura (em vez de programa independente), você deva aplicar a licença aceita, é claro, é correta, os softwares Perl e Mozilla e não licenciados apenas sob Artistic e MPL, respectivamente. Perl está sob Artisic ou GPLv1 +, o software Mozilla está sob MPL ou GPLv2 ou LGPLv2.1, onde 'ou' significa disjunção de restrições; portanto, escolhendo apenas uma licença da lista, você falha na compatibilidade.
Dmitry Alexandrov
5

Use a licença BSD original de 4 cláusulas .

  • Não me importo com o que as pessoas fazem com meu código, propósitos educacionais, para ganhar dinheiro, não me importo com o que elas querem fazer com ele.

  • Mas não quero forçar as pessoas a publicar o código de seus aplicativos, mesmo que estejam usando meu código.

Como a maioria das licenças de código-fonte aberto, ele permite ao usuário modificar e redistribuir a fonte. Permite que eles o usem para qualquer finalidade.

  • Mas quero que as pessoas não excluam meu nome do código e, se usarem meu código, forçam-nas a me mencionar.

Diferentemente da maioria das licenças modernas aprovadas pela OSI, essa é a chamada "cláusula de publicidade", o que significa que os autores de software que usam sua biblioteca devem mencionar que o produto deles contém código desenvolvido por você.

Texto da cláusula:

"Todos os materiais de publicidade que mencionam os recursos ou o uso deste software devem exibir o seguinte reconhecimento: Este produto inclui software desenvolvido pelo <organization>."

  • Se eles mudarem meu código e alguém solicitar essas modificações, eles fornecerão o código com as modificações.

Isso é meio problemático. Somente licenças de cópia esquerda exigem isso. O uso da licença de cópia esquerda é contraditório com os demais requisitos.

vartec
fonte
1
A versão original de 4 cláusulas não é listada pela Open Source Initiative como uma licença de código aberto (consulte opensource.org/licenses/bsd-license ). Há proliferação de licenças e incompatibilidades de licenças suficientes sem a necessidade de trazer licenças antigas ou variantes.
David Thornley
1
@ David: é claro que não está listado pelo OSI, a cláusula de propaganda não é compatível com a definição do OSI.
precisa saber é
A licença antiga do BSD foi descontinuada porque obrigou a compilar infinitas listas de nomes no aviso final de direitos autorais. A nova licença BSD é igualmente adequada (e provavelmente mais) no seu caso: o nome do autor deve permanecer com o próprio código.
Denis de Bernardy
1
O OP diz "Se eles mudarem meu código e alguém solicitar essas modificações, eles fornecerão o código com as modificações". O BSD não exige isso. Não está à esquerda da cópia. LGPL pode ser melhor.
MarkJ
3

Não sou advogado e o seguinte não é aconselhamento jurídico, mas o que reuni sobre a lei de direitos autorais como programador.

Se você cria um software, possui os direitos autorais, a menos que alguém lhe pague para escrevê-lo. Você deve indicar os direitos autorais do software ou em README, seguido dos termos da licença ou, se estiver usando uma licença detalhada como a GPL, um ponteiro para onde a licença pode ser encontrada. Se você agora publicar seu software, ele será coberto pela licença. Você deve informar o usuário da licença, por exemplo, em um instalador ou no manual.

O tipo de licença que você deseja soa como um copyleft, mas mais fraco que a GPL. Considere a Licença Pública Geral Menor GNU (LGPL).

Fred Foo
fonte
Não acredito que a (L) GPL tenha uma causa de atribuição que "os obrigaria (pessoas usando o código) a me mencionar (o autor original)", como Pedro mencionou.
2
@danielkza: Eu acredito que você não pode remover legalmente o aviso de direitos autorais de um trabalho protegido por direitos autorais, portanto o nome do OP não pode ser removido.
Fred Foo
1
@larsmans: Eu acredito que ele quer que seu nome não seja mencionado no código em si, mas nos créditos / sobre o rodapé da caixa / site / etc. Eu posso ter interpretado mal, no entanto.
Muito obrigado pela resposta. Informação muito útil. É como eu pensava, mas não tinha certeza. Vou ver alguns projetos de código aberto para ver como eles incluem o texto legal.
Acho que vou ler essas duas licenças, GPL e LGPL, para ver o que é melhor para mim.
2

A Free Software Foundation tem tido muito sucesso na busca de litígios contra pessoas que violaram os termos de sua licença de código aberto. Lembro-me de um artigo de ~ 2006 mostrando que eles eram 4 para 4 naquele momento; mais recentemente, eles resolveram ações contra a Cisco, Skype e Verizon, resultando em pagamentos para a FSF. Em geral, no entanto, o processo começa apenas após tentativas repetidas de informar o réu de suas obrigações. Portanto, para economizar tempo, exija que o usuário clique em um botão 'aceitar' em uma caixa de diálogo de licença padrão, salve o arquivo de termos de licença em sua própria pasta 'licença' e você deve estar pronto.

No que diz respeito à licença específica de uso, parece muito com a LGPL, que faz tudo o que você pede, exceto possivelmente a parte da atribuição - você pode ter que fazer disso uma estipulação separada.

Matt Phillips
fonte
Graças eu vou ler o texto LGPL, mas é tão chato de ler textos legais;)
1
O IIUC, o LGPL, deve ser usado no lugar do GPL quando você estiver mais preocupado com a proliferação de sua biblioteca do que uma biblioteca de concorrentes e não estiver tão preocupado com o ângulo de liberdade nesse caso. Por exemplo, se você tiver escrito uma biblioteca de imagens para competir com outras bibliotecas de imagens, a LGPL permitirá que outras pessoas usem sua biblioteca mais facilmente do que uma biblioteca de concorrentes [proprietária].
Jeff Welling
2

Não acho que exista uma licença que corresponda exatamente aos seus requisitos. Parece que você quer algum tipo de mistura da AGPL e da LGPL. Mas a FSF ainda não conseguiu criar essa licença! Você pode ver a resposta oficial aqui: /programming/3330792/why-isnt-there-a-lesser-affero-general-public-license/4419776#4419776

Robin Green
fonte
Obrigado pela resposta, acho que não há licença, mas pelo menos estou procurando a melhor correspondência.
Existem algumas licenças que obrigam as pessoas a publicar seu próprio código se estiverem usando o meu. Ou seja, você precisa transformar seu projeto em um projeto de código aberto se usar algum código com essas licenças. Não me importo se eles não quiserem publicar seu código. Minha principal preocupação é que pelo menos as pessoas agora estejam usando meu código. Isso basta para mim.
Eu realmente não acho que alguém queira usar meu código em seus projetos;) Principalmente porque são exercícios que mostram como fazer uma aplicação java de três camadas do zero usando TDD. Gostaria de compartilhar esse código e gostaria que as pessoas o usassem para ensinar TDD, mas quero que elas sejam obrigadas a dizer que os exercícios e exemplos são meus.
1

Como você precisa ativar uma licença de código aberto? Apenas incluindo o texto da licença em todos os arquivos?

Não sei qual é o requisito legal exato, mas a prática normal é incluir um pequeno comentário no cabeçalho no início de cada arquivo:

  • que declara quem possui os direitos autorais e
  • declara que o arquivo é coberto por uma licença desse tipo, informando ao leitor o nome do arquivo que contém o texto da licença e informando onde encontrar o texto se o arquivo estiver ausente.

O que mais eu tenho que fazer? Preciso comprar algo certo?

Não.

Incluir um readme.txt em todos os diretórios?

Não. Um único arquivo README na raiz da árvore de diretórios é uma boa ideia, mas não é obrigatória.

Quero dizer, o que devo fazer se quiser que meu código seja protegido pelo teste legal de uma licença?

Para ter certeza absoluta, converse com um advogado.


Em relação aos seus requisitos de licenciamento.

(1) Não me importo com o que as pessoas fazem com meu código, propósitos educacionais, para ganhar dinheiro, não me importo com o que elas querem fazer com ele.

Isso é uma espécie de não-requisito. Muito poucas licenças proíbem as pessoas de ganhar dinheiro, usar na educação etc.

No entanto, "faça o que bem entender" contradiz literalmente alguns de seus outros requisitos.

(2) Se eles mudarem meu código e alguém solicitar essas modificações, eles fornecerão o código com as modificações.

O requisito de que eles forneçam o código-fonte de qualquer modificação feita está presente na GPL, LGPL, AGPL, mas não no Apache, BSD e outras licenças comuns.

(3) Mas quero que as pessoas não excluam meu nome do código e, se usarem meu código, forçam-nas a me mencionar.

A maioria das licenças exige atribuições no código para permanecer no código.

No entanto, "forçá-los a me mencionar" é difícil, e poucas ou nenhuma licença diz isso. Na verdade, a posição da FSF é que esse requisito torna seu código não livre ...

(4) Mas não quero forçar as pessoas a publicar o código de seus aplicativos, mesmo que estejam usando meu código.

Poucas licenças obrigam as pessoas a publicar o código de seu aplicativo normalmente. Até o mais radical da família GPL permite que você use e modifique o software para fins puramente particulares.

No entanto, GPL e outros forçam as pessoas a publicar a fonte se as pessoas distribuírem um aplicativo com base no seu. (As condições precisas dependem da licença. Por exemplo, a LGPL permite que as pessoas vinculem seu código ao seu sem forçá-lo a publicá-lo. Por outro lado, a GPL exige que publiquem seu código nessas circunstâncias, e a AGPL o estende a outras áreas .)

Observe também que esse requisito (2) e (4) é literalmente contraditório.


Em resumo, você precisa poder expressar claramente seus requisitos para uma licença. Se você não puder fazer isso, terá pouca chance de encontrar uma licença que atenda aos seus requisitos.

Ou talvez você deva apenas conversar com um advogado. (Ele / ela obviamente precisará fazer várias perguntas para obter quais são seus requisitos reais.)

Stephen C
fonte
0

Você pode usar qualquer licença que desejar (até criar a sua própria) no trabalho que pertence a você (você possui os direitos autorais). Isso geralmente é feito incluindo uma cópia da licença no arquivo COPYINGjunto com o código-fonte.

O que você está procurando é uma licença com estilo XFree86 1.1 (que é uma licença permissiva sem copyleft (não é necessário abrir a fonte se você a usar, mas requer um reconhecimento) e atende a todos os seus requisitos.

  1. A documentação do usuário final incluída na redistribuição, se houver, deve incluir o seguinte reconhecimento: "Este produto inclui software desenvolvido pelo The XFree86 Project, Inc (http://www.xfree86.org/) e seus colaboradores", no mesmo local e forma que outros reconhecimentos de terceiros. Como alternativa, esse reconhecimento pode aparecer no próprio software, na mesma forma e local que outros reconhecimentos de terceiros.

Você pode substituir o nome xfree86 pelo seu nome e distribuí-lo.

Lincity
fonte