web-dev-qa-db-ja.com

BSDライセンスの下でのソースの「変更」とは何と見なされますか?

Wikiの説明に基づいて、3節 BSDライセンス について質問があります。

それは述べています:

次の条件が満たされている場合、変更の有無にかかわらず、ソース形式およびバイナリ形式での再配布および使用が許可されます。

「変更」とは何を理解していますか?特に、次のいずれか/すべてがそのような変更と見なされるかどうかに関心があります。

  1. 元のソースを読み取り、カスタムの方法を再実装します。

  2. 元の情報源を読み、1年待ってから、覚えているものに基づいて何かを再実装します。

  3. 元のソースの直接的で非常に重要な「完全な」リファクタリング。

3
Den

この場合の変更は、ソースコードへの重要な変更です。

では、些細な変更の例をいくつか挙げてください。

  • 空白は変更されるか、改行などの他のフォーマットのみです。
  • 変数の名前変更
  • ファイルまたはモジュールの名前を変更する

些細な変更は、アプリケーションのプログラムフローには何の影響も与えないことに注意してください。

重要な変更含まれるもの:

  • アルゴリズムフローのリワーク
  • 機能の追加(ロギング、トレース、拡張)
  • バグの修正

重要な変更は付加的なものであるか、プログラムのフローに影響を与えることに注意してください。

ただし、いくつかの灰色の領域です。たとえば、一部を抽出してメソッドをリファクタリングすることは、簡単な場合と簡単でない場合があります。それは、抽出の複雑さと、抽出をサポートするために何を再配置する必要があるかによって異なります。同様に、コードのカットアンドペーストブロックを単一のメソッドに抽出するには、それが簡単ではないかどうかを判断するための分析が必要です。


それでは、あなたの質問に取り組みましょう。

元のソースを読み取り、カスタムの方法を再実装します。

自明ではないので、元のコードを変更します。ここでの重要な側面はre-implementing [in] a custom way。コピー&ペーストの演習ではありませんでした。作業の実装と検証に多大な労力を費やす必要がありました。

元の情報源を読み、1年待ってから、覚えているものに基づいて何かを再実装します。

言うのは難しいです、そしてどちらの方向にも行くことができます。 「待機時間」は、変更が簡単であったかどうかを判断することとは関係ありません。たとえば、写真のメモリを使用して、メモリからコードを逐語的に書き直すことができたとします。それは印象的な偉業ですが、修正としての資格はありません。一方で、アルゴリズムを完全に書き直してしまう可能性があるため、重要な変更が加えられています。

元のソースの直接的で非常に重要な「完全な」リファクタリング。

間違いなく元のコードの変更。 Complete refactoringは、大量のコードを再配置し、プログラムのフローを変更することを意味します。


質問の周辺にたどり着くと、変更が変更としてカウントされるかどうかをなぜそれほど気にするのでしょうか。コードに重要な変更を加えた場合、その変更に対する著作権はあなたにあります。また、BSDライセンスでは、元のプロジェクトで何でも自由に行うことができますが、プロジェクト全体を書き直した場合は、新しいプロジェクトのすべての著作権を主張できます。

礼儀は、以前のプロジェクトをインスピレーションとして認めることを提案しますが、プロジェクトを完全に書き直した後は、法的にそうする義務はありません。また、プロジェクトを完全に書き直していない場合は、BSDライセンスの条項に従う必要があります。

3
user53019

私は弁護士ではありませんが、著作権法の下で二次的著作物と見なされるものはすべて変更されると理解しています。これは、境界のケースを法廷で決定する必要があるかもしれない灰色の領域です。したがって、安全であり、とにかくライセンスが言うことを実行する方が良いかもしれません。また、元の開発者に尋ねることを検討してください。彼らはしばしば、ライセンスのあいまいな部分をユーザーに明確にします。

この問題は、一部のプログラマーがUnixのソースコードを読んだ後にGNUを実装するときに発生しました( 非フリーコードの読み取り を参照)。これは非フリーコード用ですが、同じ考え方が当てはまります。これらのガイドラインに基づくと、

  • 項目(1)は変更としてカウントされる可能性があります。実装の違いにもよりますが。
  • 項目(2)は、別の方法で実装した場合、変更にはなりません。
  • 項目(3)は、元のコードの一部を新しいバージョンに残すか、少なくとも構造の一部を残すため、変更になります。

著作権を侵害せずに何かを再実装する最も安全な方法は、 クリーンルーム設計 のようなものを使用することです。これは、侵害で訴えられた場合の防御を提供します。

4
fgb