※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

GNU関係。

フリーなUNIX OSソフトウェア部品「GNU」と、GNUを開発するGNU Project、ライセンスのGPLやLGPLに関するFAQ。

GNUって何ですか?

#GNU、GNU Project、FSFを混同する輩が多いので明記しておく GNUはOSの名前、GNU ProjectはGNUを開発するプロジェクト、FSFはGNU Projectとして開発されたフリーソフトウェアとライセンスの管理財団です。

GNU Projectでは、UNIX互換のOSをフリーソフトウェアとして開発することを目指しており、その名前がGNUと呼ばれる。 *1 GNU Projectは自主参加型のプロジェクトで、フリーソフトウェアとして使えるソフトウェアを自ら開発しようとする人で成り立っている。FSFはライセンスやフリーソフトウェアとして寄贈された知的財産を管理する組織。

元々の目的はUNIX互換ツールを開発してフリーで公開することだったがカーネル以外の細々としたツールは大体出来上がったし、カーネルはLinuxが登場してすぐに実用段階まで成長したので、今は過去に作られたソフトウェアのメンテナンスだとか、UNIX互換に限らないフリーソフトウェアの自主開発とかをやっている。

Linuxでは、カーネルをビルドするためのコンパイラなどにGNU Projectとして開発されたものが使われている。また、カーネルを起動するためのブートローダー、起動したカーネルで実行できるUNIXツールの中にGNU Project由来のソフトが多数再利用されており、ユーザーランドから見てGNU由来のソフトが多いため、それを強調して「GNU/Linux」と呼ぶこともある。

  • GNU/Linuxの頭に「GNU」とついてるのは別にLinuxがGNUのものだとか示したいわけではなく、Linuxの上でGNUが動いているという意味や状態を指す。Java/WindowsとかLinux/PPCとかみたいなもん。

具体的に何が作られてるの?

  • 汎用コンパイラGCC、C言語ライブラリGlibc、コンパイル自動化ツールMake、ビルドシステムAutotoolsなどプログラミング関係のツール
  • マイクロカーネルHurd
  • UNIX互換の小さなソフトツール群(coreutils, diffutils, findutils, grep, sed, awk, ...)
  • コマンドラインシェルBash
  • テキストエディタEmacs
  • プロジェクトに寄稿された雑多なソフトプロジェクト多数
  • GNU Projectとして開発されたフリーソフトウェアの例:

http://en.wikipedia.org/wiki/List_of_GNU_packages

GPL って何ですか?

GNU General Public License(GNUの一般公共ライセンス)の略。

「ソフトウェアはユーザーに自由であるべき」というGNU Projectによる考えから作られたフリーソフトウェアの開発・配布促進用ライセンス。

ライセンスの内容は和訳(法的な効力はなし)を参照のこと。

以下は要約

  • ソフトウェアを誰にでも自由に扱えるようにしたい。が、そのためには著作権でソフトが自由に使われるようにする必要がある。
  • 複製品に著作権表示を行うこと
  • 複製、または改変したものを配布するときは:
    • 変更されたことを明記すること
    • 全体をこのライセンスに従ってライセンスすること
    • 対話的に実行する形式に改変する場合は、適切な場所に著作権表示と保証の有無を記載すること
  • バイナリ形式で配布する場合は以下のどれかを選ぶこと
    • ソースコードを添付する
    • ソースコードを提供すると述べた有効な書面を示す
    • バイナリを得た際に得た情報を渡す
  • ライセンスで提示された内容を除き、コピーや改変、サブライセンスを行ってはならない
  • このライセンスを許諾する必要はない。が、このライセンス以外に複製、改変、配布する許可を与えるものは存在せず、そうした行為は法によって禁止される。
  • 再配布したとき、受取人は自動的にここにある許可を得る。配布者は権利を制限できないし、同意を強制することもできない。
  • 裁判所の命令でこのライセンスと矛盾する責任がかせられた場合でも、このライセンスの条件は免除されない。よって、そうした場合は配布を諦めなければならない。
  • 節の一部分が特定状況下で実施不可能であっても、節の残りの部分は機能する。そうでない場合は全体が機能する。

元々は GNU Project のライセンスだったが、Linux などでも採用された。改変された状態であっても元のソフトウェアと同じく自由な姿での配布を要求する「コピーレフト」を主張するライセンスの1つ。

LGPL って何ですか?

GPL を少し緩めたライセンス。GNU Lesser General Public License(GNU 劣等 一般公衆利用許諾契約)の略。 GNU では使用することを勧めていません。

GPL で配布されているソフトでは、改変して配布する場合も全体をGPLで配布しないといけない。これは、元の著作物とは別に「派生物」と呼ばれる。

ただし、改変したプログラムにGPLだったプログラム片がどれだけ含まれていればそれが派生物とされるのか、という点が曖昧だという問題があった。GPLなコードを1行入れただけでも派生物なら(※)、GPLなライブラリにリンクさせるために、GPLな関数のシンボル情報を組み込むのはどうなのか、とか。

  • ※:元々のコードから該当部分以外を削除し、独自にコードを追加したものと考えられるため、GPLな著作物の派生物となる。
  • この場合、独自コード追加部分の著作権は自分にあるので、たとえばBSDライセンスなどで自分のコード部分を公開するようなことも可。
  • GPLな著作物とくっつけて配布するためには、自分のコードもGPL可での利用を許可する必要あり。あとでGPLなところを消して書き直してしまえば、自分で1から作ったソフトとして任意のライセンスを選択可。

ライブラリを使うソフトをGPLなものに限定するのならこうした問題を気にする必要はないが、GPLと矛盾するライセンスのソフトが受け入れられるためには問題になるので、わざわざライブラリ用にLGPLってのが開発された。

LGPL では、従来の GPL 方式の自由さをユーザーに一部与えているものの、ライブラリを呼び出すだけのプログラムは派生物ではなくなったので、そうしたプログラムはGPL互換でない非自由なライセンスでもユーザーに配布できる。glibcとかgtk+とかopenoffice.orgとかがLGPLに含まれる。

GPL のソフトウェアを BSD ライセンスなど、配布の制限が少ないライセンスで配布できますか?

GPL では、配布の条件として同じライセンスで配布することが求められるので、それはできない。

BSDライセンスでは、ソフトウェアを自由でない状態で配布することが一切禁じられていないので、GPLなソフトをBSDライセンスで配布するということは、元のソフトを自由でない状態で配布する許可を無断で与えることになる。そうした行為は、著作者の同意無しには不可能。

上の逆 (BSD ライセンスなど、配布の制限が少ないライセンスのソフトウェアを GPL で配布) は可能?

ライセンスで許可されている内容による。

GPLで許可する内容で持って元のライセンス文面を守れるのなら、そういうことも可能。しかし、そうでない場合(たとえば、宣伝条項付きの BSD ライセンス) は、GPLで配布すると許可された内容からはみ出すことになる。なので、使う前にライセンスの適合性を確認すること。

GNU Project が、そういうソフトウェアからコードを使って作ったソフトをGPLで配布しようとする人のためのライセンス文面の矛盾状況を載せているので見るといいかも。

MozillaみたいにGPL/LGPL/MPLとトリプルライセンスになっているソフトウェアの場合は、GPL/LGPLソフトウェアの開発にコードを自由に使うことができる。