パスワードを忘れた? アカウント作成
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

「DVDコンバータ with DivX PRO」ソースコード公開、でも不十分?」記事へのコメント

  • by Anonymous Coward

    GPL の dll をクローズドからリンクする場合と、逆にクローズドの dll を GPL コードからリンクする場合、それぞれのライセンスの波及のしかたについてどなたか詳しい方教えていただけないでしょうか?

    少なくとも前者に

    • Re:dll (スコア:2, 参考になる)

      前者を解決するのがLGPLです。
      ただし、DLLを動的ローディングする限りにおいては適用外です。(GPL source codeを使わなくてもAPIで呼び出せるので)
      windows においてDLLを使う方法には2種類あって、
      • .dllをロードするAPIを叩いて自分のコードポイントに取り込む(動的ローディング)
      • .dllと対になる.libを
      --
      # rm -rf ./.
      • Re:dll (スコア:2, 興味深い)

        by bull2 (7718) on 2003年02月13日 18時59分 (#257863)
        dlopen(3)やLoadLibrary(Win32)してGPLなコードを呼んだ場合はソースを公開する必要は無いのでしょうか?
        もっというと、GPLなコードにわずかな修正を施し(当然そのコードは公開する)て独立したプロセスで動作させ、本体プロセスから
        socket, pipe, shared memory等で通信して処理をさせる場合はどうなるのでしょうか?
        後者もそうであれば、apacheをサーバとして運用しているサイトにアクセスするプログラムのコードは全て公開しないといけなくなって、
        (できるだけソースを公開したくないと思われる通常の企業にとっては)問題になる気がします。
        親コメント
        • Re:dll (スコア:2, 参考になる)

          by (((((lambda))))) (3568) on 2003年02月13日 19時36分 (#257886) ホームページ

          一般には別プロセスならだいたい大丈夫だけれど、 本来ライブラリにすべきなくらい緊密な動作を 無理矢理別プロセスにしたくらいだとまずいかもしれない。 下の項目の5番目のパラグラフを参照。

          http://www.gnu.org/licenses/gpl-faq.ja.html#MereAggregation [gnu.org]

          親コメント
        • Re:dll (スコア:1, 参考になる)

          by Anonymous Coward on 2003年02月13日 19時32分 (#257883)
          モジュールが同じ実行ファイルに含まれている場合、それらは言うまでもなく一つのプログラムに結合されています。もしモジュールが共有アドレス空間でいっしょにリンクされて実行されるよう設計されているならば、それらが一つのプログラムに結合されているのはほぼ間違いないでしょう。

          逆に、パイプやソケット、コマンドライン引数は通常二つの分離したプログラムの間で使われるコミュニケーションメカニズムです。ですからそれらがコミュニケーションのために使われるときには、モジュールは通常別々のプログラムです。しかしコミュニケーションのセマンティクスが親密であったり、複雑な内部データ構造を交換したりする場合は、それらも二つの部分がより大規模なプログラムに結合されていると考える基準となりうるでしょう。
          親コメント
          • by bull2 (7718) on 2003年02月13日 19時38分 (#257887)
            >> ApacheはGPLではありませんが?

            うおお、すんません。
            問題の本質は、GPLなコードを何らかの方法で非GPLなコードから呼んだ場合はどういう扱いになるのか、という事です。
            GPLなコードをリンクして同一の実行ファイルにさえしなければ、後は何をやってもOKになってしまうのでしょうか?
            だとすると回避手段がいくらでも出来てしまいますね。

            >> しかしコミュニケーションのセマンティクスが親密であったり、複雑な内部データ構造を交換したりする場合は、それらも二つの部分がより大規模なプログラムに結合されていると考える基準となりうるでしょう。

            ここの線引が難しい気がします。結局は非GPLなコードを書いた(または書くように指示した)人の倫理に因ってしまうのかな。
            親コメント
            • by Anonymous Coward
              >> 問題の本質は、GPLなコードを何らかの方法で非GPLなコードから呼んだ場合はどういう扱いになるのか、という事です。

              極端な例ですが、Linuxの場合はkernelがGPLなので、デバイスやメモリなどにアクセスする時点でLinux上の全てのプロセスはGPLなコードを経由しない限りは動けないとも言えます。ですから、それらの機能を使ってるLinux上のライブラリは全てGPL、それらのライブラリをリンクしてるソフトもGPL、っていう主張をする人もいるかもしれません。(いや、いねーよ>俺)ま、実際は「Linuxのシステムコールを呼んでるからGPLね」って理屈にはならないでしょ
              • by bull2 (7718) on 2003年02月14日 1時20分 (#258189)
                >> それらの機能を使ってるLinux上のライブラリは全てGPL、それらのライブラリをリンクしてるソフトもGPL、っていう主張をする人もいるかもしれません

                その当たりをMSがFUD [neweb.ne.jp]として宣伝すると、Linux用のプロプライエタリなアプリを作っている/作ろうとしているベンダは逃げてMSやSolaris等のプロプライエタリな側に付いてしまうもしれませんね。
                それによって、プロプライエタリなアプリに匹敵するGPLなアプリが数多く出現して使いやすくなれば万々歳なのですが、逆にベンダから見放されて発展が遅れてしまうかもしれませんね。

                情報元は失念してしまったのですが、無線LANのドライバをGPLにすると勝手に出力や周波数等が変更されて電波法違反になるのでGPLで公開できない、というような問題もあるようですし、難しいですね。
                親コメント
              • by Anonymous Coward
                昔fjで話題になった時の話をまとめるとLinux Kernelの場合
                1)system call
                明確にユーザ側のアプリからの利用についてはGPLの範囲外と文章化されている
                2)Kernel module
                LinusはGPLの適用されないといっているらしい(出典不明)
                FSF的にはGPLが適用されるべきといっている。
                Alan Coxは弁護士に相談してきめろ。
          • by G7 (3009) on 2003年02月14日 0時34分 (#258140)
            >モジュールが同じ実行ファイルに含まれている場合、それらは言うまでもなく一つのプログラムに結合されています。もしモ
            >ジュールが共有アドレス空間でいっしょにリンクされて実行されるよう設計されているならば、それらが一つのプログラムに
            >結合されているのはほぼ間違いないでしょう。
            >逆に、パイプやソケット、コマンドライン引数は通常二つの分離したプログラムの間で使われるコミュニケーションメカニズ
            (以下略)

            それって、C的というかUnix的というかの、そっち方面で伝統的な解釈ですよね。
            でも、それ以外の環境だとどう解釈すればいいんだろう?という疑問が、どうにも消えません。

            Javaみたいな奴は動的リンクなのか否か?…

            Javaじゃシグネチャがコンパイル時に確定するから静的だろ、と言われるならば、
            じゃあJVMを使って(笑)もうちょっと動的な言語を作った場合はどうなのか?…

            JavaOS(笑)みたいにプロセスという概念が無い(スレッドは有るが)ならばどうなのか?…
            完全にプロセス的なものが無いとDoSに対して弱くなるんで、プロセスの壁は無いが
            quota(ってのか)みたいなものは有る、というOSも有るらしいが、それだとどうなのか?…

            LispOSだとどうなのか?…
            Smalltalkみたいに動的に全部やれる環境で、ただし「お約束」としてシグネチャを縛る場合は、
            静的と呼ぶのか否か?…

            コンポーネント間をTCPで接続する(それこそGNOMEとか?)ようなアーキテクチャのOSの類はどうなのか?…
            Interface定義がオプションで(笑)用意されてるような環境だと、Interfaceをオマケで書いた瞬間に
            GPLが波及するようになるのか?…

            GPLは、この辺の「新しい(?)技術」について、何も語ってくれていないような気がするんですが、
            どうなんでしょうか?

            GPLの効き目をはっきりさせる「ため」に古典技術だけを使う、なんていう本末転倒が生じないことを祈るので、G7。
            リンクという概念の定義自体が、技術の進展に伴って、どんどん変化していくんだと思う。

            #RMS的には、「なんでもいーから際限なく波及してほしい」という心的衝動が、きっと有るに違いない。
            #だからこそわざと不明瞭にしている…んだったりするまいな?
            親コメント
            • by bero (5057) on 2003年02月14日 4時46分 (#258252) 日記
              同感です。GPLは古いunix(的なOS)しか想定していなかったように思います。
              unix(的なOS)でも共有ライブラリが出てきて破綻してます。

              新しい技術に限らす、

              組み込みなど「プロセス」の概念のないOSの場合は?

              初期RAM(ROM)DISKをカーネルに「スタティックリンク」する場合は?

              ROMやCD=ROM起動等静的媒体において、LGPLの「ユーザがLGPL部分を差し替え可能にする」には?

              OSやコンパイラ付属のライブラリが肥大化していっても、全部「主要なコンポーネント」?
              親コメント
        • by Anonymous Coward
          > apacheをサーバとして運用しているサイトにアクセスするプログラムのコードは全て公開しないといけなくなって、

          ApacheはGPLではありませんが?

ハッカーとクラッカーの違い。大してないと思います -- あるアレゲ

処理中...