コントリビューター ライセンス契約とヘッダー

このページでは、コントリビューター ライセンス契約への署名とコードでのライセンス ヘッダーの適切な使用の確認というコントリビューターにとって重要な 2 つのタスクについて説明します。

コントリビューター ライセンス契約に署名する

Android オープンソース プロジェクト(AOSP)にアイデアやコード、ドキュメントを投稿する個人コントリビューター(代理ではなく自分自身でコントリビューションを行う個人)は、個人コントリビューター ライセンス契約に記入、署名して提出する必要があります。このライセンス契約は、コードレビュー ツールを通じてオンラインで締結できます。このライセンス契約には、AOSP に対して知的財産を貢献する場合の規約が定められています。このライセンス契約は、プロジェクトの保護と、個人コントリビューターの保護を目的としています。コントリビューターが他の目的のために自身のコントリビューションを使用する権利を変更するためのものではありません。

企業コントリビューター ライセンス契約は、AOSP にかかわる従業員が所属する企業(または他の事業体)を対象としています。このライセンス契約の下で、企業は指定従業員が投稿したコントリビューションを承認し、著作権と特許ライセンスを付与できます。

各コントリビューター ライセンス契約は、Apache Software Foundation が使用しているライセンス契約に基づいています。詳細については、Apache ウェブサイトをご覧ください。

ライセンス ヘッダーを含める

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

AOSP の優先ライセンスは Apache License バージョン 2.0(Apache 2.0)であり、ほとんどの Android ソフトウェアは Apache 2.0 に基づいてライセンス供与されます。AOSP では、可能な限りこの優先ライセンスを採用するようにしていますが、個々の状況によって別のライセンスが採用される場合もあります。たとえば、Linux カーネルのパッチには、システム例外付き GPLv2 ライセンスが採用されています。このライセンスについては、The Linux Kernel Archives をご覧ください。

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

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

    • 端的に言えば、LGPL では、アプリソースの配布や、書面によるソースの提供、あるいは、LGPL ライセンス ベース ライブラリと動的にリンクさせてライブラリの手動更新や置き換えをユーザーに許可することが求められます。Android ソフトウェアは通常、静的システム イメージとしてリリースされるため、このような要件に準拠しようとすると、デバイス メーカーの設計に制約が課されることになります。たとえば、読み取り専用のフラッシュ ストレージ上にあるライブラリをユーザーが置き換えることは困難です。

    • LGPL では、ユーザーによる編集と、そのような編集をデバッグするためのリバース エンジニアリングを許可することが義務付けられています。ほとんどのデバイス メーカーは、このような規約に拘束されることを望んでいません。

    • 歴史的に、LGPL ライブラリは、配布過程の下流に位置するデバイス メーカーやアプリ デベロッパーにとって、コンプライアンスに関するさまざまな問題を引き起こす要因となってきました。このような問題についてエンジニアに熟知してもらうには、大変な労力と時間が必要になります。デバイス メーカーによるライセンスへの準拠をできる限り容易にすることが、Android 開発を充実させるうえで不可欠です。

ただし、LGPL や他のライセンスを批判する意図はありません。Google は、すべてのフリー ライセンスやオープンソース ライセンス、ならびに他の企業や団体のライセンス採用方針を尊重しています。Apache 2.0 が Google の目的に最も適していると判断したにすぎません。

AOSP に含めるコードを提出する場合は、ライセンス ヘッダーが正しく使用されていることを確認する必要があります。以下に、新しいファイルや既存のコードのライセンス ヘッダーを取り扱う方法について説明します。

著作権とライセンス ヘッダーについてのベスト プラクティスを以下に示します。

  • 既存の著作権を変更しないでください。たとえば、AOSP に投稿するファイルに、専用の著作権に関する通知があるファイルから取得したコードが含まれている場合は、元のファイルの著作権に関する通知を保持する必要があります。

  • 完全に新しいソースファイルを追加する場合は、投稿対象のプロジェクトにあらかじめ定義された別のライセンスがない限り、デフォルトの AOSP の著作権と以下のライセンス ヘッダーを使用してください。

    Copyright (C) yyyy The Android Open Source Project
    Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this file except in compliance with the License.
    You may obtain a copy of the License at
    
    http://www.apache.org/licenses/LICENSE-2.0
    
    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.