多くのフリーソフトウェアライセンスが利用できますが、 それらが述べている重要な点はすべて同じです。 つまり、誰もがコードを改造でき、 オリジナルのままでも、改造を加えた形でも再配布できること、 そして著作権を持つ人、そしてソフトウェアの作者はいかなる保証もしない (無保証であること、責任を回避することは、 特にソフトウェアが改変されたことを知らないで実行する人がいる可能性を考えると特に重要です) ことです。 それぞれのライセンスの違いは、以下のよく起こる問題に集約できます。
フリーなライセンスの中には、 それが適用されるコードを独占的なプログラムで使うことを認めるものがあります。 これは独占的なプログラムのライセンス条件に影響を与えません。 独占的なプログラムはそのままで、 独占的でないソースコードがいくらか混入するだけです。 Apacheライセンス、Xコンソーシアムライセンス、 BSDスタイルのライセンス、そして MITスタイルのライセンスは、 すべて独占的なライセンスと互換性があるライセンスの例です。
ほとんどのフリーなライセンスはお互いに互換性があります。 つまり、あるライセンスが適用されたコードは、 別のライセンスが適用されたコードと組み合わせることができます。 組み合わせた結果できたものは、 それぞれのライセンス条件を破ることなく再配布することができます。 このことの重要な例外は、GPL (GNU General Public License) です。 GPL は、 GPL で配布されたコードを使ったいかなる派生物も、 GPL として配布しなければならず、 かつ GPL が必要とすること以上の制限をつけてはならない、 ことを要求しています。 GPL と互換性があるライセンスもあれば、ないものもあります。 詳しくは、 後の方にある 「GPL とライセンスの互換性」 で議論しています。
フリーなライセンスの中には、 それが適用されたソースコードを使ういかなるコードにも、 注意書きを記すことを強制するものがあります。 注意書きの位置や内容も決まっているのが普通です。 内容はコードの作者や著作権を持つ人へのクレジットです。 こうしたライセンスでも、 独占的なライセンスと互換性があるものがあります。 なぜなら、派生物がフリーであることを要求するのではなく、 フリーなコードに対してクレジットを与えることだけを要求しているからです。
クレジットを強制するやり方の変形として、 商標で保護されたライセンスは、 オリジナルのソフトウェア (またはその著作権を持つ人や組織など) の名前を、事前の書面での許可なく派生物で使っては いけない と定めています。 クレジットを強制するやり方は、 ある名前をどこかで使うことを求めますし、 商標で保護するやり方は、使わないことを求めますが、 どちらも同じ要求を表しています。 つまり、オリジナルのソースコードへの敬意を払い、 それを伝播させたいけれども、 どこからもそうした敬意を傷つけられたくないのです。
GPL バージョン3 や Apache Software Licence バージョン2 には、(著作権に関する法律で)ライセンスが与えている権利を 特許を使って奪うことを防ぐための文言が含まれています。 これらのライセンスは、成果物とそれに付随した特許ライセ ンスを与えることを貢献する人に要求します。この特許ライセ ンスには、彼らの貢献によって(または、貢献がソフトウェア に取り込まれることで)侵害されるあらゆるライセンス可能な 特許が含まれます。 その上で、GPL バージョン3 や Apache Software License バージョン2 はさらにその一歩先を行っています。つまり、こ れらのライセンスによって配布されているソフトウェアのユー ザーが、そのソフトウェアに含まれている特許を侵害したと主 張して第三者に訴訟を起こした場合、そのユーザーはソフトウ ェアのライセンスによって与えられていた特許の全てを自動的 に 失います。さらに GPL バージョン3 の場合は、ライセンスに基いてソフトウェアを配布する権利も なくなってしまいます。
ライセンス (たとえば、プログラミング言語 Perl で実装されたソフトウェアで最も人気がある Artistic License や、Donald Knuth の TeX License) によっては、 オリジナルのコードと改変した部分を区別できるやり方で、 改変と再配布を行うように要求するものがあります。 こうしたライセンスは、 本質的に他のフリーなライセンスと同じ自由を認めていますが、 オリジナルなコードの完全性を容易に確認できるようにするために、 ある制限を課しています。 これらのライセンスは特定のプログラム以外では受け入れられていません。 よってこの章でも議論しません。 ただ、完全を期すためにここで触れています。
これらの条件は、相互に排他的なものではありませんし、 ライセンスによっては複数の条件を含むものがあります。 共通しているのは、ソフトウェアを受け取る人が、 それを使ったり再配布するのを認めるのと引き換えに、 ライセンスが義務を課すというものです。 たとえば、自分たちの名前とコードへの敬意を、 コードで伝播させたいと願って、 クレジットや商標について条件を課すプロジェクトが存在します。 条件から出てくる負担によっては、 面倒だと考えて制限が緩いライセンスを採用したパッケージを選ぶユーザーが出てくるかもしれません。