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

53

Estou desenvolvendo um pequeno projeto de código aberto. O aplicativo usa muitas bibliotecas de terceiros lançadas com uma variedade de 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:

If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file.

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

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

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

Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

LGPL v.3 diz:

(You should) give prominent notice with each copy of the Combined Work that the Library is used in it and that the Library and its use are covered by this License.

As licenças LGPL e CDDL também requerem o fornecimento do código-fonte, juntamente com uma forma binária de uma biblioteca, para que as informações sobre a maneira como o código-fonte pode ser obtido sejam 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 arquivos NOTICE , MIT e BSD etc. nesse arquivo? ... ou devo criar um diretório separado para cada biblioteca e colocar todos os dados relacionados à biblioteca nesse diretório? … Ou algo mais?

Também seria interessante ver alguns exemplos dessa "documentação" em projetos publicados.

ATUALIZAÇÃO:

Li Você precisa incluir um aviso de licença em cada arquivo de origem? , mas não resolver o meu problema. Minha pergunta é sobre bibliotecas de terceiros que são usadas em um projeto, e essa pergunta é sobre cabeçalhos no próprio código-fonte do projeto.

    
por Alexey 02.04.2014 / 11:07
fonte

1 resposta

55

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

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

As minhas principais intenções quando desenhei isto foram: ser compatível e ser justo . Enquanto o primeiro deve ser suficiente, o segundo garante que quem tentar 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 (na maior parte) inalterados 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 estes termos aos seus novos programas").

3) Um arquivo de licença secundário, que eu nomeei LICENSE-3RD-PARTY.txt, também localizado na raiz do pacote, contém cópias exatas de TODAS as licenças. Para cada licença, um cabeçalho indica qual licença é e em qual parte ele se aplica. Eu também incluo o nome dos detentores dos direitos autorais aqui - eu os reutilizo em outro lugar, então vale 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) O README.txt, também na raiz, explica que o software é AGPL (consulte LICENSE.txt) e usa bibliotecas de terceiros que são distribuídas sob seus próprios termos (consulte LICENSE-3RD-PARTY.txt)

5) Na documentação on-line, eu tenho uma página Licença que repete as informações do readme: meu software é o AGPL, e ele usa componentes de terceiros que são BSD / MIT / [ ...]. Decidi manter essa página mais clara 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 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, eu tenho uma página Créditos , onde eu 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 reconhecimentos que são requeridos ou desejados pelos autores de ferramentas de terceiros / bibliotecas / etc.

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

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

  • geralmente é aceito vincular somente o código-fonte completo de pacotes de terceiros. Consulte cada licença específica para ter certeza, mas IMHO fornecendo 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ê pode reorganizar as coisas como desejar. Imagine que você use bibliotecas da Web, tendo cada um diretório css / e js /, você pode mesclá-los em um único diretório lib /, contendo css / e js /, ou até espalhá-los por toda a árvore fonte - a sua escolha.

E, como nota final, gostaria de receber comentários que acenam com a mão dizendo "você está fazendo isso errado" e / ou "você também deve fazer isso" ".

(*) Isso não tem a intenção de ser vinculado a spam, mas apenas para responder à parte "favor fornecer exemplos" da pergunta. Sinta-se à vontade, queridos mods, para limpar esse link se isso for contra as regras.

    
por 02.04.2014 / 14:03
fonte