贡献者许可协议和标头

本页介绍了两项重要的贡献者任务:签署贡献者许可协议,以及确保在代码中正确使用许可标头。

签署贡献者许可协议

所有为 Android 开源项目 (AOSP) 贡献创意、代码或文档的个人贡献者(仅以个人名义作贡献的贡献者)都需要填写、签署并提交《个人贡献者许可协议》。您可以通过以下途径在线签署此协议:代码审核工具。 此协议规定了为 AOSP 贡献知识产权内容的相关条款。该许可既是为了保护贡献者,也是为了保护该项目;它不会影响贡献者将自己的贡献内容用于任何其他用途的权利。

《企业贡献者许可协议》适用于有员工从事 AOSP 方面工作的企业(或其他实体)。该版本的协议中规定,企业可以授权其指定的员工提交贡献,并授予版权和专利许可。

Google 的贡献者许可协议基于 Apache 软件基金会所使用的协议,其协议可在 Apache 网站上找到。

包含许可标头

在 Android 开源项目 (AOSP) 中,我们的软件使用开放源代码促进会批准的一些开源许可。

Apache 许可 2.0 版 (Apache 2.0) 是 AOSP 的首选许可,大多数 Android 软件都使用 Apache 2.0 许可授权用户使用。尽管该项目尽可能遵循此首选许可,但也存在一些例外需要视具体情况处理。例如,与系统使用的许可不同,Linux 内核补丁使用的是 GPLv2 许可,您可以在 Linux 内核归档文件上找到相关信息。

对于用户空间(非内核)软件,相比其他许可(例如 GNU 宽通用公共许可证 [LGPL]),Google 更倾向于 Apache 2.0(以及 BSD 和 MIT 等类似许可)。原因如下:

  • Android 的宗旨是自由和选择。Android 旨在促进移动世界的开放性,Google 无法预测或规定我们软件的所有用途。因此,虽然 Google 鼓励每个人打造开放且可修改的设备,但并不认为我们有权强制他们这样做。使用 LGPL 库可能带来过多限制。以下是我们关心的一些具体问题:

    • 简单地说,LGPL 要求将源代码植入到应用中;书面提供源代码;或者动态关联获得 LGPL 许可的库,并允许用户手动升级或替换该库。由于 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.