TetGen のようなNiceライブラリを使用する場合、ニーズを簡素化する単純なアプリケーションラッパーを生成し、それをオープンソースとして公開します。これを、商用製品で使用されるアプリケーションのパイプ/チェーン内で使用できますか?
これはGPLおよびAGPLライセンスで許可されていますか、それとも多くのそのようなアプリケーションで構成される商用製品のすべてをオープンソースにすることを強制していますか?
商用製品での使用に明示的な制限はなく、ソースコードの配布なしで派生作品の配布(またはAGPLコードのサービスとしての使用)にのみ制限があります。
したがって、このライブラリを使用する場合は、GPLライセンスに準拠するか、別のライセンスに基づいてライセンスされるように支払う必要があります。
アプリケーションが派生作品と見なされるかどうか、つまり互換性のあるライセンスでアプリケーションにライセンスを付与する必要があるかどうかは、GPLコードの呼び出し方法によって異なります。
GPL/AGPLソフトウェアと独自のソフトウェア間でインターフェースとデータ構造を共有する場合、それらは派生作品と見なされる可能性が高く、独自のソフトウェアは互換性のあるライセンスの下でライセンスを取得する必要があります。
UNIXパイプのようなものを使用して、あるプログラムから別のプログラムにデータのストリームをフィードする場合、それらのプログラムは別々のプロセススペースにあり、データ構造を共有しないため、おそらくはありません派生作品と見なされ、好きなライセンスを自分のコードに添付できます。
から GNUライセンス に関するよくある質問] ==:
「集約」と他の種類の「変更されたバージョン」の違いは何ですか?
「集合体」は、同じCD-ROMまたは他のメディアで一緒に配布される多数の個別のプログラムで構成されます。 GPLを使用すると、他のソフトウェアのライセンスが無料でない場合やGPLと互換性がない場合でも、アグリゲートを作成して配布できます。唯一の条件は、各プログラムの個々のライセンスがユーザーに付与する権利をユーザーが行使することを禁止するライセンスの下では、アグリゲートをリリースできないことです。
2つの別個のプログラムと、2つの部分を持つ1つのプログラムの境界はどこにありますか?これは法的な問題であり、最終的には裁判官が決定します。適切な基準は、通信のメカニズム(exec、パイプ、rpc、共有アドレス空間内の関数呼び出しなど)と通信のセマンティクス(交換される情報の種類)の両方に依存すると考えています。
モジュールが同じ実行可能ファイルに含まれている場合、それらは確実に1つのプログラムに結合されます。モジュールが共有アドレス空間でリンクされて実行されるように設計されている場合、それはほぼ確実にそれらを1つのプログラムに結合することを意味します。
対照的に、パイプ、ソケット、コマンドライン引数は、通常2つの別々のプログラム間で使用される通信メカニズムです。したがって、それらを通信に使用する場合、モジュールは通常、別個のプログラムです。しかし、通信のセマンティクスが十分に親密で、複雑な内部データ構造を交換している場合、それも2つの部分をより大きなプログラムに結合したものと見なすための基礎となります。
詳細および追加の提案については、 この回答 から クローズドソースアプリケーションでLGPL/GPLソフトウェアを動的に呼び出すことはできますか? を参照してください。
いつものように、状況が明確でない限り、ビジネスモデルをベースにする前に、オープンソースライセンスの専門家である弁護士に相談することをお勧めします。
あなたの製品が派生作品を形成すると決定し、あなたがあなたの製品をオープンソースにしたくない場合、他のオプションは単に商業的条件の下でライブラリをライセンスすることです。 TetGen Licensing FAQ (質問2)によると、ライブラリはデュアルライセンスであり、価格と条件については連絡することができます。
これがビジネスモデルに適合する場合、これはオープンソースコミュニティに返済し、その成長と将来の開発を促進し、ソフトウェアをより広く配布することで得られる利益の一部を共有するのに役立つ優れた方法です。誰もが勝ちます。
要望の多かった顧客向けに商用ソフトウェアを開発していたときは、オープンソースのコンポーネントを使用していました。それは彼が受け取った製品もオープンソースであることを意味しましたが、それはまた商用でした。お金がなかったら、そのコードを書いていなかっただろう。
つまり、商用ソフトウェアでオープンソースコンポーネントを使用できます。GPLを使用する場合、そのソフトウェアもGPLでなければなりません。