web-dev-qa-db-ja.com

GPLの下でリリースされたソースコードは人間が読めるものでなければなりませんか?

別の質問への回答 で、ポスターはGPLの下でそれを示唆しました:

...空白を取り除いたバージョンではなく、人間が読める[コード]を提供する必要があります...

読みやすさは私には主観的であり、GPLによって明示的に要求される可能性は低いと思われます。それは...ですか?

22
Armand

GPLでは、編集に適したバージョンである必要があります。通常、難読化されたコードで記述し、そのコードに直接変更を加える場合、それがGPLのソースになります。読み取り可能なバージョンで作業し、それをあらゆる種類の難読化ツールで実行する場合、GPLがソースと見なすのは読み取り可能なバージョンです。

「読みやすさ」は主観的であり、定義されていません。 GPLに基づいて、非常に悪い、理解しにくいコードをリリースすることは合法です。変更を加えたバージョンを取得し、空白を削除するなど、読みにくくし、GPLでソースを呼び出すことは違法です。

37
David Thornley

GPL v3を採用すると、セクション1で次のようになります。

オブジェクトコード形式の作業の「対応するソース」とは、オブジェクトコードを生成、インストール、および(実行可能な作業の場合)実行し、作業を変更するために必要なすべてのソースコードを意味します。

コメントと空白が削除され、関数名と変数名が変更された場合、作業を合理的に変更することはできません。

加えて:

ソースコード形式の作品の対応するソースは、同じ作品です。

変更された作品ではなく、同じ作品。

したがって、私の前のポイントを明確にするために、ソースコードは変更されていない必要があります。人間の書き込み==人間が読めると仮定しています。しかし、はい、人間が読めないものと見なすことができるものに直接書き込むことができます。

6
David

質問にはいくつかの重要な情報は含まれていません。あなたが唯一の作者である場合、すべてのルールに従う必要はなく、(GPLを含む)必要なライセンスの下で独自のコードをリリースできます。したがって、コードの編集にnotが優先され、著作権法に違反しない形式でコードを出荷できます。他の人があなたのコードをフリーソフトウェアライセンスの下にあるという精神で拡張できるかどうかは疑わしいので、試してみる人はほとんどいないでしょう。

ただし、ほとんどの場合、あなたは作品の唯一の著者ではありません。既存のコードを活用して、派生作品を作成します。そのような作品は、その系統の組み合わせた規則に従う必要があります。そうしないと、著作権を侵害せずに配布することはできません。

これをより明確にするために、いくつかの例を示します(IANAL)。

  • コードでGPLライブラリを使用する場合、独自のソースコードを難読化された形式でのみ出荷することは許可されません。
  • コードでLGPLライブラリを使用する場合は、難読化された形式でのみ独自のソースコードを出荷できます。これは、LGPLでは、ライブラリを使用する作業を新しいバージョンのライブラリで使用できることだけが要求されるためです。
  • LGPLライブラリを拡張する場合、これはGPLの場合のようになり、難読化されていないコードを出荷する必要があります(これも実際に編集する方法でない限り)。
4
Michael Urman