OSS ライセンスの仕組みとプロジェクトへの適用方法

How open source licenses work and how to add them to your projects

translated on

先日、世界中の開発者たちの間に衝撃的なニュースが走りました。Facebook が自社開発している複数のライブラリに関するライセンスを変更したというのです。BSD-3+patents から MIT License への変更です。

一見するとよいことのように思えるのですが、これは一体何を意味するのでしょうか?また、オープンソースライセンスの違いとは一体何なのでしょうか?

この記事では、広く普及しているライセンスについて説明します。また、GitHub のオープンソースプロジェクトにそれらを適用する方法についてもご教授したいと思います。

許可団体

最も一般的なオープンソースライセンスには、共通する重要項目があります。Open Source Initiative(OSI)はそういった項目を認可しています。

オープンソースソフトウェアの促進を目的として、OSI は1998年に設立されました。オープンソースソフトウェアとは何であるかを定義するために、Open Source Definition(OSD)が作成されました。

下記は、彼ら自身による組織についての説明です:

Open Source Initiative(OSI)は国際的な非営利組織であり、オープンソースの利益についての教育と提唱を実施し、また、オープンソースコミュニティにおける有権者たちの間の橋渡しをするために設立されました。

よく使われるライセンス

ほとんどのオープンソースライセンスには、以下のような条件が盛り込まれています:

  1. ソフトウェアは改変可能、商用利用可能、頒布可能である。
  2. ソフトウェアは、私的な改変と利用が可能である。
  3. ライセンスと著作権については、ソフトウェア内に明記されなければならない。
  4. ソフトウェアの著作者は、そのソフトウェアに関する保証はせず、また、なんら責任を負わない。

私たちは、広く普及しているライセンスについて、もっとも制限が厳しいものからもっとも緩いものまでを順に(ユーザーの観点から)くまなく調べました。

GNU General Public License version 3(GPLv3)

GPLv3 は、もっとも制限が厳しいライセンスの一つです。ソフトウェアの著作者に対し、高い保護性があります。

  • ソースコードは、ソフトウェアの頒布が行われるたびに公開されなければならない
  • ソフトウェアの改変は、同じライセンスの下でリリースされなければならない。
  • ソースコードの修正は文書化されなければならない
  • 特許を受けている著作物がソフトウェア制作に利用された場合、ユーザーに利用許可を与えなければならない。また、ユーザーが、特許を取得している著作物の使用について訴えた場合、ユーザーはそのソフトウェアを使用する権利を失うことになる。

GPLv2 も幅広く使用されています。GPLv3 との最大の違いは、特許の許諾についての項目です。

バージョン3にその項目が追加された理由は、企業がユーザーに対し特許使用料を請求すること を防ぐためです。

GPLv3 を使用する有名なプロジェクトは BashGIMP です。Linux は GPLv2 を使用しています。

Ezequiel Foncubierta は、GPL のライセンスについて、ある重要なことを指摘しています:

あなたのソースコードのライセンスは、あなたがリンクしているオープンソースコードのライセンスとの互換性がなければなりません。たとえば、もしあなたのコードがプロプライエタリならば、GPL ライセンスに則り、あなたはライブラリを使用することができません。この点は間違いやすい部分です。

Apache License 2.0

Apache License 2.0 は、ユーザーにとって、より制限の緩いライセンスです。

  • ソフトウェアの頒布が行われる際、ソースコードの公開は不要である
  • ソフトウェアへの改変は、どのライセンス下においてもリリース可能である。
  • ソースコードへの修正は文書化されなければならない
  • GPLv3 と同様に、特許の取扱いの保護を付与する。
  • プロジェクト内における商標名の使用は明白に禁止する。

Apache License 2.0 を使用する有名なプロジェクトは、AndroidApacheSwift です。

Berkeley Software Distribution(BSD)

BSD は主に二つのバージョンがあります:2-clause3-clause です。どちらもユーザーにとって、Apache License 2.0 よりも、制限が緩いライセンスとなっています。

  • ソフトウェアの頒布時におけるソースコードの公開は不要
  • ソフトウェアの改変は、いかなるライセンス下においてもリリース可能。
  • ソースコードに加えられた修正は文書化しなくてもよい
  • 特許の取扱いにおいて明確な立場を有しない。
  • ライセンスと著作権の表示は、(ソースコード内のみの場合とは対照的に)ソースコードのコンパイルされたバージョン内で記述されなければならない。
  • BSD 3-clause ライセンスは、著作者と貢献者の名前は、その者の許可なしにソフトウェアから派生する製品のプロモーションに使用できないことを宣言する。

BSD ライセンスを使用する有名なプロジェクトは、Go(3-clause)、Pure.css(3-clause)、 Sentry(3-clause)です。

MIT License

MIT は、もっとも制限が緩いライセンスの一つです。また、もっとも広く使用されているライセンスでもあります。ソフトウェアの著作者にとっては保護力が低くなってしまいます。

  • ソフトウェアの頒布時におけるソースコードの公表は不要
  • ソフトウェアへの改変は、いかなるライセンス下においてもリリースすることが可能。
  • ソースコードへの修正は文書化しなくてもよい
  • 特許の取扱いにおいては明確な立場を有しない。

MIT を使用する有名なプロジェクトは、Angular.jsjQueryRailsBootstrap 等、他にも山ほどあります。

Facebook の React.js は、BSD-3+patents ライセンスを9月25日まで所有していました。そして、BSD-3 ライセンスに特許の使用に関するさらなる条項を追加しました。

つまり、Facebook や、Facebook 関連企業を訴えた場合、React の使用権利を失うことになります(もしくは、同じライセンス下のその他のソフトウェアもです)。

React は、現在は MIT License になっています。これで Facebook を訴えることも、React を使用し続けることもできます。ホッとしましたね!

オープンソースプロジェクトへのライセンスの適用

プロジェクトのライセンス取得は簡単です。レポジトリのルートディレクトリ内に、LICENSELICENSE.txt もしくは LICENSE.md を追加する必要があります。

GitHub を使用することにより、とても簡単に行うことができます。

  1. ブラウザで GitHub レポジトリを開く。
  2. ルートディレクトリ内で、Create new file をクリック。
  3. ファイル名を「LICENSE」にする。
  4. Choose a license template をクリック。
  5. ライセンスを選択する(この記事内で言及したライセンスはすべてあります)。
  6. 選択後、Review and submit をクリック。
  7. ファイルを Commit する。

まとめ

  • もっとも制限が厳しいライセンスは GPL。
  • もっとも制限が緩いライセンスは MIT。
  • その他の広く使用されているライセンスは、Apache License 2.0 と BSD。
  • GitHub プロジェクトにライセンスを適用するためには、GitHub のライセンステンプレートを使用した LICENSE ファイルの作成が必要。

How I used Python to find interesting people to follow on Medium もチェックしてみてください。

より新しい情報を知りたい方は Twitter で私をフォローしてください。