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?
fonte
Respostas:
Nas Perguntas frequentes da GPL (mas o conselho é aplicável a todas as licenças):
(ê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:
Isso não generaliza para licenciar identificadores menos claros (a frase "licença BSD" vem à mente).
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?
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.
fonte
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:
fonte
4.(a) You must give any other recipients of the Work or Derivative Works a copy of this License;
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.
fonte