本文档介绍了 Fuchsia 项目中的开源许可和相关政策。
Fuchsia 项目代码
所有 Fuchsia 项目代码均托管在
https://fuchsia.googlesource.com/.Fuchsia 项目文件头将列出 Copyright <year_of_file_creation> The Fuchsia Authors
。
许可
Fuchsia 受多种许可的约束:
- Fuchsia 内核是根据以下 MIT 风格许可发布的:/zircon/kernel/LICENSE。
- 所有 Fuchsia 用户空间组件均根据 BSD 式许可发布: /LICENSE 或 Apache 2.0 许可: https://fuchsia.googlesource.com/infra/+/main/LICENSE.
- 所有采用 BSD 许可的代码都具有额外的 IP 授权:/PATENTS。
任何具有不同版权持有者或按照 根据此政策,不同的许可会被视为外部代码,且必须遵守 本文档中的外部代码政策。
外部代码
托管在 https://fuchsia.googlesource.com/ 上的所有外部代码都必须是根据已获批准的许可列表中的许可发布的开源代码,除非特定例外情况或专有例外情况部分中另有说明。所有外部代码都必须托管在名称以 third_party
开头的代码库中,或者托管在 Fuchsia 现有代码库中名为 third_party
的目录中。如果代码托管在自己的代码库中,则必须映射到
一个路径,其中包含名为 third_party
的目录,作为
Fuchsia 平台源代码树。特定代码部分允许使用的许可集取决于该代码的用途。请参阅下文,查看适用于生产目标平台和开发目标平台的已获批准许可的列表。
Fuchsia build 中使用的所有代码都必须托管在 Google 运行的 Gerrit 服务器上。几乎在所有情况下,代码都必须托管在 https://fuchsia.googlesource.com/.
运行 jiri update
时必须下载所有源代码。任何构建步骤都不得下载其他源代码。软件包管理系统中的代码(例如 Dart 的 Pub 中的软件包或 Rust 的 Cargo 中的 crate)必须通过 vendoring 方法添加到 https://fuchsia.googlesource.com/,并且必须遵循与项目中的任何其他代码相同的许可要求。
许可和跟踪
请参阅什么是许可? 了解开源许可的定义及其重要性。 托管在以下位置的所有项目: https://fuchsia.googlesource.com/ 必须是 并且包含完整的许可文本以及 代码。仅通过引用(例如“BSD3”)声明许可是不够的,必须包含实际文本。在大多数情况下,项目应该 整个代码库,且许可文字应位于 位于 LICENSE、COPYRIGHT 或类似文件中。在极少数情况下,Fuchsia 项目需要在单个代码库中托管多个逻辑项目(例如在 Fuchsia 的 Dart pub 供应商代码库中),每个项目都必须位于自己的目录中,并包含该项目的许可文本,并且代码库中的顶级文件必须说明子目录使用的一组许可。
为方便跟踪,除了许可文本之外,每个包含外部代码的项目都必须包含包含项目相关信息的 README 文件。README 文件必须命名为 README.fuchsia
,并且至少包含
以下信息:
Name: common name for the project
URL: web site of upstream project
LICENSE: short description of license
此外,我们还建议(但并非强制要求)README.fuchsia
文件说明所使用的上游项目版本以及移植到 Fuchsia 时进行了哪些修改(如果有)。许可的简短说明应为与许可相符的 Software Package Data Exchange (SPDX) 许可标识符,但如果需要对许可进行详细说明,则可以添加更多文字。Fuchsia 项目代码(即 Fuchsia 作者拥有版权的代码以及根据 Fuchsia 项目标准许可发布的代码)不需要此文件。
代码类别和允许的许可
正式版目标
本部分适用于在基于 Fuchsia 的正式版设备中运行的所有代码 由最终用户使用在本文档中,“生产目标”是指 最终用户正在使用的基于 Fuchsia 的正式版设备。“正式版目标平台”包括在设备上运行的内核、驱动程序、系统服务、框架、程序等,无论其部署方式如何。此目标允许使用以下许可之一发布的代码,且仅限于该许可。还有其他限制(例如 IP 授权或其他限制) 则许可批准不足以用于相应部分 代码。
已批准的许可
以下是正式版目标设备的已批准许可:
BSD 3 条款许可,特别是 https://opensource.org/license/BSD-3-Clause
BSD 2-clause 许可,具体而言是 https://opensource.org/licenses/BSD-2-Clause 中的文字
BSD AES 变体,具体而言是 https://fedoraproject.org/wiki/Licensing:BSD#AES_Variant 中的文本
MIT 许可,具体而言是 /zircon/kernel/LICENSE 中的文字
MITNFA 许可,尤其是位于 https://spdx.org/licenses/MITNFA.html
X11 许可,具体而言是 /third_party/github.com/intel/libva/va/x11/va_dri2.c 中的文本
Zlib 许可,具体而言是 https://fuchsia.googlesource.com/third_party/zlib/+/main/README#85 中的文字
Libpng 许可,特别是 https://fuchsia.googlesource.com/third_party/libpng/+/main/LICENSE 中的文字
Boost 许可 1.0,特别是 https://fuchsia.googlesource.com/third_party/asio/+/main/asio/LICENSE_1_0.txt
OpenSSL 许可,特别是位于 https://fuchsia.googlesource.com/third_party/boringssl/+/upstream/master/LICENSE
FreeType 项目许可,特别是位于 https://fuchsia.googlesource.com/third_party/freetype2/+/main/docs/FTL.TXT
Apache 2.0 许可,特别是 https://fuchsia.googlesource.com/third_party/flatbuffers/+/main/LICENSE.txt
独立的 JPEG 组许可 (IJG),特别是 https://fuchsia.googlesource.com/third_party/iccjpeg/+/main/LICENSE
ICU 许可,具体而言是 https://fuchsia.googlesource.com/third_party/icu/+/main/LICENSE 中的文字
Curl 许可,尤其是 https://fuchsia.googlesource.com/third_party/curl/+/main/COPYING 中的文本
伊利诺伊大学 / NCSA 开源许可 (NCSA),特别是 发短信至 https://fuchsia.googlesource.com/third_party/clang/+/main/LICENSE.TXT
ISC 许可,特别是位于 https://fuchsia.googlesource.com/third_party/boringssl/+/upstream/master/LICENSE#143
IBM-Pibs 许可,具体而言是 https://github.com/u-boot/u-boot/blob/master/Licenses/ibm-pibs.txt 中的文字
R8a779x_usb3 许可,特别是位于 https://github.com/u-boot/u-boot/blob/master/Licenses/r8a779x_usb3.txt
知识共享署名 3.0 未本地化版本许可:https://creativecommons.org/licenses/by/3.0/legalcode
知识共享署名 4.0 国际版许可:https://creativecommons.org/licenses/by/4.0/legalcode
生产目标中不得包含不受上述许可约束且未明确获得豁免的代码。
许可 受限 或 互指 将不会获准在 Fuchsia 中使用。
特定例外情况
以下代码库已被授予针对生产环境的特定豁免 目标设备:
- https://fuchsia.googlesource.com/third_party/llvm/
- https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/LICENCE.iwlwifi_firmware
这些豁免仅适用于这些特定代码库,不适用于 别的什么,无论看起来多么相似。
专有例外情况
在特殊情况下,如果合作伙伴不愿根据开源许可提供某些技术,Fuchsia 可能只能根据更严格的许可条款向公众提供已编译的二进制文件。
属于此例外情况的任何专有库,例如 兼容的驱动程序,将单独并明确标记为专有材料 附上相关的许可条款。
在 Fuchsia 生态系统中,我们不推行专有许可例外情况, 只有在技术大幅改进 Fuchsia 时才会破例 功能或互操作性实质性,没有充分的开源 并且相应代码或二进制文件可以与 Fuchsia 的 开源代码库。任何第三方都无权享受 Fuchsia 许可政策。
开发目标
本部分适用于开发者为 Fuchsia 包含工具、调试程序、实用程序和示例。所有许可 可以用于正式版目标。在 本文档中的“开发目标”定义为基于 Fuchsia 的非生产 由 Fuchsia 开发者(而非最终用户)使用。
已批准的许可
此外,对于目标开发平台,还允许使用以下许可:
GNU 通用公共许可 v2.0 (GPL 2.0),特别是 https://fuchsia.googlesource.com/third_party/gdb/+/main/COPYING
GNU 库通用公共许可 2.0 (LGPL 2.0),具体而言是 https://spdx.org/licenses/LGPL-2.0.html#licenseText 中的文本
GNU 较宽松通用公共许可 2.1 (LGPL 2.1),具体而言是 https://spdx.org/licenses/LGPL-2.1.html#licenseText 中的文本
Mozilla 公共许可版本 2.0 (MPL 2.0),尤其是 https://spdx.org/licenses/MPL-2.0.html#licenseText
开放字体许可 1.1 (OFL 1.1),尤其是 https://github.com/u-boot/u-boot/blob/master/Licenses/OFL.txt
托管开发工件
要在以下位置托管工件(二进制文件或 tarball) Google storage(用于开发) 您必须做到以下几点:
- 验证所有传递依赖项都在已获批准的许可下。
- 验证托管所有依赖项的确切来源
https://fuchsia.googlesource.com/.
- 如果某些组件托管在其他位置,请联系 开源审核板 (OSRB) 检查托管安排是否符合 Fuchsia 项目的定义。
- 生成包含二进制文件许可文本的文件,并 所有传递依赖项将该文件与工件一起提供(例如, tar)。
修改外部代码
修改外部代码的过程与修改 Fuchsia 项目代码的过程相同。请务必让相应的 README.fuchsia
文件保持最新状态
对来自上游的变更的简要说明。更改外部代码时,请勿修改任何现有版权通知或许可文件。
支持团队联系人
添加新的外部代码
如需了解如何添加新的外部代码,请参阅 开源审核委员会 (OSRB) 流程。
问题
如果您对 Fuchsia 的外部政策或这些政策与 Fuchsia 项目的关系有疑问,请发送电子邮件至 external-code@fuchsia.dev。