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


22

別の質問への応答、ポスターが示唆GPLの下で:

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

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

回答:


37

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

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


1
非常に興味深い、ありがとう。これを明記しているライセンスの特定の部分はありますか?
アルマン

12
GPLv2、条項3の条項:「作品のソースコードとは、作品を修正するための作品の好ましい形態を意味します。」
デビッドソーンリー

4
この制限はライセンシーにのみ適用されます。独自のコード(外部GPLコードが描画されていない)の場合、必要なだけ難読化して、GPLステッカーを(他者に権利を付与するために)貼ることができます。NVIDIAはその日(1998程度)でのドライバコードのバックでこれをやった
パトリック・ゲオルギ

2
ただし、nVidiaの例のように、使用可能なソースコードを提供していない作品に「GPLステッカーを平手打ち」するのは無意味です。独自のライセンスを使用している場合もあります。明らかに、nVidiaは、実際にコードを共有することなく、コードを共有するものとして見られたかったのです。
thomasrutter 14

1
単なる好奇心から。暗号化された形式でソースを保存する独自のエディターで作業している場合はどうなりますか?理論的には、あなたはそれを扱う方法でコードを持っていますが、誰もアクセスできない独自のツールであるため、誰もそれを扱うことができません。
アイディアカピ

6

GPL v3のセクション1では、次のことができます。

オブジェクトコード形式の作品の「対応するソース」とは、オブジェクトコードの生成、インストール、および(実行可能な作品の)実行、およびこれらのアクティビティを制御するスクリプトを含む作品の変更に必要なすべてのソースコードを意味します。

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

加えて:

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

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

したがって、以前のポイントを明確にするために、ソースコードは変更しないでください。人間による記述==人間が読むことができると仮定しています。しかし、はい、人間が読めないと考えられるものに直接書くことができます。


4

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

ただし、ほとんどの場合、あなたは作品の唯一の著者ではありません。既存のコードを活用して、派生作品を作成します。そのような作品は、その系統の結合されたルールに従わなければなりません。そうしないと、著作権を侵害することなく配布する許可が得られません。

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

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

1
著作権の所有者に関係なく、ライセンスのすべてのルールに従う必要があります。自分のWebサイトでJSライブラリを使用し、GPLの下でリリースすることを決定した場合、それを個別に行うことができます。この質問はLGPLについてのものではありませんが、GPLがコードの読みやすさを考慮してLGPLに同様の制限が適用される場合は、ここで言及するのが役立ちます。
アルマン

@Alison:ライセンス条件は、作品を最初に作成してライセンスを付与するものではなく、作品を使用する(およびこの場合は再配布する)ものに適用されます。
パエロエベルマン

1
@アリソンは同意しませんでした。あなたが作品の唯一の所有者である場合、自由に再ライセンスできます。したがって、(ここでは魔法の不特定ライセンス)の条件の下でそれを配布し、他の人がGPLの条件の下でそれを再配布できるようにします。もちろん、GPLを信じておらず、唯一の所有者である場合は使用しないため、これは起こりそうなシナリオではありません。
マイケルアーマン

言語でバイナリが許可されていれば、LGPLライブラリを使用する独自のソースコードを出荷する必要はありません。ユーザーがLGPLを適用した部分を変更してアプリを再構築できるようにするものを出荷する必要があります(ただし、GPLv2では、ユーザーが変更されたバージョンをインストールできないようにします)。必要性または利便性のいずれかからソースを出荷する場合、難読化される可能性があります。
デビッドソーンリー

いい視点ね。投稿を編集して、LGPLがそれを使用する作品に要件を課さないと言わないようにします。
マイケルアーマン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.