Você precisa incluir um aviso de licença em todos os arquivos de origem?

100

Eu estive procurando por várias licenças que eu posso usar para um projeto de código aberto meu, mas todos os projetos que eu vi, com todos os tipos de licenças, parecem ter um gigante, detestável (em minha opinião) aviso em cada arquivo de origem que afirma que o arquivo está listado em uma determinada licença. Eu não acho que eu encontrei um projeto de fonte única que não seja de domínio público que não tenha um aviso como esse.

Isso parece apenas uma perda de tempo e espaço no arquivo. Eu pretendo colocar @license e @author tags em meus projetos, mas não vejo por que eu preciso listar um aviso gigante em cada arquivo individual se eu não quiser tornar meu código de domínio público.

Existe alguma razão pela qual eu gostaria de incluir tal aviso em meus projetos, ou simplesmente incluir um aviso na tag README e @license seria bom o suficiente? Isso afeta a regra "claramente declarada" da maioria das licenças, ou é apenas um exagero para que as pessoas não discutam?

    
por RétroX 18.12.2011 / 17:19
fonte

7 respostas

39

No meu entendimento, a GPLv3 sugere strongmente (ou até mesmo talvez exija, pelo menos, como eu entendo o texto Como aplicar estes termos aos seus novos programas , após a sua seção 17) um aviso de direitos autorais em todos os arquivos de origem. Diz

To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the “copyright” line and a pointer to where the full notice is found.

<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year>  <name of author>

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program 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 <http://www.gnu.org/licenses/>.

E os projetos GNU que são de propriedade da FSF, como o GCC, têm esse aviso em todos os arquivos.

Eu também conheço um programa (sistema CAIA da J.Pitrat) que foi recusado em um site da comunidade de software livre porque não tinha esse aviso em todos os arquivos.

Eu não sou advogado , mas acredito que tal notificação seja praticamente obrigatória em todos os arquivos de origem de um programa da GPLv3 .

(se você usar outra licença, notavelmente uma não-FSF, leia atentamente sobre como aplicá-la; YMMV; no entanto, a AFAIK escrevendo um aviso em cada arquivo não irá prejudicar.)

    
por 18.12.2011 / 17:51
fonte
32

Eu vi muitos projetos que mencionam apenas a licença no README ou em um arquivo de LICENÇA ou COPIAR.

Seu software é automaticamente coberto por direitos autorais, conforme acordado no direito internacional. (A menos que você esteja trabalhando para o governo dos EUA ou alguma outra organização para a qual os direitos autorais não se aplicam.)

Se alguém usa seu software, ele deve seguir o contrato de licença ou seguir as restrições de uso justo sobre o que pode fazer.

Suponha que essa pessoa queira usar um dos arquivos em sua distribuição de código, o que obviamente exige uma cópia e, portanto, a lei de direitos autorais se aplica. Por padrão, eles NÃO têm o direito de usar seu software sob a lei de direitos autorais. É somente quando eles conhecem e seguem as restrições de licença que podem usá-lo.

Então, se eles usarem um arquivo sem uma licença de software, estarão infringindo a lei de direitos autorais. Como todas as licenças dizem algo como "O aviso de copyright acima e este aviso de permissão devem ser incluídos em todas as cópias ou partes substanciais do Software", eles são obrigados a colocar essa licença em algum lugar.

Isso pode estar no próprio arquivo, ou quando eu usei o código como biblioteca, eu coloquei as partes relevantes em seu próprio diretório e adicionei um "README" ou "LICENSE" a esse subdiretório.

Em suma, você não precisa colocar a licença em cada arquivo. Eu acho que é um exagero. Não há proteção legal extra ao fazê-lo. Isso ajuda um usuário downstream um pouco, mas não muito.

Eu acho que a tradição de muitos metadados baseados em comentários (licença, data de criação de cada função, changelog, etc.) são tradições muito antigas que existem porque são fáceis de fazer e que são mais úteis que um talismã.

Por exemplo, o modelo padrão do Eclipse adiciona o que eu considero como metadados inúteis antes de cada função, o que eu acho que é muito melhor capturado pelo controle de versão. Mas essa prática é comum em muitas lojas.

    
por 18.12.2011 / 17:50
fonte
10

O problema é que é muito fácil desagregar um único arquivo de código-fonte de um projeto maior, como alguém apenas fazendo check-out, enviando por e-mail, baixando um arquivo, sem o resto que contém os direitos autorais completos. E então esse arquivo pode passar de ad infinito para o tempo, para as enésimas partes que podem não ter ideia da origem dos arquivos.

O aviso de direitos autorais na parte superior lembra que qualquer pessoa que cruze esse arquivo solitário é de fato protegida por direitos autorais, não é de domínio público e, portanto, algumas licenças podem ou não estar envolvidas em sua distribuição ou uso. Versus deixar o localizador fazer suas próprias suposições aleatórias.

    
por 19.12.2011 / 04:15
fonte
8

Não há reunião secreta de superpotência em um bunker subterrâneo que diga o que você deve colocar em cada arquivo fonte.

Ele deixa claro para o usuário que este arquivo está sob qualquer licença e, de fato, a maioria dos softwares GPL contém um pequeno preâmbulo, dizendo para ler license.txt. Lembre-se de que os projetos são divididos e os arquivos são reutilizados, portanto, apenas colocar a mensagem em um único arquivo pode não ser uma boa ideia.

Se no caso improvável de ir ao tribunal, você poderia ter mais reclamações se tivesse marcado claramente cada arquivo como seu trabalho e em qual licença ele estava - então ninguém poderia afirmar que eles achavam que esse arquivo específico não estava coberto

    
por 18.12.2011 / 17:27
fonte
6

Existe uma diferença entre o license e o preâmbulo .

Em alguns dos meus projetos, estou usando a Licença Pública Geral GNU, Versão 3.0 . A GNU GPL torna necessário ter um preâmbulo em todos os arquivos de código-fonte:

The preamble and instructions are integral parts of the GNU GPL and may not be omitted.

Fonte: link

Então, aqui está o que eu faço:

1. Adicione o License.txt

Para seguir as regras, eu coloquei um LICENSE.txt na raiz do repositório do meu projeto. Isso também é sugerido pelo GitHub (consulte " Onde a licença vive ").

2. Adicionar preâmbulo usando dobra automática

Em seguida, incluo o preâmbulo da GPL em cima de cada arquivo de código-fonte MAS para torná-lo dificilmente perturbador. Eu o oculto no IDE. A maioria dos IDE tem um recurso para dobrar blocos de código automaticamente. O NetBeans tem suporte para Dobragem de código personalizado e o WebStorm oferece suporte a comentários dobráveis também.

Então aqui está como parece:

//<editor-fold desc="Preamble">
/*
 * Company Name
 * Copyright (C) 2016 Company Name
 * 
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * ...
 */
//</editor-fold>

console.log('Here is my licensed JavaScript code.');

Acho que esse é um compromisso muito bom entre a segurança e a segurança jurídica.

Se você tem muitos projetos em que precisa adicionar uma licença, o link pode ser útil.

Por favor note: Meu conselho se refere à GPLv3. Outros tipos de licença podem não exigir um preâmbulo.

    
por 12.07.2016 / 18:52
fonte
3

Eu quase postei uma pergunta incrivelmente parecida. Menos sobre aborrecimentos e mais sobre detalhes técnicos. TL; DR: Eu acredito que a resposta é uma questão de prioridades do autor. Talvez a intenção seja mais precisa do que as prioridades ...

Eu acredito que não há problema em fazer referência a uma licença na sua fonte, dependendo da sua definição de "ok". Vamos concordar que o termo "desacompanhado" indica um arquivo de origem que faz parte de um projeto que foi impiedosamente separado de sua base de código de amor. Esse arquivo contém uma linha como esta:

# This file is covered by the LICENSING file in the root of this project.

Ou uma linha muito mais legal como esta:

* @license OMGBBQ <http://goodlics.com/bbq>

"Mas espere!" , você exclama, "você acabou de dizer que o arquivo foi separado do seu projeto! E o goodlics.com redireciona para um invasor de domínio! Pare de ser trixy!" Você está correto, eu disse isso, mas isso pode ficar bem, e parar de gritar comigo. Aqui está o meu raciocínio não-advogado:

  • Quase todos os países concordaram com a Convenção de Berna, que significa que, se você criar alguma coisa, terá direitos autorais sobre ela, ponto final. Você não precisa de uma linha (c) ou qualquer porcaria como essa, mas essas coisas (mais um VCS de terceiros como o GitHub) tornam mais fácil provar que você criou e quando você criou.
  • Portanto, se você publicar algum código on-line 1337 que criou, terá direitos autorais sobre ele. Ninguém tem permissão para copiá-lo (legalmente). É raro e chocante, eu sei, mas ouvi dizer que as pessoas infringem a lei às vezes. Isso ainda é possível.
  • Esse incrível arquivo nyancat-bcminer-algo.qbasic que você escreveu e postou no LiveJournal é, acredite ou não, não domínio público. Não, a menos que você diga que é de domínio público. Por padrão , é só sua e sua. É ... Precioso . (Pelo menos por 25-50 anos ou mais, a menos que você seja a Disney).
  • As pessoas comunicam convencionalmente essa intenção (fazendo com que alguns ou todos os direitos não sejam seus e somente seus) por meio de licencings, mas você precisa anunciar essa intenção; é o opt-in opt-out (HAHA GET IT? optando por sair do seu copyright? AWESOME). Tire seus ingressos, estamos quase lá!
  • Se estiver correto que os arquivos não acompanhados mencionados acima sejam de domínio privado - isto é, não sejam legalmente copiáveis, então usar uma referência potencialmente quebrada é perfeitamente aceitável. No entanto, se não estiver ok , acho que você precisa incluir o texto da licença em todos os arquivos de origem. Dessa forma, os arquivos desacompanhados ainda terão a certeza de serem licenciados da maneira que você priori - pretendido . Sim, é melhor.

Esse raciocínio faz duas suposições épicas e provavelmente inválidas:

  • Uma referência de licença "quebrada" recai sobre o comportamento padrão (protegido por direitos autorais), que pode não ser uma suposição válida.
  • O site em que você postou não tem algum tipo de política de postagem (como o StackExchange) que torne tudo público em domínio.

Obrigado por andar nas vias aéreas do cérebro do macaco.

Aviso: Isso parece lógico para mim, tenho 90% de certeza de que estou 100% errado.

    
por 08.07.2016 / 03:50
fonte
2

Existe outra forma prática ainda não mencionada aqui.

SPDX-License-Identifier tag. link

Ao usá-lo, o seu "legal boilerplate" em cada cabeçalho do arquivo de origem é reduzido a apenas duas linhas:

/* SPDX-License-Identifier: (GPLv3-or-later AND LGPL-2.0-only) WITH bison-exception */
/* Copyright © 1234 Project Author */
    
por 23.11.2018 / 10:13
fonte

Tags