ライセンス

Android オープンソース プロジェクト(AOSP)は、オープンソース イニシアチブで承認されたいくつかのオープンソース ライセンスをソフトウェアに使用しています。

AOSP のライセンス

Apache License バージョン 2.0(Apache 2.0)は、AOSP の優先ライセンスであり、ほとんどの Android ソフトウェアに Apache 2.0 のライセンスが付与されています。プロジェクトでは、極力優先ライセンスを採用するように努めていますが、個々の状況によって別のライセンスになる場合もあります。たとえば、Linux カーネルのパッチには、システムの例外として GPLv2 ライセンスが採用されており、kernel.org で取得できます。

コントリビューター ライセンス契約

AOSP に参加してアイデア、コード、ドキュメントの面で活動するすべての個人コントリビューター(自身のためにのみ活動するコントリビューター)は、個人コントリビューター ライセンス契約に記入、署名して提出する必要があります。契約は、コードレビュー ツールを通じてオンラインで同意できます。契約には、AOSP に対して知的財産に関する貢献を行う場合の規約が明確に定められています。プロジェクトの保護とともに、コントリビューターとしての参加者の保護を目的としたライセンスであり、参加者が行った貢献に関する使用権を変更して他の目的に利用するためのものではありません。

企業コントリビューター ライセンス契約は、AOSP に関わる従業員が所属する企業(または、その他の事業体)を対象としています。この契約により、企業は指定された従業員による活動を承認し、その成果物に対して著作権と特許ライセンスを付与できます。

これらの契約は、Apache Software Foundation の使用する契約に基づいています。同契約の内容は Apache のウェブサイトで確認できます。

Apache ソフトウェア ライセンスが必要な理由は何ですか?

Google では、カーネル以外のユーザー空間のソフトウェアについて、LGPL(Lesser General Public License)などの他のライセンスよりも、Apache 2.0(および BSD、MIT などの類似ライセンス)を優先しています。その理由は次のとおりです。

Android では、基本的な考え方として自由と選択を掲げています。モバイル環境全体をよりオープンなものとすることを目的としており、すべてのソフトウェアの使用方法や用途について Google が管理したり予測したりすることはできません。つまり、Google は、すべての参加者にオープンで自由に変更できるデバイスの作成を推奨はしますが、義務づける立場にはないと考えています。LGPL ライブラリを使用すると、制約が増える可能性があります。以下に具体的な懸念事項を示します。

  • 端的に言えば、LGPL では、アプリケーションへのソースの配布(書面によるソースの提供)、もしくは LGPL ライセンスによるライブラリへの動的リンクとライブラリの手動更新や置き換えをユーザーに許可することが求められます。Android ソフトウェアは通常、静的なシステム イメージとしてリリースされるため、このような要件が求められると、デバイス メーカーの設計に制約が課されることになります。たとえば、読み取り専用のフラッシュ ストレージのライブラリをユーザーが置き換えることは困難です。
  • LGPL では、ユーザーによる修正と修正をデバッグするためのリバース エンジニアリングを許可することが義務付けられています。ほとんどのデバイス メーカーは、こうした規約の制約を受けることを望んでいません。
  • 過去にも、LGPL ライブラリは、配布過程の下流に位置するデバイス メーカーやアプリケーション デベロッパーにとって、コンプライアンスに関連した問題を多数発生させる要因となってきました。これらの問題についてエンジニアに熟知してもらうには、大変な労力が必要です。デバイス メーカーによるライセンスの遵守をできるだけ容易にすることが、Android の開発を充実させるうえで不可欠です。

Google が、コードに関して Apache 2.0 を優先するのは、上記のような課題があるためです。ただ、LGPL やその他のライセンスを批判する意図はありません。Google は、すべてのフリー ライセンスやオープンソース ライセンス、およびそれらの採用方針を尊重しており、Apache 2.0 を採用しているのは、自身の目標に適していると判断したためです。