web-dev-qa-db-ja.com

MITでライセンスされているコード行にマークを付ける方法は?

MITライセンスでライセンスされたコードを使用しているが、それが個別のファイルにない場合、このようにマークしても大丈夫ですか?

/* Here starts code licensed under the MIT License (../MIT.txt) */
// code
/* Here is the end of code licensed under the MIT License (../MIT.txt) */

../MIT.txtファイルの場合、MITライセンステキストと元の作成者の著作権表示が含まれます。

また、ほとんどのコードがMITライセンス済みで、関数の一部のセクションのみを変更している場合、上記と同じ方法で自分のライセンスでそれらの部分をマークできますか?はい、それは起こっていますたくさんのキロバイトのコメントになります。

3
Marqin

非MITライセンスのプロジェクトでMITライセンスのコードを使用する場合、ソースコードのMITライセンスの部分をマークするだけでは適切な戦略ではありません。このライセンスでは、次の1つの制限の下で、コードのサブライセンスを含め、コードを使用してほぼすべてのことを実行できます。

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

MITライセンスは、ソフトウェアのエンドユーザーにも表示する必要があります。ユーザーに著作権を表示する場合は、次のようなものも追加する必要があります。

このプログラムには、次のライセンスに基づいて使用されるFooBarライブラリのコードが含まれています。

The "FooBar" library  
Copyright (c) <year> <copyright holders>

<license body>

さらに、MITライセンスのソースから取得したコード内のセクションを明示的にマークすることもできます。私の理解では、これは必須ではありませんが、倫理的です。

MITライセンスのソースを変更する場合、ソースのユーザーが元のライセンスとライセンスの両方に従う必要があるため、別のライセンスで寄稿をマークしないでください。代わりに、次のいずれかのオプションを選択してください。

  • 残りのコードと同じライセンスで投稿のライセンスを取得します。何を変更したかを正確にマークすることなく、ソースに貢献したことを反映するように著作権表示を編集できます。
  • MITライセンスで許可されている方法で、ライセンスに基づいてMITライセンスのソースを再ライセンスします。上記を参照してください。

メモ

  • 私はプログラマーであり、弁護士ではありません。
  • 「MITライセンス」という用語はかなりあいまいです。この回答は、 Expat License を想定していますが、 X11 License にも適用されます。
4
amon

それは非常識です。それをしないでください。

MITライセンスを持つ他の誰かのコードで作業している場合、変更にはMITライセンスが必要です。何らかの理由でできない場合プロジェクトの他の部分と同じライセンスを使用する場合は、それをだましてはいけません。プロジェクトのライセンスに倫理的または何らかの不一致がある場合は、そのプロジェクトで作業しないでください。

各ソースファイル全体に真の著作権コンプライアンス地雷原を配置することは、まったく不合理です。コードのユーザーが、モノのライセンスが何であるかを判断するために、すべてのソースファイルのすべての行を確認することを期待するのは合理的ではありません。

単に別のことをしなければならない場合は、コードを別々のファイルに引き出して、コードを使用するために評価する人が、コードがどのライセンスの下にあるかを知るチャンスがあるようにします。

また、法廷に持ち込まれた場合、あなたのシェナニガンがどのように運ばれるかはわかりません。不注意な人は、あなたのビットが別の方法でライセンスされていることに気づかなかったと合法的に主張することができ、悪意のある人はあなたが意図していないことをするために混乱を使う可能性があります。

1
Michael Kohne

これを実行したい場合(そして、起こりうるバックラッシュを気にしなかった場合)、少なくとも次のことを行う必要があります。

  • 提案どおり、ライセンスファイルを追加します。
  • Readmeファイルで、コードが「foo」(元のライセンスが何であれ)としてライセンスされていることを非常に明確に指摘します。ただし、「some special start string "および" some special end string "これはMITライセンス供与されています。これらの文字列は一意である必要があり、スペルを間違えないようにする必要があります。あなたのコードが欲しい。

過度のバックラッシュを回避するには、おそらくこれも行う必要があります。

  • リンクまたはスクリプトをユーザーに提供して、ライセンスを変更せずにコードを取得します。
  • コードが削除された場合は、コードが機能する(または、少なくともすべてのテストに合格する)ことを確認してください。
  • コードを別のファイルに入れるか、元のプロジェクトを(たとえば、Gitサブモジュールを使用して)ラップして、元のコードを変更していないことを保証します。

これに関する最大の問題は、おそらくコードが残りのコードとどのように噛み合うかということです。 元のコードを1行でも変更して再ライセンスすることはできませんでは、どのように適切な変更を行うのでしょうか。たとえば、ライセンスをGPLに変更せずにGPLコードを静的にリンクすることはできません。特定のライセンスには他にも多くの問題がある可能性があり、自分自身や他の人のために問題を引き起こしている可能性が非常に高いです。変更をリリースするのに十分なほど他のユーザーを気にかけている場合(コンパイル済みプロジェクトを販売していないと想定)、元のライセンスを使用するほど気にしないのはなぜですか。

成功の保証がないはるかに単純な解決策は、ソフトウェアにMITライセンスを使用する理由と、それらが喜んでであるかどうかデュアルライセンスに変換します。

0
l0b0