web-dev-qa-db-ja.com

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

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

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

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

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

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

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

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

LGPL v.3は言う:

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

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

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

公開されたプロジェクトでこの「書類」の例を見るのも興味深いでしょう。

UPDATE:

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

64
Alexey

まず、標準の免責事項: [〜#〜] 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からの情報を繰り返すLicenseページがあります。私のソフトウェアはAGPLであり、サードパーティを使用していますBSD/MIT/[...]であるコンポーネント。私はこのページをよりクリーンで読みやすくすることを決定しました。そのため、フルテキストへのリンクを含むライセンスの名前と、自分のWebサイトへのリンクを含む著作権者の名前のみが提供されます。

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

7)ソフトウェア自体の内部で、ライブラリとライセンスおよび著作権者のリストがAboutダイアログボックスで繰り返されます。

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

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

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

そして最後のメモとして、「あなたがやっているこれ間違っている」および/または「あなたもすべきと手を振るコメント投稿者を歓迎します。 )それ"。

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

64
user44761