web-dev-qa-db-ja.com

このPyQtベースの「Hello World」アプリはどのライセンスの下で配布できますか?

更新:PyQtライセンスについて間違っていました。それは単なるGPLライセンスではありません。 PyQtの作成者は、PyQt GPL_EXCEPTION.TXTファイルに明確にリストされているオープンソースライセンスの1つである限り、ユーザーが別のライセンスで独自のコードをリリースできるようにする特別な例外セットを含めます。


このディスカッションの目的のために、 PyQt に依存する次の完全に機能するアプリを検討してください。

# hello_world.py
from PyQt4.QtGui import QApplication, QPushButton
app = QApplication([])
button = QPushButton("Hello, World!", clicked=app.quit)
button.show()
app.exec_()

(ディスカッションに関連する場合は、Pythonこのようなプログラムは、それ自体「リンク」する必要がないことに注意してください。)

私の好みは、コードをpermissiveライセンスの下で配布することです。 BSDライセンス。ただし、PyQtは GNU GPLGNU GPLと特別な例外。それを念頭に置いて、ここで私の選択肢は何ですか? PyQt自体を配布していなくても、GPLでリリースする義務がありますか?

より具体的に言うと、次のシナリオ(ある場合)のうち、BSDライセンスの下でコードをリリースすることを許可されているのか、GPLの下でリリースする義務があるのか​​?

  • シナリオ1:hello_world.pyとPyQtを含む完全にパッケージ化されたバイナリを提供します。
  • シナリオ2:hello_world.pyとPyQtのソースコードを1回のダウンロードで提供します(たとえば、.tar.gz)。しかし、それらを一緒に実行するかどうかはあなた次第です。
  • シナリオ3:hello_world.pyを1人で提供し、自分でPyQtを取得するようにします。

私たちのほとんどは弁護士ではないことを知っているので、回答の出典を引用できるとありがたいです。

4
superbatfish

OK、これは思ったより簡単です。 PyQtの人々は、バニラGPLでソフトウェアをリリースしただけではありませんでした。彼らは特別なexceptionをライセンスに追加しました。これにより、非GPLライセンスでMYコードをリリースできます。ただし、すべてのライセンスが許可されているわけではありません。PyQtソースコードに含まれているGPL_EXCEPTION.TXTファイルにリストされているオープンソースライセンスの1つを選択する必要があります。この記事の執筆時点では、この例外により[〜#〜] mit [〜#〜][〜#〜] bsd [〜#〜]を使用できます、[〜#〜] lgpl [〜#〜]、およびその他いくつか。

したがって、上記の質問で概説されている特定のシナリオに対処するには:

  • シナリオ1:GPLのみ
  • シナリオ2:GPLのみ
  • シナリオ:BSDを含む、PyQtソース配布からGPL_EXCEPTION.TXTにリストされているすべてのライセンス。
2
superbatfish

GPLになると、常にGPLになります。

アプリケーションが依存するライブラリの1つがGPLでライセンスされている場合、BSDで配布することはできません。また、ソースコードを閉じることもできません。

GPLと商用ライセンスを使用したデュアルライセンスは、ベンダー間で共通の取り決めです。基本的に、「真の」オープンソースアプリケーションにライブラリを使用したい場合(アプリケーションのソースコード全体をエンドユーザーに提供し、エンドユーザーが望んでいることを実行できるようにする場合) または GPLに準拠している限り)、その目的のためにライブラリを使用することもできます。それ以外の場合は、ライセンスの商用コピーを購入することにより、ソースを閉鎖する権利を得ることができます。

簡単に言えば、アプリケーションにソースコードを提供している限り、3つのシナリオはすべてOKです。配布ライセンスは、BSDではなくGPLです。

私の引用はGPLライセンスです。

3
Robert Harvey