静的リンクを許可する変更されたLGPLライセンスはありますか?


21

LGPLでは、プログラムがLGPLで編集されたライブラリを使用する場合、ユーザーはプログラムを別のバージョンのライブラリと再リンクできる必要があります。

...

d)次のいずれかを実行します。

0)このライセンスの条件の下で最小限の対応するソース、および適切な形式で対応するアプリケーションコードを伝え、ユーザーがアプリケーションをリンクバージョンの修正バージョンと再結合または再リンクして、対応するソースを伝えるためにGNU GPLのセクション6で指定された方法で、変更された結合作業。

1)適切な共有ライブラリメカニズムを使用して、ライブラリとリンクします。適切なメカニズムは、(a)ユーザーのコンピューターシステムに既に存在するライブラリのコピーを実行時に使用し、(b)リンクバージョンとインターフェイス互換性のあるライブラリの修正バージョンで適切に動作するメカニズムです。

...

ただし、場合によっては、これによりかなりの困難が生じる可能性があります。特に、Haskellプログラムはほとんど常に静的にコンパイルされます。さらに、コンパイラはモジュール間の最適化を行うため、コードの一部を取り出して別のものに置き換えることはできません。したがって、この条件を満たすことは非常に困難です。(Haskell Wikiのこのリンクを参照してください。)

動的リンクが解決策になりますが、多くの場合、これは不可能です。例えば:

  • プラットフォームによっては、動的リンクがまったくない場合があります。
  • 一部の言語には、動的リンクの可能性がありません。または、モジュールをマルチプラットフォームにすることはできません。
  • 場合によっては、動的リンクによって重要な最適化が妨げられます。これが深刻な問題になることはめったにないと思いますが、Haskellのような言語では、パフォーマンスの損失がかなり大きくなる可能性があります。

したがって、再リンクの可能性を必要としない標準のLGPLのようなライセンスを探しています(そして、それはユーザーに与えられた少しの自由を取り除くことを理解しています)。wxWidgetsなど、一部のプロジェクトではLGPLの独自の変更を使用しています。しかし、私はむしろ、いくつかの法律の専門家によってチェックされ、(L)GPLと互換性のある、より公式な標準ライセンスを使用したいと考えています。そのようなものはありますか?

(また、LGPLのそのような修正の予期しない結果があるかどうかを知りたいと思います。)


Haskellの外部ライブラリ動的にリンクすることはできませんか?それは非常に不便です。
ロバートハーベイ

2
プロジェクト全体がFOSSである場合、これは問題ではない可能性があります。ソースでそれらを指し、それらを整理してみましょう!:
ピーターローウェル

2
そのライセンスを非コピーレフトライセンスと区別するものは何ですか?

2
@delnan LGPLには、しばしば望ましいものが他にもたくさんあります。たとえば、変更を(L)GPL にする必要があるか、tivoizationを禁止します。
PetrPudlák12年

wxWindowsライセンスは、OSIによって承認されていることを考えると、ほぼ公式のライセンスです。
ヨアヒムザウアー

回答:



12

wxwidgetsは基本的に= LGPL +静的リンクでライセンスされています

...本質的にはL-GPL(Library General Public Licence)。ただし、バイナリ形式の派生著作物はユーザー自身の条件で配布される可能性があるという例外があります。これは、wxWidgetsを使用してGPL化されたソフトウェアを作成したい人、および独自のソフトウェアを作成したい人を満足させるソリューションです。

wxWidgetsは、この決定につながった議論の認定オープンソースソフトウェア参加者であり、Abisource、Robert Roebling、Julian Smart、Markus Fleck、Karsten Balluederの人々、およびRichard Stallmanからのアドバイスが含まれています。リチャードは、新しいライセンスがGPLのアプリケーションと互換性があることを確認しました。ただし、プロプライエタリアプリケーションには大きな制限はありません。

wxWindowsライセンスはオープンソースイニシアチブによって承認されており、そのサイトライセンスを見つけることができます...


0mqは、明示的な静的リンク例外を伴うLGPLの下でもライセンスされています。
トレバーパウエル

4

IANAL、しかし私は信じさせられましたが、1つの解決策は非LGPL部品にオブジェクトファイルを提供することです。これにより、ユーザーはプログラムを再リンクできるため、LGPLの要件を満たしてLGPLの部分を自由に変更できます。

言い換えれば、LGPLソースとコンパイルされた非LGPLコードのオブジェクトファイルを含むソースパッケージが必要です。明らかに、バイナリをリリースするすべての異なるアーキテクチャのオブジェクトファイルを提供する必要がありますが、これは大きな問題ではないと思います。

開発の観点から見ると、最も単純なのは、配布用のバイナリをビルドするときに、ビルドシステムにソースパッケージも同時にビルドさせることです。


これが行われた実際のシナリオはありますか?
-knocte

3

Googleで見つけた:OpenScalesライセンス

OpenScalesは、GNU Lesser Public License(LGPL、利用可能 こちら)の、静的リンク例外に関連する例外があります(以下を参照)...

LGPLライセンステキストに加えて、LGPL条件の例外がOpenScalesに適用されます。

GNU Lesser General Public Licenseバージョン3の特別な例外として、静的または動的に実行可能ファイル内のこのライブラリの一部をリンクし、最小限の対応するソースを伝達する結合作業からの実行可能ファイルを第三者に伝達できますが、ライブラリの修正されていない公的に配布されたバージョンを使用している限り、GNU Lesser General Public Licenseのセクション4d0に対応するアプリケーションコードを伝える必要はありません。この例外は、実行可能ファイルがGNU Lesser General Public LicenseまたはGNU General Public Licenseの対象となる他の理由を無効にするものではありません。

それは標準ではありませんが、存在するかどうかはわかりません。


1

ユーザーの自由をどのように保証し続けますか?「正しい」答えは、ライブラリを動的にロードするシムを静的にリンクすることだと思います。


はい、それが最良のソリューションです。しかし、場合によっては、動的リンクが不可能です。一部の言語にはこの可能性がありません。または、一部のプラットフォームにはこの可能性がありません。
PetrPudlák12年

実際に、ライブラリに動的にリンクすると、リンカーはこれを正確に行います。
カルマリオ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.