Qual é a melhor prática para organizar a documentação de licenças de bibliotecas de terceiros?


60

Estou desenvolvendo um pequeno projeto de código aberto. O aplicativo usa muitas bibliotecas de terceiros lançadas com várias licenças: Apache, MIT, BSD, LGPL e CDDL.

Cada uma dessas licenças possui seus próprios requisitos de "papelada". Por exemplo, a Licença Apache, v2.0 diz:

Se o Trabalho incluir um arquivo de texto "AVISO" como parte de sua distribuição, todos os Trabalhos Derivados distribuídos por você deverão incluir uma cópia legível dos avisos de atribuição contidos nesse arquivo AVISO.

A licença do MIT contém um aviso de direitos autorais e diz:

O aviso de direitos autorais acima e este aviso de permissão devem ser incluídos em todas as cópias ou partes substanciais do Software.

A licença BSD também contém um aviso de direitos autorais e diz:

As redistribuições em formato binário devem reproduzir o aviso de direitos autorais acima, esta lista de condições e o aviso de isenção de responsabilidade a seguir na documentação e / ou outros materiais fornecidos com a distribuição.

LGPL v.3 diz:

(Você deve) notificar com destaque a cada cópia do Trabalho Combinado que a Biblioteca é usada nela e que a Biblioteca e seu uso são cobertos por esta Licença.

As licenças LGPL e CDDL também exigem o fornecimento do código-fonte juntamente com uma forma binária de uma biblioteca; portanto, as informações sobre a maneira como o código-fonte pode ser obtido devem ser fornecidas em algum lugar.

Qual é a melhor prática para organizar todos esses dados? Devo criar um arquivo de texto e copiar o conteúdo de todos os NOTICEarquivos, licenças MIT e BSD etc. para esse arquivo? ... ou devo criar um diretório separado para cada biblioteca e colocar todos os dados relacionados à biblioteca nesse diretório? … ou alguma outra coisa?

Também seria interessante ver exemplos dessa "papelada" em projetos publicados.

ATUALIZAR:

Eu li Você precisa incluir um aviso de licença em todos os arquivos de origem? , mas não resolve o meu problema. Minha pergunta é sobre bibliotecas de terceiros usadas em um projeto, e essa pergunta é sobre cabeçalhos no próprio código-fonte do projeto.

Respostas:


63

Primeiro, o aviso padrão: IANAL, mas um estranho aleatório.

Tenho compactado um aplicativo AGPL (*) recentemente. Ele usa bibliotecas de terceiros distribuídas sob as licenças jQuery, MIT, BSD (e algumas outras). Aqui está como eu procedi.

Minhas principais intenções quando eu projetei isso foram: ser compatível e ser justo . Embora o primeiro deva ser suficiente, o segundo garante que quem tenta me processar por não acertar 100% tem que admitir que fiz as coisas de boa fé.

1) Arquivos de origem: todos os meus arquivos têm o cabeçalho AGPL. Todos os arquivos de terceiros são deixados (principalmente) sem modificação e, portanto, incluem seu próprio cabeçalho de licença.

2) LICENSE.txt, na raiz do pacote, contém o texto da licença AGPL (conforme explicado na seção "Como aplicar esses termos aos seus novos programas").

3) Um arquivo de licença secundário, que chamei de LICENSE-3RD-PARTY.txt, também localizado na raiz do pacote, contém cópias completas de TODAS as licenças. Para cada licença, um cabeçalho indica qual é a licença e a qual parte se aplica. Também incluo o nome dos detentores dos direitos autorais aqui - eu os reutilizo em outro lugar posteriormente, para que valha a pena o esforço.

-----------------------------------------------------------------------------
                        The MIT License (MIT)
        applies to: 
        - AJAX Upload, Copyright (c) Andrew Valums
        - jQuery hashchange event, Copyright (c) 2010 "Cowboy" Ben Alman
        - jquery.hotkeys, Copyright (c) 2010 John Resig
-----------------------------------------------------------------------------

Permission is hereby granted, free of charge [...]

4) README.txt, também na raiz, explica que o software é AGPL (consulte LICENSE.txt) e usa bibliotecas de terceiros distribuídas sob seus próprios termos (consulte LICENSE-3RD-PARTY.txt)

5) Na documentação on-line, tenho uma página de Licença que repete as informações do leia-me: meu software é AGPL e usa componentes de terceiros que são BSD / MIT / [...]. Decidi manter esta página mais limpa e legível, portanto, apenas o nome da licença é fornecido, com um link para o texto completo, e o nome dos detentores dos direitos autorais, com um link para o seu próprio site.

jQuery
    Copyright 2013 jQuery Foundation and other contributors
    http://jquery.com
    MIT License
Data Driven Documents (D3)
    Copyright (c) 2013, Michael Bostock    <-- link to personal website, if any
    http://d3js.org                        <-- link to software website
    BSD-like license                       <-- link to license full text
[...]

6) Também na documentação on-line, tenho uma página de Créditos , onde listo os principais colaboradores diretos e indiretos. Por exemplo, citei o grupo PostgreSQL, embora o PostgreSQL não esteja incluído no download, mas você precisa dele para executar o software. Este seria um bom lugar para colocar todos os agradecimentos exigidos ou desejados pelos autores de ferramentas / bibliotecas de terceiros / etc.

7) Dentro do próprio software, a lista de bibliotecas, juntamente com os titulares da licença e dos direitos autorais, é repetida na caixa de diálogo Sobre .

Para resolver suas perguntas específicas sobre a inclusão do código fonte e layout do arquivo:

  • geralmente é aceito vincular apenas o código fonte completo de pacotes de terceiros. Consulte cada licença específica para ter certeza, mas o IMHO que fornece o link deve ser suficiente. Por exemplo, se você usar uma versão reduzida de uma biblioteca, poderá fornecer o link para o download padrão e ficar bem.

  • a menos que o componente de terceiros exija explicitamente que as distribuições mantenham o layout do arquivo idêntico, você poderá reorganizar as coisas como desejar. Imagine que você usa bibliotecas da web, tendo cada um um diretório css / e um js /, você pode mesclá-las em um único diretório lib /, contendo css / e js / mesclados, ou até espalhá-las pela árvore de origem - sua escolha.

E como nota final, eu gostaria mais do que bem-vindo comentadores que acenam com a mão dizendo "você está fazendo isso errado" e / ou "você também deve fazer isso ".

(*) Não se destina a vincular spam, mas apenas para responder à parte da pergunta "forneça exemplos". Sinta-se livre, queridos mods, para limpar este link se isso for contra as regras.


2
Obrigado por uma ótima resposta! É exatamente o tipo de informação que estou procurando. Ainda não aceitarei para ver se outras pessoas têm algo a dizer.
Alexey19

8
Para quem virá aqui mais tarde, o FireFox possui um documento semelhante ao LICENSE-3RD-PARTY.txtarquivo descrito nesta resposta. (Clique Licensing Informationna Aboutcaixa.) Também existe um documento semelhante no Google Chrome.
Alexey

11
Aqui é um documento semelhante que lista software de terceiros usado pelo IntelliJ IDEA: confluence.jetbrains.com/display/IDEADEV/...
Alexey
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.