贡献者许可协议和标头

此页面涵盖两个重要的贡献者任务:签署贡献者许可协议和确保在代码中正确使用许可标头。

签署贡献者许可协议

所有向 Android 开源项目 (AOSP) 提供想法、代码或文档的个人贡献者(仅代表自己做出贡献的人)都必须填写、签署并提交个人贡献者许可协议。您可以通过代码审查工具在线执行本协议。该协议定义了向 AOSP 贡献知识产权的条款。该许可证旨在保护您作为贡献者以及项目的保护;它不会改变您将自己的贡献用于任何其他目的的权利。

企业贡献者许可协议适用于拥有 AOSP 员工的公司(或其他实体)。该版本的协议允许公司授权其指定员工提交的贡献并授予版权和专利许可。

Google 的贡献者许可协议以Apache 软件基金会使用的协议为基础,可以在Apache 网站上找到该协议。

包含许可证标头

Android 开源项目 (AOSP) 对我们的软件使用了一些开源倡议批准的开源许可证。

Apache 许可证版本 2.0 (Apache 2.0) 是 AOSP 的首选许可证,大多数 Android 软件都使用 Apache 2.0 进行许可。虽然该项目努力遵守首选许可证,但也有例外情况,需要根据具体情况进行处理。例如,Linux 内核补丁采用 GPLv2 许可证,但有系统例外,可以在Linux 内核档案中找到。

对于用户空间(非内核)软件,Google 更喜欢 Apache 2.0(以及 BSD 和 MIT 等类似许可证),而不是 GNU 宽通用公共许可证 (LGPL) 等其他许可证。原因如下:

  • Android 是关于自由和选择的。 Android 的目的是促进移动世界的开放性,Google 无法预测或规定我们软件的所有用途。因此,虽然谷歌鼓励每个人制造开放和可修改的设备,但我们认为我们没有权利强迫他们这样做。使用 LGPL 库可能会受到限制。以下是我们的一些具体问题:

    • 简而言之,LGPL 需要将源代码传送到应用程序;书面的来源报价;或者动态链接 LGPL-ed 库并允许用户手动升级或替换库。 Android 软件通常作为静态系统映像提供,因此遵守这些要求会限制设备制造商的设计。例如,用户很难替换只读闪存存储上的库。

    • LGPL 要求允许客户修改和逆向工程来调试这些修改。大多数设备制造商不想受这些条款的约束。

    • 从历史上看,LGPL 库一直是下游设备制造商和应用程序开发人员面临许多合规性问题的根源。对工程师进行有关这些问题的教育既困难又耗时。设备制造商能够轻松遵守许可证对于 Android 的成功至关重要。

这些担忧并不是对 LGPL 或其他许可证的批评。 Google 赞赏所有免费和开源许可证,并尊重他人的许可证偏好。 Google 认为 Apache 2.0 最适合我们的目标。

当提交要包含在 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.