サードパーティのライブラリライセンス「ペーパーワーク」を整理するためのベストプラクティスは何ですか?


60

私は小さなオープンソースプロジェクトを開発しています。このアプリケーションは、Apache、MIT、BSD、LGPL、CDDLなどのさまざまなライセンスでリリースされた多くのサードパーティライブラリを使用します。

これらの各ライセンスには、独自の「事務処理」要件があります。たとえば、Apacheライセンスv2.0には次のように記載されています。

作品にその配布の一部として「NOTICE」テキストファイルが含まれている場合、配布する派生作品には、そのようなNOTICEファイルに含まれる帰属通知の読み取り可能なコピーを含める必要があります。

MITライセンスには著作権表示が含まれており、次のように記載されています。

上記の著作権表示およびこの許可通知は、ソフトウェアのすべてのコピーまたは大部分に含まれるものとします。

BSDライセンスには著作権表示も含まれており、次のように記載されています。

バイナリ形式での再配布では、上記の著作権表示、この条件リスト、および以下の免責事項を、配布物とともに提供されるドキュメントおよび/またはその他の資料に複製する必要があります。

LGPL v.3によると:

(あなたは)ライブラリが使用されていること、およびライブラリとその使用が本ライセンスの対象であることを、結合著作物の各コピーとともに目立つように通知する必要があります。

LGPLおよびCDDLライセンスでは、ソースコードをライブラリのバイナリ形式とともに提供する必要があるため、ソースコードの入手方法に関する情報はどこかで提供する必要があります。

このすべてのデータを整理するためのベストプラクティスは何ですか?テキストファイルを作成し、すべてのNOTICEファイル、MITおよびBSDライセンスなどのコンテンツをそのファイルにコピーする必要がありますか?...または、ライブラリごとに個別のディレクトリを作成し、ライブラリに関連するすべてのデータをそのディレクトリに配置する必要がありますか?… または、他の何か?

公開されたプロジェクトでこの「ペーパーワーク」の例を見るのも面白いでしょう。

更新:

私が読んでいるあなたは、すべてのソースファイルとライセンス通知を含める必要がありますか?、しかしそれは私の問題に対処しません。私の質問は、プロジェクトで使用されているサードパーティのライブラリに関するものであり、その質問はプロジェクト独自のソースコードのヘッダーに関するものです。

回答:


63

まず、標準の免責事項:IANALがランダムな見知らぬ人。

AGPL アプリケーション(*)を最近パッケージ化しました。jQuery、MIT、BSD(およびその他の)ライセンスで配布されるサードパーティライブラリを使用します。ここに私が進んだ方法があります。

私はこれを設計した私の主な意図はなかった:準拠する公正です。最初のものは十分なはずですが、2番目のものは、それを100%正しく取得しなかったとして私を訴えようとする人は、私が誠実に物事を行ったことを認めなければなりません。

1)ソースファイル:すべてのファイルにAGPLヘッダーがあります。すべてのサードパーティのファイルは(ほとんど)変更されないため、独自のライセンスヘッダーが含まれています。

2)パッケージのルートにあるLICENSE.txtには、AGPLライセンステキストが含まれています(「これらの条件を新しいプログラムに適用する方法」セクションで説明)。

3)パッケージのルートにあるLICENSE-3RD-PARTY.txtという名前のセカンダリライセンスファイルには、すべてのライセンスの逐語的なコピーが含まれています。各ライセンスのヘッダーには、ライセンスとその適用先が記載されています。また、著作権所有者の名前もここに含めます-後でそれらをどこかで再利用するので、努力する価値があります。

-----------------------------------------------------------------------------
                        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は、ソフトウェアがAGPL(LICENSE.txtを参照)であり、独自の条件で配布されるサードパーティライブラリを使用することを説明しています(LICENSE-3RD-PARTY.txtを参照)

5)オンラインドキュメントには、readmeからの情報を繰り返すライセンスページがあります。私のソフトウェアはAGPLであり、BSD / MIT / [...]であるサードパーティのコンポーネントを使用しています。私はこのページをより簡潔で読みやすいものにすることにしました。したがって、ライセンスの名前のみが全文へのリンクとともに提供され、著作権所有者の名前は自分のウェブサイトへのリンクとともに提供されます。

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)また、オンラインドキュメントには、クレジットページがあり、直接および間接の主要な貢献者をリストしています。例えば、PostgreSQLはダウンロードに含まれていませんが、ソフトウェアを実行するために必要です。これは、サードパーティのツール/ライブラリ/などの作成者が必要とする、または希望するすべての承認を配置するのに適した場所です。

7)ソフトウェア自体の内部では、ライセンスと著作権保有者と一緒にライブラリのリストは、中に繰り返されるについてダイアログボックス。

ソースコードとファイルレイアウトを含めることに関する特定の質問に対処するには:

  • 一般に、サードパーティパッケージの完全なソースコードにのみリンクすることが認められています。特定のライセンスごとに確認してください。ただし、リンクを提供する私見で十分です。たとえば、ライブラリの縮小バージョンを使用する場合、標準ダウンロードへのリンクを提供して問題ありません。

  • サードパーティのコンポーネントが、配布でファイルレイアウトを同一に保つことを明示的に要求していない限り、必要に応じて配置を変更できます。それぞれがcss /およびjs /ディレクトリを持つWebライブラリを使用すると、それらを1つのlib /ディレクトリにマージして、マージされたcss /およびjs /を含むことができます。また、ソースツリー全体に分散させることもできます。

そして最後のメモとして、「あなたはこれを間違っている」および/または「あなたもそれするべきです」と手を振るコメンターを歓迎します。

(*)これは、スパムリンクを目的としたものではなく、質問の「例を挙げてください」の部分に回答するためのものです。ルールに反する場合は、このリンクをクリアしてください。


2
すばらしい回答をありがとう!それはまさに私が探している種類の情報です。他の人が何か言いたいことがあるかどうかを確認するために、私はまだそれを受け入れません。
アレクセイ14

8
後でここに来る人のために、FireFoxにはLICENSE-3RD-PARTY.txtこの回答で説明されているファイルに似たドキュメントがあります。(ボックスをクリックLicensing InformationAboutます。)Google Chromeにも同様のドキュメントがあります。
アレクセイ

1
ここでのIntelliJ IDEAによって使用されるサードパーティ製ソフトウェアを示しています同様の文書がある:confluence.jetbrains.com/display/IDEADEV/...
アレクセイ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.