ライセンスタグの投稿

2009-10-05
くもりのち雨

WordBench 資料「GPLとWordPress」「プラグインの作り方(管理パネル篇)」

ゆりこ による 19:36:37 の投稿
カテゴリー: WordPressハック
タグ: , , , , ,

昨日開催された WordBench 川崎の勉強会で使用した資料を公開します。ミーティング資料の方は WordBench 川崎ブログをご覧ください。

「GPL と WordPress」
スライド: GPLとWordPress

スライド: GPLとWordPress

「WordPress プラグインの作り方 (管理パネル篇)」
形式: PDF (1.1MB)/PHP ソースコード (4KB)
ライセンス: クリエイティブ・コモンズ・表示-非営利-継承 2.1 日本(スライド)/GPL v2 (ソースコード)
スライド: WordPressプラグインの作り方 (管理パネル篇)

スライド: WordPressプラグインの作り方 (管理パネル篇)

ソースコード: 管理パネルを実現するプラグインのサンプルPHPコード

ソースコード: 管理パネルを実現するプラグインのサンプルPHPコード

GPL への関心の高い方が多く、講義の途中でも質問が多数出ました。それだけ、疑問に思うことや懸念している事柄があるのでしょう。できるだけそれらを明確になるような解説や、問題を回避する手段を提案した内容としています。しかしながら、まだまだ不十分な点はあるでしょうから、そういうのがあれば、ご指摘頂けると、今後スライドを改善して公開したいと思います。

今回入れ忘れた話としては「GPL コードを実行するだけなら GPL に従う必要はない (複製・頒布・改造する場合に GPL を受け入れなければならない)」「GPL に違反したらどうなるか」ですね。前者ですが、サーバーやローカルマシンに最初から入っている GPL なソフトを使う場合の話です。自分で GPL なツールをダウンロードかつインストールする場合は必然的に複製しますから、GPL に従う必要があると言えます。後者は、そのプログラムの使用を中止するか、ソースコードを公開するかして、違反状態を解消しなければなりません。組込み機器の場合は、ハードウェアを回収する手も許されるのかな??

プラグインの作り方は、6月に開催した初級篇の続きとして「上級篇」にする予定でした。しかし、管理パネルの作り方だけで十分なボリュームとなったため、「管理パネル篇」となりました。今後のプラグイン関連勉強会では「デバッグ手法」などを予定しています。

[追記 2009-10-07] WordPress と GPL については、以下の記事も参考になるでしょう。

2008-03-24
晴れ

GPL でない WordPress プラグインを作れるか

ゆりこ による 23:39:20 の投稿
カテゴリー: ソフトウェア
タグ: , , ,

4月1日(!)に、とある WordPress プラグインをリリースしようと思っていますが、ライセンスを GPL ではないものにしようと考えました。しかし、なかなか難しいようです。

まず、WordPress 本体が GPL であることがネックです。GPL ソフトウェアに対するプラグインについては、FSF によると、データ構造を共有していれば両者が単一のプログラムを構成しているとみなせるため、GPL を適用すべきと解釈されるようです。

もしプログラムがプラグインと動的にリンクされており、お互いにファンクションコールを使ってデータ構造を共有している場合、それらは単一のプログラムを形成していると見なされますので、プラグインはメインプログラムの拡張部分として扱われなければなりません。すなわち、それらはGPLかGPLと矛盾しないフリーソフトウェアライセンスの下で公開されなければならないということです。

WordPress の場合、add_action(), add_filter() でフックを追加する場合は独立性が保てそうですが、$wpdb をグローバル宣言してデータベースアクセスを行う場合は、GPL の制約にひっかかりそうです。

難しいのが、the_content() のような場合でしょうか。実行結果は直接画面に行なわれるため、データ構造は共有していません。しかし、WordPress ループを使っているならば、暗黙的に $post がグローバル宣言されていて、共有しているとも言えます。

うーん。やっぱり GPL にするのがラクかなーー。非 GPL にするには、よほど慎重な作り方が必要なようです。

FSF の FAQ には、非 GPL なソフトウェアに対する GPL プラグインの例もあります。この場合、素の GPL ではライセンス違反になってしまうため、例外条項を付与する必要があると記されています。MT4i のような場合が該当すると思いますが、MT4i って、そういう例外条項がなかったような……。