オープンソースプロジェクトからコードを分岐/再利用する正しい方法は何ですか?


22

私がオープンソースプロジェクトに取り組んでいて、別のオープンソースプロジェクトからささいなユーティリティ機能(ファイル検索/置換機能など)を再利用したいとします。関数をコピーして、ファイルの先頭に小さな著作権表示を書くだけで合法ですか?ライセンスにプロジェクト全体の著作権所有者として名前を含めるべきですか?

同様に、オープンソースプロジェクトをフォークしたとしましょう。著作権が元の著作権所有者と私自身の間で共有されることをどこでどのように指定しますか?

答えはオープンソースライセンスに応じて多少異なる必要があると思いますが、できるだけ一般的な答えが欲しいです。

PS:私は主に法的側面について心配していますが、あなたの倫理的な観点を自由に含めてください。


1
問題のプロジェクトのライセンスと、リリースするプロジェクトは何ですか?はい、コードを使用できますが、使用中のライセンスの下でお客様の要件をよりよくお知らせできるように、より具体的にしてください。
ティムポスト

1
@Tim Post:それはほとんど理論的な質問ですが、もしそれが助けになるなら、両方のプロジェクトが非常に一般的であるためGPLライセンスを持っていると仮定しましょう。
オリビエラロンド

回答:


25

この答えを可能な限り「メタ」として作成しようとしています。

他のプロジェクトのスニペット/ビットを使用する

コードに元の作者の著作権を明記してください。選択したライセンスが、使用しているコードのライセンスと完全に互換性があることを確認してください。コードを別のライセンスに移動するには、作成者の許可が必要です(特に許可されていない限り、「GPL 2以降のバージョン」)

プログラムには、すべての貢献者と他のプロジェクトから使用したものをリストするAUTHORSファイル(または同様のファイル)が必要です。

プロジェクトの分岐

大幅に変更するモジュールごとに、元の作成者の下に著作権を追加します。ライセンスについても同じことが言えます。ライセンスをフォークしたときに有効だったライセンスの条件に拘束されます。プロジェクトに「GPL2のみ」と書かれている場合は、それを尊重する必要があります。許可なくGPL3にアクセスすることはできません。

これは、手元のライセンスによって大きく異なります。QPLによると、たとえば、パッチ形式でのみ変更を配布できるため、ソフトウェアの修正バージョンを配布できる条件を必ず理解してください。

それを超えて、常に著作権を保持します。存在するものにあなた自身の著作権を追加する場合、あなたが主張しているものを正確に明確にマークしてください。


場合によっては、ライセンスを追加できます。GPL化されたプロジェクトでBSD関数を使用したいとします。BSDライセンスを削除することはできませんが、GPLと互換性があるため、GPLの下でプロジェクト全体を発行し、関数もBSDの下にあることに注意してくださいライセンス。BSDライセンスのコードに加えた変更をBSDの下でリリースすることは丁寧です。
デビッドソーンリー

@David-OPは一般的な回答を求めていました(そのため、ライセンスを調査するように促しています)。あなたは全く正しいです。ただし、BSDコードに加えた変更をデュアルライセンスするのは「いい」ことなので、元の作者は必要に応じて実際に使用できます。
ティムポスト

1
どの時点で、メインライセンスファイルの著作権表示を元の作者の上に置くべきですか?SLOCが元のプロジェクトのSLOCの200%を超える場合 300%?分岐したプロジェクトが、プロジェクト内の多くのライブラリまたはモジュールの1つになった場合はどうなりますか?
ホブ

@hobs imo、著作権表示の順序は、貢献の大きさを示すものではなく、起源を時系列で詳細に示しています。

@TechnikEmpire年代順は理にかなっていますが、著作権表示ではなく投稿者リストの場合ですか?著作権表示は、適用されるコードのセクションと、パッケージ内のそれらのセクションの価値/量に従って、より適切に配置されると考えました。ライセンスに関する何かを変更する場合は、連絡する必要のある人のリストを優先度の高い順に保持しておくと便利です。したがって、最初の数人から許可を取得し、最後の許可を取得しない場合、変更を行うことに決めた場合、再作成するコードの量は少なくなります。Linusは何をしているのだろうか?
ホブ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.