なんとな~くしあわせ?の日記

「そしてそれゆえ、知識そのものが力である」 (Nam et ipsa scientia potestas est.) 〜 フランシス・ベーコン

autoconfのライセンス考察

AutotoolsとGPL

automake/autoconf/libtoolを含んだプログラム。それはUNIX環境でプログラムを配布する際最も一般的な形態である。しかし、autotoolsを使ってプログラムのソースを配布する際、中身のライセンスは一体どうなるのか?たいていはGPLにしなければならないように見える。
例えばBSD/MITライセンスを使用するソースコードの場合、autotoolsは使用してはいけないのか?

そのへんが疑問だったので、調べた結果を書き残す

前提知識

Autoconf Configure Script例外

configureスクリプト及びその生成物自体にはGPLを適用しなくてよいという例外がある。
GNUライセンスに対する例外規程 - GNUプロジェクト - フリーソフトウェアファウンデーション

この例外規定の目的は、Autoconfの典型的な出力の配布を、受け取った人の選択の(プロプライエタリを含む)条項で認めることです。これは、Autoconfが自身のコードをその出力に含み、この例外がないとGPLv3でライセンスされることになる、からです。

Autoconf: 17. Autoconfのよくある質問と答え

17.1 configureスクリプトの配布


Autoconfが生成したconfigureスクリプトの配布の際,制限はありますか?それは,それを利用する私のプログラムに影響しますか?


Autoconfが生成するコンフィギュレーションスクリプトを,配布したり使用したりすることに制限はありません.Autoconfバージョン1では,GNU General Public Licenseでカバーされていました.我々はソフトウェア著者に, GPLのような規則で成果を配布することを奨励していましたが,Autoconfを使用するためにそうすることは要求していません.

configureと一緒に使用するファイルの`config.h.in'は,`configure.ac'に対して使用した著作権に従います.`config.sub' と`config.guess'は,Autoconfが生成するconfigureスクリプト と一緒に使用するとき,GPLの例外とされ,他のパッケージと同じ規則で配布できます.`install-sh'はXコンソーシアムからのもので,著作権保護はありません.

つまり、上記から以下の表のようになる(通常圧縮ファイル形式で配布するものを赤くした)

配布物 ライセンス 大体の役割
configure.ac プログラマーの自由 configure処理の元ネタ
configure Autoconf Configure Script例外が
適用される、つまり自由
configureの実体
config.h.in configure.acと同じ config.hの元ネタ(定数定義)
config.sub Autoconf Configure Script例外 知らない
config.guess Autoconf Configure Script例外 targetのOSを判定
install-sh パブリックドメイン インストール処理補助

また、その他の生成物を見ると…

配布物 ライセンス 大体の役割
Makefile.am プログラマーの自由 コンパイル対象ファイル定義
Makefile.in BSDライセンス Makefile.amからの生成物
生成されたMakefile BSDライセンス Makefile.inからの生成物
aclocal.m4 GPL m4マクロのロジック補助
depcomp GPL 依存ライブラリ補完
ltmain.sh GPL libtoolの処理
その他M4マクロ たいていGPL configure処理にプラグイン的機能を提供

M4マクロがGPLやん

しかしM4マクロ配布元のアーカイブの説明はこうだ
Autoconf Macro Archive - Documentation - copyright.htm

All these macros are copyrighted!

Please note that every macro contained in this archive is copyrighted by its respective author - if the macro source code does not contain an explicit public license notice then you should assume that the macro has been created with the license of the autoconf project in the mind of the author. The original autoconf license is the GNU GPL with an exeception for the output of the macroprocessor used by the autoconf tools.


すべてのマクロは著作権で守られています!


このアーカイブにあるすべてのマクロはそれぞれの作者によって著作権を表明されていることにご留意ください - もし、明示的なパブリック·ライセンス通知が含まれていない場合、マクロはその作者が考えるautoconfプロジェクトのライセンスで作成されていると想定するべきです。オリジナルのautoconfライセンスはautoconfによって使われるマクロプリプロセッサの出力のためのGNU GPL例外です。

そう、M4マクロは例外中の例外で、以下のような条文がつく

As a special exception, the Free Software Foundation gives unlimited permission to copy, distribute and modify the configure scripts that are the output of Autoconf. You need not follow the terms of the GNU General Public License when using or distributing such scripts, even though portions of the text of Autoconf appear in them. The GNU General Public License (GPL) does govern all other use of the material that constitutes the Autoconf program.


特別例外として、FSFはAutoconfの出力するconfigureスクリプトの複製、配布、そして修正を無制限に認めます。あなたは、たとえそれがAutoconf中のテキストの移植であったとしても、そのようなスクリプトの配布/使用時にGNU GPLの条文に従わなくともよい。GNU一般公衆利用許諾契約書(GPL)はAutoconfのプログラムを構成する材料の他のすべての使用にこれを規定します。

f:id:panzer-jagdironscrap1:20140323011037j:plain

GPLに従わなくともよいって…
libtool.m4とかにもこの条文は書いてある。だからM4マクロが配布物に含まれていても気にする必要はない。

まとめ

・Autotools使うとしても、修正BSDライセンスとかApache 2.0でも大丈夫!
(実際 Xerces-cはApache-2.0だし、libtiffは修正BSDライセンスに類似したライセンスでconfigureをつかっている。)

何か間違っていれば教えてください…