Por que tenho que manter minha licença de software de código aberto na raiz?


10

Quase todas as licenças de software de código aberto exigem (ou pelo menos os advogados geralmente sugerem que eles exigem) que os usuários incluam a licença completa na raiz do projeto que estão protegendo.

Um advogado com quem falei sugere que esse é um legado da era do CD, quando era necessário incluir uma licença completa em uma caixa de joias.

Mas hoje, estamos vivendo na era das nuvens. Por que não posso, por exemplo, simplesmente hospedar a licença completa no meu site e incluir o título + URL dessa licença no cabeçalho dos meus arquivos de origem?

Bônus: se é geralmente aceito que as licenças estabelecidas devem ser mantidas intactas na raiz, por que o OSI da FSF não aprovou uma licença que você possa consultar por URL e o que impede alguém de criar essa licença?


4
Um problema que vem à mente é que os URLs podem mudar ou ser descontinuados.
Aaron Kurtzhals

6
'A Internet não é onipresente' seria o motivo mais óbvio (mesmo que alguém tenha a Internet ao baixar seu software, talvez ele não esteja disponível quando desejar estendê-lo / modificá-lo).
TZHX

9
Você está perguntando por que TODA A LICENÇA PRECISA SER INCLUÍDA na raiz ou por que toda a licença precisa ser incluída na raiz?
DougM 14/08

Apenas salientando que parece que estamos falando de uma falsa dicotomia aqui; Você pergunta por que a licença precisa estar na raiz e por que não pode estar online em um URL? Há uma terceira opção que ninguém é mencionada; a licença é fornecida com o software, mas em um diretório "docs" ou algo assim, e o comentário no cabeçalho dos arquivos de código reflete isso. Concordo com as boas razões dadas pelas quais a Licença deve ser fornecida com o software, mas isso não para em um diretório de documentos.
James

4
A razão pela qual quase sempre está na raiz é que é fácil de encontrar. Quando faço o download do seu projeto, procuro a raiz e uma das primeiras coisas que vejo é a licença. Simples assim
JohnL

Respostas:


24

Nas Perguntas frequentes da GPL (mas o conselho é aplicável a todas as licenças):

Por que a GPL exige a inclusão de uma cópia da GPL em todas as cópias do programa?

A inclusão de uma cópia da licença no trabalho é vital para que todos que obtiverem uma cópia do programa possam saber quais são seus direitos.

Pode ser tentador incluir um URL que se refere à licença, em vez da própria licença. Mas você não pode ter certeza de que o URL ainda será válido, daqui a cinco ou dez anos. Daqui a 20 anos, os URLs como os conhecemos hoje podem não existir mais.

A única maneira de garantir que as pessoas que possuem cópias do programa continuem vendo a licença, apesar de todas as alterações que ocorrerão na rede, é incluir uma cópia da licença no programa.

(ênfase minha)

No momento em que o site que hospeda sua licença é desativado ou altera seus caminhos de URL, as pessoas que têm cópias do seu software não podem mais verificar quais direitos podem exercer com segurança. Suponha que, mesmo que você possa, de alguma forma, garantir que esse URL exato esteja sempre online: a capacidade dos usuários de verificar se o uso do seu software é legal ainda depende da capacidade de se conectar a esse URL específico. Embora esse requisito possa não ser oneroso em sua cidade / país / planeta em particular, ele pode ser oneroso em outros lugares. Você não deve impor esse requisito, especialmente quando a solução alternativa (incluindo o texto completo da licença) é trivial.

Você pode responder a essa reclamação dizendo: "E daí? Se o URL cair ou não estiver acessível, um descritor inequívoco como 'GNU GPL v3' deve ser suficiente. Cópias de texto completo da GPL são abundantes; os usuários podem procurar a licença em si ". Alguns problemas vêm imediatamente à mente:

  1. Isso não generaliza para licenciar identificadores menos claros (a frase "licença BSD" vem à mente).

  2. Isso não generaliza bem para licenças menos comuns ou personalizadas ("GPL com exceções de link" vem à mente: quais exceções de link?). Quão comum uma licença precisa ser antes que seja razoável esperar que um usuário a encontre de maneira confiável pelo nome?

  3. Isso ainda exige que os usuários tenham uma conexão com a Internet, o que pode não ser o caso, mesmo se eles tivessem uma conexão no momento em que obtiveram o software. (E eles podem não ter acesso à Internet quando obtiveram o software: "a era do CD" ainda não terminou em muitas partes do mundo. Como um caso adicional, considere as populações nacionais que têm amplo acesso à Internet, mas censuram grande parte dele. .) Uma conseqüência do software livremente redistribuível é que um destinatário pode não receber uma cópia do seu software diretamente de você ou através de um canal de distribuição que você previa originalmente.

Um argumento final contra os links de licença é observado pelo comentário de MichaelT abaixo: ele pode permitir que você altere a licença de forma dinâmica e retroativa. Isso poderia ser feito intencionalmente, mas também por acidente, se você alterasse a licença entre as versões do software, mas usasse o mesmo link de licença para ambas as versões, eliminando a licença antiga. Essa mudança adicionaria dificuldade para as pessoas que precisam provar que obtiveram sua cópia mais antiga sob uma licença diferente da versão atual.

Então, por que tenho que manter a licença na raiz do projeto?

Eu não sou um advogado, mas eu nunca vi qualquer argumento convincente que você não precisa manter licenças na raiz do projeto. Até a GPL, que especifica que a licença deve acompanhar cada cópia da obra, não diz como deve acompanhar a obra. (Isso pode ocorrer porque a GPL pode ser aplicada em contextos que não são de software, onde a noção de "diretório raiz" não é significativa.)

Manter a licença no diretório raiz é provavelmente uma boa idéia, pois maximiza a probabilidade do usuário vê-la e, portanto, minimiza a frustração do usuário e a probabilidade de reclamações contra você por tentar ocultar a licença em algum diretório obscuro. Se você tiver muitas licenças, pode fazer mais sentido colocá-las todas em sua própria pasta e incluir um README óbvio do projeto que contém caminhos de arquivo para encontrar a licença para cada componente.

A colocação de sua licença na raiz do diretório é uma prática útil também porque pode desambiguar as licenças dos módulos licenciados de maneira diferente do que funciona como um todo. Suponha que meu projeto FooProj use o módulo autônomo BarMod. O FooProj pode ter licença GPL, enquanto o módulo autônomo pode ter licença MIT. Quando abro o FooProj pela primeira vez, vejo uma cópia da GPL na raiz e entendo que o trabalho como um todo é licenciado pela GPL. Quando desço para a pasta do BarMod, vejo um novo arquivo de licença e entendo que o conteúdo desta pasta é licenciado pelo MIT. Claro, isso é apenas uma ajuda útil; você sempre deve indicar o licenciamento de seus módulos explicitamente em um arquivo README, AVISO ou similar.

Em suma, o uso da raiz do arquivo é uma questão de conveniência e clareza. Eu não vi nenhum texto de licença de código-fonte aberto legalmente obrigatório que o exija, nem sei de qualquer motivo para isso ser legalmente exigido. Sua licença deve ser razoavelmente fácil para o destinatário descobrir; incluir a licença na raiz do projeto é suficiente, mas não é necessário, para satisfazer esse critério.


3
Considere também a possibilidade de vincular a um site remoto para site.com/foo/license.txt que você obteve com uma licença BSD, mas desde então ele foi licenciado novamente sob a GPL v3 e é isso que site.com/foo/license. txt agora contém. Mas a versão que você baixou tem direitos diferentes.

Marquei esta resposta correta, pois parece expor a sabedoria convencional e legal em torno do licenciamento OSS. Dito isso , esse pensamento me parece um pouco paranóico para esse mundo de backup controlado por versão em que vivemos. Não tenho certeza de que o risco de adulteração de conteúdo de URL canônico seja maior do que o risco de alguém excluir acidentalmente uma parte do uma licença contida na raiz. E mesmo que o risco seja maior, sou cético que seja tão bom que obrigue os desenvolvedores a incluir licenças completas em seu software, em vez de, por exemplo, citar licenças hospedadas externamente em comentários de código.
precisa saber é o seguinte

Para sua informação, talvez seja um sinal do que está por vir para o licenciamento de OSS: O Creative Commons 4.0 permite que os licenciados vinculem a uma página separada que inclui informações de atribuição.
31513 Samthebrand

6

Mas hoje, estamos vivendo na era das nuvens. Por que não posso, por exemplo, simplesmente hospedar a licença completa no meu site e incluir o título + URL dessa licença no cabeçalho dos meus arquivos de origem?

Existem licenças que permitem isso. Apache 2.0, por exemplo. O Apache 2.0 requer apenas que cada arquivo de origem contenha um pequeno cabeçalho que aponte para o URL canônico da licença do Apache 2.0. Não há necessidade de reproduzir a licença completa na árvore de origem.

A partir da própria licença Apache 2.0:

APPENDIX: How to apply the Apache License to your work

To apply the Apache License to your work, attach the following boilerplate
notice, with the fields enclosed by brackets "[]" replaced with your own 
identifying information. (Don't include the brackets!) The text should be  
enclosed in the appropriate comment syntax for the file format. We also 
recommend that a file or class name and description of purpose be included 
on the same "printed page" as the copyright notice for easier identification 
within third-party archives.

    Copyright [yyyy] [name of copyright owner]

    Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this file except in compliance with the License.
    You may obtain a copy of the License at

        http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.

Acho que o apêndice está incompleto ou, pelo menos, opera com a suposição de que você já está incluindo uma cópia da licença. A partir do texto 2,0 si , ao distribuir o trabalho Apache licenciado:4.(a) You must give any other recipients of the Work or Derivative Works a copy of this License;
apsillers

3

Não há exigência de que ele esteja na raiz do projeto. É simplesmente o lugar mais comum e, portanto, o primeiro lugar que as pessoas procurarão para encontrar a licença. Por falar nisso, mesmo que não fosse comum, ainda é provável que seja o primeiro lugar em que as pessoas procurarão. Como a licença existe para informar, ocultar as informações não faz muito sentido.

Se você o ocultar atrás de um URL, não há garantia absoluta de que esse URL estará sempre disponível. Se for um arquivo na raiz do projeto, por definição, ele estará sempre disponível.

Em suma, este é o lugar mais eficaz e fácil de usar.


A raiz do projeto é o primeiro local em que você deve procurar: é o topo da árvore, a raiz da hierarquia de pastas. Toda a documentação de nível superior deve estar lá: leia-me, licença etc. Esses arquivos podem direcionar o leitor a se aprofundar em outras partes do projeto, mas a raiz é o primeiro local em que procuro algo.
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.