他の言語にコンパイルされるDartのような言語に関して、GPLはどのように機能しますか?


11

GoogleのDart言語は、Dartiumとして知られるChromiumの特別なビルド以外のWebブラウザではサポートされていません。プロダクションコードにDartを使用するには、Dart-> JavaScriptコンパイラ/トランスレーターを介して実行し、出力されたJavaScriptをWebアプリケーションで使用する必要があります。

JavaScriptはインタープリター言語であるため、「バイナリ」(別名、.jsファイル)を受け取る人は誰でもソースコードを受け取ります。

現在、GNU General Public License v3.0には次のように記載されています。

「作品の「ソースコード」とは、作品を修正するための作品の好ましい形態を意味します。」

これは、JavaScriptコードに加えて元のDartコードもエンドユーザーに提供する必要があることを意味します。これは、ソースコードのコピーがすでに人間が読み取り可能/書き込み可能/変更可能な形式で提供されている場合でも、Dartで記述されたWebアプリケーションはすべて、Webサイトのすべての訪問者に元のDartコードを提供する必要があることを意味しますか?


3
難読化されたjsが "ソースコード"である以上、.jsファイルを "ソースコード"と呼ぶことはありません。もちろん、まだ解釈されていますが、決してソースコードではありません。PHPスクリプトのHTML出力に似ています。ただし、ライセンス面でどのように機能するかはわかりません。
ベンブロッカ

「Production Code」と言うとき、「Productized」という意味ですか?内部使用にはソースコードのリリースは不要です。使用しているDartコードは、他の誰かのGPL(またはその他の)ライセンスコードに基づいていますか?または、これはすべてオリジナルのコードですか?答えは本当にそれらの詳細に依存します
ポール

1
GPLを適用したアプリケーションを実行する場合、訪問者にソースコードを提供する必要はありません。アプリケーションを配布する場合にのみソースコードを提供する必要があります。(それは、その後AGPL'dをした場合は、ソースを提供しなければならなかったgnu.org/licenses/why-affero-gpl.html
JCasso

1
アプリケーションが一般向けのWebサーバーで実行されていると仮定すると、コードはすべての訪問者に「配布」されませんか?実行される前にブラウザによって一時的な場所にダウンロードされるだけの場合でも。
ピーターW

@ Peter-Wこの議論は技術的なものであり、明確なものではないと思います。ブラウザがjavascriptをダウンロードすることは、一種の実装の詳細です。ほとんどのユーザーは、「配布」されたことに気付きませんが、ほとんどのユーザーは、CDの入手やダウンロードを「配布」としてカウントします。この場合、実装メカニズムは(ブラウザーへの、および一時的な)配布であるため、問題全体が不明確になります。編集:また、jsコードはある意味でDartコーダーの観点から「バイトコード」ですよね?
アンドレスF.

回答:


9

はい、コードがGPLの下にあり、出力されたJavaScriptを配信する場合、元のDartコードも提供する必要があります。これは通常、サイトからソースコードをダウンロードするためのリンクを使用して行われますが、コメントなどに埋め込むこともできます。

この場合、GPLに準拠する最も簡単な方法は、ソースを配布するためにオプションdを使用することだと思います

d)指定された場所からのアクセス(無償または有料)を提供することでオブジェクトコードを伝え、同じ場所を介して、追加料金なしで対応するソースへの同等のアクセスを提供します。受信者がオブジェクトコードとともに対応するソースをコピーする必要はありません。オブジェクトコードをコピーする場所がネットワークサーバーである場合、対応するソースは、同等のコピー機能をサポートする別のサーバー(ユーザーまたはサードパーティが運営)上にある場合があります。ただし、対応するソースを見つけます。どのサーバーが対応するソースをホストするかに関係なく、これらの要件を満たすために必要な限り利用できるようにする義務があります。

基本的に、ページにJSファイルを含めるときにこれを行います。

<script src="file.js" /><!-- source at http://example.com/path/to/modified/source/file.dart -->

2
私の答えを読んでください。GPLについてのコメントは、元のソースをリリースする必要はなく、この場合にのみ生成されることに注意してください。この場合、GPLは彼に配布を要求しないため、配布メカニズムは重要ではありません。私が言ったように、他のライセンスには異なるルールがあります。
ポール

1
GCCは一例だと思います。GCCはGPLであり、それを使用して「クローズドソース」プログラムをコンパイルするため、元のソースをリリースする必要がありますか?私は、同じことが任意のGPL「コンパイラ」のために真であると考えている
ポール・

3
この答えは間違っています。DartコードがGPLに基づいてライセンスされている場合でも、アプリケーションを配布しない限り、Dartソースコードを提供する必要はありません。GPLを適用したアプリケーションをサーバーで実行する場合、そのアプリケーションのソースコードを提供する必要はありません。AGPLという名前の別のライセンスがあるのはそのためです。その特定の目的のために。
JCasso

2
@JCassoは、コードがサーバーで実行されている場合に該当しますが、Dartの場合、結果のオブジェクトコードはJavaScriptであり、ほとんどの場合クライアントに配布されます。明らかに、JavaScriptサーバー側で実行するような奇妙なことをしている場合、それは配布としてカウントされません。
ダークホルソップル

3
サーバー側コードにのみ適用される@JCasso。同じページから:Drupalに含まれるjQueryのコピーを含むDrupalのJavaScript自体もGPLの下にあるため、ブラウザーでDrupalのJavaScriptとやり取りするJavascriptもGPLまたはGPL互換ライセンスの下になければなりません。
ダークホルソップル

2

まず、AGPLではなくGPLについて話します。

GPLされたアプリケーションを配布しない場合、サーバーで実行する場合、ソースコードを提供する必要はありません。そのためのAGPLがあります。GPLは配布に関するものです。

Drupal FAQから:

Webサイトのコードを訪問者に提供する必要がありますか?

いいえ。GPLはWebサイトの表示を「配布」としてカウントすることを考慮していないため、サーバーで実行されているコードを共有する必要はありません。http://drupal.org/licensing/faq/#q6

DrupalはGPLの下でライセンスされ、jsファイル(多く)が含まれていることに注意してください。

GNUから:

GNU Affero GPLの目的は、サーバーでよく使用されるフリープログラムの開発者に影響を与える問題を防ぐことです。

通常のGNU GPLの下でフリープログラムを開発およびリリースするとします。開発者Dがプログラムを変更してリリースした場合、GPLはGPLの下でバージョンを配布することも要求します。したがって、彼のバージョンのコピーを入手した場合、彼の変更の一部またはすべてを自分のバージョンに自由に組み込むことができます。

しかし、プログラムが主にサーバー上で有用であると仮定します。Dがプログラムを変更するとき、彼はおそらく自分のサーバーでそれを実行し、コピーを決してリリースしないかもしれません。そうすれば、彼のバージョンのソースコードのコピーを取得することはないので、バージョンに彼の変更を含めることはできません。その結果が気に入らないかもしれません。

GNU Affero GPLを使用すると、その結果が回避されます。Dが誰でも使用できるサーバーで自分のバージョンを実行している場合は、それも使用できます。彼がライセンス要件に従って、サーバーのユーザーに自分のバージョンのソースコードをダウンロードさせると仮定すると、あなたはそうすることができ、それからあなたのバージョンに彼の変更を組み込むことができます。(彼がそれに従わなかった場合、あなたはあなたの弁護士に彼に不平を言わせます。)出典:http : //www.gnu.org/licenses/why-affero-gpl.html


2
しかし、これがJavascriptにコンパイルされたDartであり、それからクライアントのように実行されるのを見て、これは当てはまりますか?
ウィンストンイーバート

1
GPLはそれについて明確です。Ubuntu CDを提供する場合、ソースコードを取得する方法を提供する必要があります。ubuntu.isoをファイルサーバーに配置する場合、ダウンロードリンク(またはそのようなもの)も提供する必要があります。これは配布と呼ばれます。配布する場合は、ソースコードを提供する必要があります。ただし、(サーバー上で)オンラインアプリを使用することは、「配布」とは見なされません。
JCasso

3
ポイントは、サーバーではなくブラウザでコードが実行されることです。あなたの答えは、サーバーで実行されるコードを見ている場合にのみ意味があります。しかし、そうではありません。クライアントコンピューターで実行されるコードを見ています。コードがサーバーで実行された場合、あなたは正しいでしょう、それは配布ではありません。しかし、コードはブラウザによってダウンロードされて実行されるため、配布であり、あなたの答えは不i好です。
ウィンストンイーバート

2
実際、どのCPUがそれを処理するかは非常に重要だと思います。CPUでコードを実行すると、必然的に、コードを私に配布したことになります。すべての意図と目的については、プログラムをダウンロードして実行する場合とまったく同じです。:質問は前に議論されてきたstackoverflow.com/questions/1239470/...programmers.stackexchange.com/questions/62869/...
ウィンストンイーバート

2
また、リンクしたAGPLページも参照してください。クライアントで実行されるコードではなく、サーバーで実行されるコードについて明示的に説明します。著者が、GPLがJavaScriptで実行されたコードに適用されないと考えていた場合、彼は議論の中でそれについて言及していました。
ウィンストンイーバート

1

一般的に、それは本当にライセンスに依存します。あなたの場合、DartはBSDなので悪い例であり、GNU 3.0はあなたが話しているケースをカバーしているようです。非弁護士として、私はその引用を「生成されたコードは特にカバーされていません」と解釈します

Dartホームページは これを参照しています:BSDライセンス

だからあなたはGPLについての質問は無意味です

また:GNU 3.0ライセンス

私のプログラムの使用から得られる出力をGPLできる方法はありますか?たとえば、私のプログラムがハードウェア設計の開発に使用される場合、これらの設計が無料でなければならないことを要求できますか?(#GPLOutput)

一般に、これは法的に不可能です。著作権法は、あなたのプログラムを使用してデータから人々が作成した出力の使用について、あなたに何も言わない。ユーザーがプログラムを使用して自分のデータを入力または変換する場合、出力の著作権はあなたではなくユーザーに帰属します。より一般的には、プログラムが入力を他の形式に変換するとき、出力の著作権ステータスは生成元の入力の著作権ステータスを継承します。

そのため、出力の使用において発言する唯一の方法は、プログラムのテキストから出力の大部分を(多かれ少なかれ)コピーすることです。たとえば、この特定のケースで例外を作成しなかった場合、Bisonの出力の一部(上記を参照)はGNU GPLでカバーされます。

技術的な理由がない場合でも、プログラムに特定のテキストを出力にコピーさせることができます。しかし、そのコピーされたテキストが実用的な目的を果たさない場合、ユーザーは出力からそのテキストを単純に削除し、残りのみを使用できます。その場合、彼はコピーされたテキストの再配布に関する条件に従う必要はありません。


3
質問は、GPLのDartコンパイラ(プログラム(コンパイラ)の出力とは無関係です)ではなく、GPLのDartプログラムについてです。

2
@delnan私はあなたと同じ質問を読んでいませんでした。1)私の最初のリンクを参照してください、DartはBSDです。2)DaraプログラムがGPLであった場合、彼は質問をしませんでした。彼がDartのソースコードもリリースする必要があるかどうかを知りたいので、私はこの質問を読みました。実際に私の答えを読みましたか?
ポール

2
まあ、あなたはそのようにそれを読んだ唯一の人のようです。OPは、問題のDartプログラムがGPLであることを明示的に言及していませんが、DartコンパイラーがGPLであると仮定することを示唆するものは何もありません。

申し訳ありませんが、これを広げてください...だから、DartプログラムがGPLでもなく、DartがBSDでもない場合(実際に、または少なくともサイトがそうだと言っている場合)、質問は何ですか?「B(GPLではない)をリリースしたいときにA(GPL'd)を配布しなければならない」というだけの場合、それは重複した質問です
ポール

2
@Paul私の仮定、そして他の皆の仮定は、Dartプログラムは実際にはGPLであるということです。

0

基本的な質問は次のとおりです。

WebページにJavaScriptを含める(たとえば、スクリプトタグを介して参照する)ことは、GPLされた作業を「伝える」ものとしてカウントされますか?

もしそうなら、コードを修正するための好ましい形式でソースを利用可能にしなければなりません。この場合、推奨される形式は、javascriptの生成に使用される元のDartソースコードです。

私はFSFサイトでこの質問に対する明確な答えを見つけることはできませんが、ストールマンのエッセイ「The Javascript Trap」は、彼がそれを伝達することを考慮していることを示しているようです。ライセンスのテキストを含まないが、ライセンスによってまだカバーされている縮小バージョンの許可に関する彼のメモを参照してください。

テンプレートがGPLなしでGPL化されたjavascriptを使用できるようにする例外については、javascriptおよびテンプレートに関するこのFAQも参照してください。

あなたがしたいことがライセンスに準拠しているかどうかを知るための絶対的な最良の方法は、コードの著作権所有者に依頼することです。彼らはライセンスを異なって解釈したかもしれず、彼らの解釈を明確にするために例外を追加することをいとわないかもしれません。


実際、それは問題ではありません。質問を注意深く読んだ場合、OPはjavascriptを配布する必要があると想定します。その解釈に疑問を呈したこの質問に関する他の人たち。問題は、彼がDartコードも配布する必要があるかどうかです。
ウィンストンイーバート

@WinstonEwert「ソースコード」と言うときは、javascriptの生成に使用される元のDartソースファイルを意味します。これを明確にするために回答を更新します。
クレイグ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.