GNU一般公衆ライセンス(、GNU GPLまたは、単にGPL) とは、GNUプロジェクトのためにリチャード・ストールマンにより作成された自由ソフトウェアライセンスである。八田真行の日本語訳ではGNU 一般公衆利用許諾書と呼んでいる。現在、GNU公式サイト日本語ページではGNU一般公衆ライセンスと表記されている。

概要 GPLは、プログラム(日本国著作権法ではプログラムの著作物)の複製物を所持している者に対し、概ね以下のことを許諾するライセンスである。

プログラムの実行プログラムの実行はRAMに対するプログラムの複製を伴うことから、複製権との関係が問題にならないわけではないが、著作物の複製物を適法に入手した場合、日本国著作権法下では当該複製物を使用すること自体に許諾を得る必要はないので(支分権に使用権がない)、入手手段に問題がない限りライセンスに著作権者が課す制約としての意味はない。 プログラムの動作を調べ、それを改変すること(ソースコードへのアクセスは、その前提になる) 複製物の再頒布 プログラムを改良し、改良を公衆にリリースする権利(ソースコードへのアクセスは、その前提になる)

GPLは二次的著作物についても上記4点の権利を保護しようとする。この仕組みはコピーレフトと呼ばれ、GPLでライセンスされた著作物は、その二次的著作物に関してもGPLでライセンスされなければならない。これはBSDライセンスをはじめとするパーミッシブ・ライセンスが、二次的著作物を独占的なものとして再頒布することを許しているのとは対照的である。GPLはコピーレフトのソフトウェアライセンスとしては初めてのものであり、そのもっとも代表的なものである。

GPLはフリーソフトウェア財団 (以下FSFと略称) によって公開され、その管理が行われている。GPLでライセンスされている傑出した自由ソフトウェアのプログラムには、LinuxカーネルやGNUコンパイラコレクション (GCC) がある。

FSFが公開、管理する他のライセンスには、GNU Lesser General Public License (GNU LGPL)、GNU Free Documentation License (GNU FDL、またはGFDL) そしてGNU Affero General Public Licenseバージョン3 (GNU AGPLv3) がある。

意義 ストールマンは、ソフトウェアに対する自由とは何かという問題を提起し、そのひとつの答えを提示した。GPLは、「自由なソフトウェア」を、有償・無償に関係なく、頒布できるようにした、という単純な意味だけでなく、「ソフトウェアは自由であるべき」という思想が存在することを一般に認知させたという意味において極めて重要な意義がある。

GPLにより付与される強力なコピーレフトはGNU/Linuxの成功にとって重要な役割を果たしているとも言われる。なぜなら、コミュニティに全く還元しようとしないソフトウェア企業にただ搾取されるのではなく、著作物が世界全体に貢献し、自由であり続けるという確証をGPLはプログラマに与えたからである。

歴史 GPL誕生以前、Emacsの頒布条件となっていたライセンスが生まれたきっかけは、ジェームズ・ゴスリンが作成し、当初自由な利用が認められていたGosling Emacsのコードに突如ゴスリンが独占的な許諾条件を附してしまったことが契機となっているストールマンはこの一件におけるゴスリンについて「臆病でふざけたやつ」(訳: 山形浩生)と評している。。この許諾条件の変更の影響により、ストールマンは自身のEmacsのコードを書き換えなければならなくなった。

またGPL、GNUプロジェクトの誕生について、次のような逸話もある。 当時、ストールマンはMIT人工知能研究所でSymbolics社製のLISPマシンで動くソフトウェアを開発していたが、ストールマンが作りSymbolics社に対して提供したパブリックドメイン版であるソースコードの改変版について、同社が著作権を根拠にソースコードを開示しなかったことに腹を立てGPLを考案したといわれる。いずれにせよ、これ以降いかにしてソースコードの自由な利用を保証するかということにストールマンは腐心するようになる。

GPLは1989年にリチャード・ストールマンによって、GNUプロジェクトのソフトウェアの配布を目的に作られた。オリジナルのGPLは、初期のGNU Emacs、GNUデバッガそしてGNU Cコンパイラの配布に利用していた類似のライセンスを基に、それらを組み合わせたものをベースとしている。前記3つのライセンスは、現在のGPLと似たような条文を含んでいる。しかし、それらは各プログラム固有のライセンスであり、似通っているとはいえ、互いの互換性は全くなかったポルト・アレグレで2006年4月21日に開催された第2回GPLv3カンファレンスでのスピーチ。リンク先はGPL登場前の歴史について。。ストールマンの目標は、いかなるプロジェクトでも使用可能で、それゆえ多くのプロジェクトがコードを共有することを可能にさせる単一の汎用的なライセンスを作り出すことだった。

GPLは幾度か改訂されており、1991年にはバージョン2がリリースされている。バージョン3がリリースされるまで、それに従うこと15年間、FOSSコミュニティの幾人かは、GPLでライセンスされているプログラムを、ライセンスの意図に反し、搾取する事につながる抜け道 (loopholes; 抜け穴、ループホール) に対し懸念を抱くようになった。これらの懸念の中には、TiVo化(Tivoization。GPLでライセンスされたプログラムが含まれているにも関わらず、改変版ソフトウェアの稼動を拒絶するハードウェアについての問題)、Webインタフェースの裏側に隠れ公開されることのない改変版GPLソフトウェアの利用、AGPLバージョン1と同等の互換性問題、GNU/Linuxコミュニティと敵対するための武器として特許を行使する企てと見なされる、マイクロソフトとGNU/Linuxディストリビュータとの特許契約などがある。

FSFならびにFLOSSコミュニティは、これら懸念に対し真剣に取り組むべく、バージョン3への改訂作業を始めた。2005年後半、FSFは、GPLバージョン3 (GPLv3) の策定に関するアナウンスを行った。2005年の時点でGPLは様々なFOSSプロジェクトのソフトウェアに採用されていたこともあり、FSFが単独で改訂することにより起こりえる問題を回避するため、改訂プロセスは公開で行うことが同時に発表された。2006年1月16日、GPLv3の最初の議論用草稿 (discussion draft) が公開され、公開協議プロセスを開始した。当初公開協議は9ヶ月から15ヶ月を想定していたが、終わってみると、4つの草稿公開に延べ18ヶ月にまで要した。公式のGPLv3は2007年6月29日、FSFにより発表された。GPLv3は、リチャード・ストールマンにより起草され、エベン・モグレンならびにSoftware Freedom Law Center (SLFC) による法的助言を受けている2006年2月25日、ベルギー・ブリュッセルのFOSDEMカンファレンス第1日目におけるリチャード・ストールマンのプレゼンテーション。。

公開協議プロセスは、FSFを調整役、SFLC・Free Software Foundation Europe (FSFE)その他自由ソフトウェア開発組織による支援のもと進められた。この間、gplv3.fsf.orgというウェブポータルサイトが立ち上げられ、ここを経由し多くの一般からのコメントが集められた。このポータルサイトは、策定プロセスのために開発されたstetstetとは「校正で朱書きするイキ」の意。gplv3.fsf.orgサイトを閲覧すれば分かるが、このソフトウェアは文書に対し単語単位でコメントをつけることができ、コメント数に応じて、コメント箇所の色が目立つようになっている。というソフトウェア上で稼働している。これらコメントは、およそ130名ほどから成る4つの協議グループ (committee)に渡された。この130名はFSFの目標に対しそれを支持する人物並びにそれと対立する人物双方が含まれている。これら協議グループは一般から提示されたコメントを精査し、新しいライセンスがどうあるべきか決定するため、ストールマンにその要約を回付した。

公開協議プロセスを経て、初回の草稿には962ものコメントが提出された。終わってみると、延べ2,636ものコメントが提出されていた。

初版の草稿公開ののち、GPLv2とGPLv3の非公式な差分(但し、これはdiff出力による行単位ごとの単純な差分)が、FLOSSコミュニティ向け法律サイトGroklawにより公開された。

160px|right|GNU LGPLv3のロゴ 2006年7月27日、GPLv3の討議用第2次草稿が、LGPL第3版 (GNU LGPLv3) の初版草稿とともに公開された。初稿と第2稿の差分は、FSFとFSFEからそれぞれ提示されている。第2稿ではDRMに対抗する明確な目標が取り入れられている。

第3稿は2007年3月28日に公開された。この草稿は、かの物議を醸したマイクロソフトとノベルが締結したような特許相互ライセンス (patent cross-license)詳しくは英語版ウィキペディアのNovell#Agreement with Microsoftを参照せよ。を排除する意図を持つ文言を含んでおり本文、11. Patents.(第11項. 特許)の第5段落を見よ。これは正式公開版の第11項第7段落に相当する。、反TiVo化条項 (anti-tivoization clauses) はユーザ製品 (User Product)・コンシューマ製品 (Consumer Product) といった一般家庭で使用される製品に限定する旨定めている本文、6.Conveying Non-Source Forms. (第6項. ソースコード形式ではない伝達 (譲渡) について) の第3段落(段落数は小項a)~e) を計数しない)以降を中心に見よ。第3稿では「ユーザ製品」の定義として, et seq.)を直接参照している。しかしこの参照部分が米国法依存になりライセンスの国際化に逆行するものであるとして批判を受けたため、定義部分をより明確化した上で、当該法への参照は第4稿そして正式版で完全に削除されている。。また、公開協議開始時点で削除が予告されていた地理的 (頒布) 制限 (Geographical Limitations)GPLv2の第8節を参照せよ。特定国の準拠法により、特許や著作権を持つ「インタフェース」(interfaces)が、本プログラムの頒布や利用を制限する場合は、プログラムの著作権者がそのような特定国での本プログラムの頒布を禁止する条項である。第3次議論用草稿趣旨説明書によると、この条項が利用されることが稀であったことが削除の理由としているが、条項自身にも問題があると述べられている。の項については、明白に削除されている。

最終稿となった第4の議論草稿は2007年5月31日に公開された。この草稿では、Apache Licenseとの組み合わせを可能にする条項が導入された他、外部契約者 (contractor) の役割を明確化し、マイクロソフト–ノベル間の契約のような明白な問題を回避する例外条項を加えている。この最後の例外条項は、第11項Section 11. 八田真行による条文非公式日本語訳ではGPLv3のSectionに相当する語を項と訳している。GPLv2では節と訳されていた(Articleとの混同が避けられる場合は条と訳されることもある)。LGPLv3非公式日本語訳もGPLv3の条文を内部的に参照しているが、同じく「項」と訳してある。以下これに従う。第7段落に次のように記載されている(条文は正式公開版と同一である)。

これは、そのような契約を将来に渡って無効化することを目的としている。また本ライセンスは、マイクロソフトが、あるGPLv3ソフトウェアを利用するノベルの顧客に許諾したような特許契約(特許ライセンス、特許許諾、パテントライセンス)を、まさにそのGPLv3ソフトウェアを利用するユーザーすべてにまで(ユーザーの行為如何に全く関わらず)自動的に拡大適用することを意味する。ただし、マイクロソフトが法的にGPLv3ソフトウェアの伝達者 (conveyor; 譲渡者) でもない限り、それは不可能であるドラフト段階のFAQ。ライセンス条文の言い回しよりも幾分その目的が読みやすく示されている。。これはある種、特許契約に対しそれを他者に無制限に提供してしまうことから、ポイズンピルのような働きを持つとの意見もある。ただし本条項導入の直接の契機となった、ノベルの行為そのものに対しては、本項第7段落最後に例外を設け、を適用している正式リリースされたGPLv3第11項第7段落より引用すると、 "You may not convey a covered work [...] unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007." (八田真行訳:「(前略)いる場合、あなたは『保護された作品』を伝達してはならない。ただし、あなたがそのような協定を締結したり、『パテントライセンス』を授与されたのが2007年3月28日より以前である場合は本節の例外とする。 )。

バージョン履歴

バージョン1 バージョン1は、1989年2月にリリースされた。ソフトウェア頒布者が自由を制限する手段の主に2つから、自由ソフトウェアの定義たる自由を守る働きを、このライセンスは持っていた。

第一の手段は、頒布者がバイナリ(実行ファイル)のみを公開することである。バイナリを受け取っても人間は基本的に読んだり改変したりすることができない。これを防ぐため、GPLv1では、いかなるベンダーもバイナリを頒布するならば、ソースコードも利用できるようにしなければならないとしているライセンスの第3a節、第3b節を見よ。

第二の手段は、ライセンスに追加の制限を加えることである。直接でなくても、別の制限があるソフトウェアを組み合わせて頒布すれば、制限は2つの集合の和になる。すなわち、受け入れられない制限が加えられたことに等しい。これを避けるため、改変版も、GPLv1の下で頒布されなければならないと、GPLv1では規定しているライセンスの第2b節、第4節を見よ。このため、GPLv1よりも厳しいライセンスで頒布されるソフトウェアを組み合わせることはできない。ただし、GPLv1よりもパーミッシブ・ライセンスで保護されるソフトウェアと組み合わせて頒布することが可能である。なぜなら、組み合わせによって全体を通して頒布に係るライセンス条項に変化はないからである。

バージョン2 バージョン2は、1991年6月にリリースされた。 リチャード・ストールマンによれば、GPLv2で最大の変更は第7節、彼に言わせると、パトリック・ヘンリーの名文句「自由か然らずんば死を」("Liberty or Death") の一節であるポルト・アレグレで2006年4月21日に開催された第2回GPLv3カンファレンスでのスピーチ。リンク先は"Liberty or Death" (自由か死か) 節について。。他の利用者の自由を尊重するような方法で、GPLで保護されたソフトウェアの頒布が妨げられる場合(たとえば、法的規制によりソフトウェアをバイナリ形式でしか頒布できないとき)、この節に従えば、頒布は一切できない。GPLv3でも同様の条項が存在し、幾分簡素化されたうえ主旨が明確になっている。これは、自由ソフトウェア開発者や、自由ソフトウェアを単に使用する者から金を脅し取ろうと特許を行使する企業の企みをすこしでも減らすことを見込んでいる。

1990年までには、現存するプロプライエタリなライブラリと本質的には同等な機能を持つCライブラリや、その他のソフトウェア・ライブラリに対しては、制限の緩いライセンスのほうが戦略的に有効なことが明らかになってきたこの理由は、The GNU Projectという文書で言及されている。。1991年6月にGPL第2版がリリースされた際、Library General Public License (LGPL) が、初版にもかかわらずGPLと相補的なことを示すため第2版として同時に導入された。GNUの思想における位置づけを反映させるため、Lesser General Public Licenseと名を変え、1999年、LGPL2.1がリリースされた。

バージョン3 バージョン3は、2007年6月にリリースされた。GPLv3は、ソフトウェア(プログラム・ライブラリなど)を含む著作物に対し、著作者・著作権者やライセンス受諾者の権利や、プログラムの受領者のためにライセンス許諾者が与える権利、またソフトウェアの自由と衝突する法や法的権利(DRM、特許の利用、他者を差別するような特許ライセンスの排除)などに関する基本理念を以前のバージョンより明文化している。

ストールマンによると、もっとも重要な改訂点は、ソフトウェア特許、他の自由ソフトウェアライセンスとの両立性(compatibility; 互換性)、「ソースコード」とは何を指すのかの定義、ソフトウェアの改変に関する(TiVo化)そしてデジタル著作権管理 (Digital Rights Management, DRM) との関連がある。その他の改訂点は、国際化、ライセンス違反時の対処手段そして可能ならば著作権者により追加的条項(additional terms正式公開されたGPLv3の 7. Additional Terms.(第7項「追加的条項」)には、許可・非許可事項に分けて記載している。またGPLv3を参照しつつ、追加的許可事項を認めたライセンスの一例にLGPLv3があり、これによりLGPLv3はGPLv3の補完的なライセンスとなっている。)を与える手段に関連している。

他、注目に値する改訂点としては、GPLv3で保護された著作物の著作権者が、パッチなどを提供しそれに改変を加えた貢献者 (contributor) に対し、ある種の条件または要求を課すことを許諾する条項が加えられている。これらに加えて、新しく導入された要件の一つには、時折Affero条項 (Affero clause、Affero節) とも呼ばれるが、Software as a Service (SaaS) のようなASPモデルによるGPLの条項を回避しようとする試み(ASP loophole; ASPの抜け道)に対し、これを封じようと意図しているものも含まれる。この条項が追加された結果、GNU Affero General Public Licenseバージョン3 (GNU AGPLv3) が作成されている。GPLv3とAGPLv3は互いに両立はしないが、リンクや結合のみを認める相補的な条項を共に持っている。

また、GPLv3で許諾されるソフトウェアは、米国のDMCAや日本の著作権法、不正競争防止法が規定している「技術的制限手段」(技術的保護手段、例: DRM)の「解除」を認める条項が追加されている(詳細はセクション"技術的保護手段回避を禁ずる法への対抗措置"を参照)。

利用条件 「GPLが適用された著作物の複製を受け取る全ての者」(Recipients; 受領者)は、GPLの条項と条件 (terms and conditions; 利用条件) を遵守しなければならない。利用条件を遵守するライセンシー(the licensee; 被許諾者、ライセンシー再頒布者もこの中に含まれる。ライセンシーは後述の説明からソフトウェアを受領して利用するだけの人物、すなわち受領者の一例である。)は著作物を改変する許諾を与えられるのと同時に著作物または二次的著作 (派生 derivative) 物の複製と頒布を許諾される。ライセンシーは、このようなサービスを提供するのに料金を課してもよいし、また無料で行ってもよい。この後者の許諾は、GPLと商用再頒布禁止のソフトウェアライセンスとの相違点である。FSFは、自由ソフトウェアは商用利用を制限するべきではないと主張している。また、GPLは、GPLが適用された著作物を如何なる値段で販売しても良い旨、明確に述べてある。

加えて、GPLは、頒布者がGPLにより許諾される以上のさらなる権利制限 (further restrictions on the rights granted by the GPL) を課してはならないと述べている(GPLv2第6節、GPLv3第10項)。これは(純粋に契約である)秘密保持契約 (non-disclosure agreement, non-disclosure contract) のもとソフトウェアを頒布するような手法を禁ずる。GPLのもと、頒布者はまた、GPLなソフトウェアにおける特許を行使するために、ソフトウェアにより行使されるいかなる特許をも「ライセンス」(特許ライセンス)として許諾する。

GPLv2の第3節とGPLv3の第6項によると、事前コンパイルされたバイナリとして頒布されるプログラムは次のいずれかを満たさなければならない。 ソースコードの複製の直接の添付 事前コンパイルされたバイナリと同一の手段でソースコードを頒布するという書面での提案の添付 GPLのもと、事前コンパイルされたバイナリを受け取った場合に得た何かを、ソースコードを提供する旨の文書で提示 また、GPLv2の第1節とGPLv3の第4項は、プログラムの受領者すべてにプログラムと共にGPLの複製を (all recipients a copy of this License along with the Program) 与えなければならないと規定している。GPLv3ではその第6項を満たす限りにおいて、ソースコードを利用可能な状態にするために、GPLv2で指定された物理媒体以外にも、明示的に追加の手段を講じても良いとする。コンパイル済みコードを取得する方法とソースコードのありかが明確に分かる場合、近くのネットワークサーバからまたはP2P送信によりソースコードをダウンロードさせる手段などもこの追加の手段に含まれる。

改変された著作物を頒布する権利は、GPLにより無制限に付与されるわけではない。頒布者自身による改変が加えられたGPLによる著作物を頒布する際に、著作物全体を頒布するための要件は、GPLよりも強い要件であってはならない。

その要件とは、コピーレフト (Copyleft) として知られている。これは、ソフトウェアプログラムに関し、著作権 (copyright) を利用した法的な権能をもたらす効果がある。GPLで保護される著作物もまた、著作権で保護されているため、改変された形態でなくとも、ライセンスで規定されている場合を除き、ライセンシーはその著作物の再頒布の権利を持たない(フェアユースを除く。ただし、その記事やGPL FAQで述べられている通り、フェアユースにworld-wide principle; 世界的な原則、統一見解などない)。再頒布のような、通常著作権法で制限される権利をある人物が行使しようと考える場合、その人物はGPLの条項をただ従う必要がある。逆に、GPLの条項を遵守せず(例えば、ソースコードを開示しない)著作物の複製を頒布すると、著作権法に基づき著作権者から頒布の差止め等で提訴される可能性がある。

コピーレフト

コピーレフトは、著作権法を本来の使用目的と正反対の目的を実現するために利用する。すなわち制限を課す代わりに、コピーレフトは、権利がのちに消失しないような方法で、他者への権利を許諾するGPLはある種の"copyright hack"とも言える。。コピーレフトはまた、ライセンシーに対し再頒布の権利を無制限に許諾するのではなく、コピーレフトが主張する点において発見されるのは法律上の任意の欠陥であるべきことを保証している。

コピーレフトライセンスで保護されるプログラムを頒布する多くの者は、ソースコードと共に実行ファイルを添付する。コピーレフトを満たす別の方法は、要求に応じて(CDのような)物理媒体を用いてソースコードを提供するという文書を提示することである。また事実としてコピーレフトライセンスで保護されるプログラムの多くは、インターネット上で頒布されており、ソースコードはFTPまたはHTTPなどを用いてソースコードを遣り取りできるようにしているものが多い。インターネット上での頒布は本ライセンスを満たしている。

コピーレフトが適用されるのは、ある人物がプログラムを再頒布しようと求める場合にのみである。改変したソフトウェアを他の誰にも頒布しない限り、改変箇所を公開しなければならない如何なる義務も免ぜられ、その改変版を私的な物とすることは許される。また、コピーレフトはソフトウェア自身のみに適用されるのであって、ソフトウェアの出力 (outputs, アウトプット) には適用されないことには注意しておきたい(ただし、そのアウトプット自身がプログラム自体の二次的著作物ではない場合)。例えば 、GPLで保護されたコンテンツ管理システム ("Contents Management Systems"; CMS) に対しその改変した派生版を動作させる一般ウェブポータル(ブログソフトウェアなど)は、その出力自体はプログラム自体の派生物ではないから、土台としたソフトウェアならびにその改変部分を頒布する必要はない。反例は、GPLで保護されたソフトウェア"GNU bison"である。この構文解析器の出力は、その派生物の一部をまさに含んでおり、そのため、この事実に対しGNU bisonにより許諾される特殊な例外条項 (a special exception) が仮に存在しないならば、出力結果はGPLで保護される派生物となっていたであろう。最新のGNU bisonでは、事実として、出力コードのヘッダにAs a special exception...という特殊例外条項が記述されている。

なお(GPLに従う著作物に限ったことではないが)、コピーレフトのもとで公開された著作物の著作権は、前述の通り譲渡しなければ個々のコードの著作権者が保有している。従ってコピーレフトを無視した再頒布に対して、頒布の差止めやコピーレフト違反是正(エンフォースメント)を求める権利があるのはプログラムの著作権者だけであり、一般のライセンシーにはない。ただ、大規模なFOSS開発プロジェクトは一般的にワールドワイドであり、開発者の居住国が多岐に渡るため、多かれ少なかれ差異がある各国の著作権法にプロジェクト全体で合致させるのは困難を要す。このため一部のFLOSSプロジェクトでは各著作権者に代わり、コードの著作権を一括してプロジェクト(またはそれを統括する団体・法人組織)が引き受ける場合もある。GNUプロジェクトは、コードの受け入れに関し、米国著作権法の庇護を享受するため、ライセンス如何に関わらず、寄贈されたコードの著作権を原著作者より明示的にFSFに譲渡する場合にのみ受け入れている。CMSのPloneならびにPlone財団(Plone Foundation)も似たような形式を採用している。

ライブラリ FSFによると、「GPLは改変版、もしくは改変版の一部のリリースを要求することは述べていない。改変版を一切公開せず、改変を加えることや、私的に利用することは自由である。」と主張している。しかしながら、仮にある人物がGPLでライセンスされたオブジェクトを公開するならば、ライブラリリンクに関する問題が提起される。すなわち、もし、プロプライエタリなプログラムがGPLなライブラリを使用するならば、そのプロプライエタリなプログラムは(一般にプロプライエタリソフトウェアはソースコードが自由な許諾の下利用できない為)GPLに違反する、はたまたそうではないのか、という問題がある。