blob: 702dfcd1aa5290545a22163bad068eeb950044f2 [file] [log] [blame] [view]
# Fuchsia open source licensing policies
This document describes open source licenses and related policies in the Fuchsia project.
## Fuchsia project code
All Fuchsia project code is hosted on
[https://fuchsia.googlesource.com/](https://fuchsia.googlesource.com/). Fuchsia
project file headers will list `Copyright <year_of_file_creation> The Fuchsia Authors`.
## Licenses
Fuchsia is subject to multiple licenses:
* The Fuchsia kernel is released under the following MIT-style license:
[/zircon/kernel/LICENSE](/zircon/kernel/LICENSE).
* All Fuchsia user space components are released under a BSD-style license:
[/LICENSE](/LICENSE) or an Apache 2.0 license:
[https://fuchsia.googlesource.com/infra/+/main/LICENSE](https://fuchsia.googlesource.com/infra/+/main/LICENSE).
* All code that is BSD-licensed has an additional IP grant:
[/PATENTS](/PATENTS).
Any code that has a different copyright holder or that is released under a
different license is considered external code per this policy and must adhere to
the external code policies in this document.
## External code
All external code hosted on
[https://fuchsia.googlesource.com/](https://fuchsia.googlesource.com/) must be
open source code released under a license from the
[approved licenses list](#approved-licenses), unless otherwise listed in the
[specific exceptions](#specific-exceptions) or
[proprietary exceptions](#proprietary-exceptions) sections. All external code
must be hosted in a repository whose name is prefixed with `third_party` or
within a directory named `third_party` within one of Fuchsias existing
repositories. If the code is hosted in its own repository, it must be mapped to
a path including a directory named `third_party` when checked out as part of the
Fuchsia Platform source tree. The set of licenses permitted for a particular
portion of code depends on the usage of that code - see below for a list of
approved licenses for production targets and development targets.
All code used in a Fuchsia build must be hosted on a Gerrit server run by
Google. In almost all cases, the code must be hosted on
[https://fuchsia.googlesource.com/](https://fuchsia.googlesource.com/).
All source code must be downloaded when running `jiri update`. No build steps
may download additional source code. Code from package management systems, such
as packages from Darts Pub or crates from Rusts Cargo, must be vendored into
[https://fuchsia.googlesource.com/](https://fuchsia.googlesource.com/) and
comply with the same license requirements as any other code in the project.
## Licenses and tracking
Refer to
[What is a License?](https://opensource.google/docs/using/license/){:.external}
for an explanation of what an open source license is and why it is important.
All projects hosted on
[https://fuchsia.googlesource.com/](https://fuchsia.googlesource.com/) must be
released under an approved license and contain the full license text alongside
the code. Simply stating the license by reference - i.e. BSD3 - is not
sufficient, the actual text must be included. In most cases, the project should
be an entire repository and the license text should be at the top level of the
repository in a file named LICENSE, COPYRIGHT, or similar. In rare cases where
the Fuchsia project needs to host multiple logical projects in a single
repository, for example in Fuchsias Dart pub vendor repository, each project
must be in its own directory with the license text for that project and a
top-level file in the repository must explain the set of licenses used by the
subdirectories.
To facilitate tracking, in addition to the license text, each project containing
external code must contain a README file containing information about the
project. The README must be named `README.fuchsia` and contain at least the
following information:
```
Name: common name for the project
URL: web site of upstream project
LICENSE: short description of license
```
Its also recommended, but not required, that the `README.fuchsia` files
describe what version of the upstream project is being used and what kinds of
modifications, if any, were made to port to Fuchsia. The short description of
the license should be a
[Software Package Data Exchange (SPDX) license identifier](https://spdx.org/licenses/){:.external}
that matches the license but there can be more text in cases where more
elaboration on the license is required. Fuchsia project code, that is, code that
The Fuchsia Authors hold copyright for and code that is released under the
Fuchsia projects standard license - does not require this file.
## Categories of code and allowed licenses
### Production target {:#production-target}
This section applies to all code that runs in a production Fuchsia-based device
in use by an end user. In this document, production target is defined as a
production Fuchsia-based device in use by an end user. Production target
includes the kernel, drivers, system services, frameworks, programs, etc running
on the device regardless of how they are deployed. Code is permitted in this
target if it is released under one of the following licenses and that license
only. If there are additional restrictions, such as an IP grant or other
additional clause, then the license approval does not suffice for that portion
of code.
#### Approved licenses {:#approved-licenses}
The following are the approved licenses for production target devices:
* BSD 3-clause license, specifically the text at [/LICENSE](/LICENSE)
* BSD 2-clause license, specifically the text at
[https://opensource.org/licenses/BSD-2-Clause](https://opensource.org/licenses/BSD-2-Clause)
* BSD AES variant, specifically the text at [https://fedoraproject.org/wiki/Licensing:BSD#AES_Variant](https://web.archive.org/web/20221220074725/https://fedoraproject.org/wiki/Licensing:BSD#AES_Variant)
* MIT license, specifically the text at
[/zircon/kernel/LICENSE](/zircon/kernel/LICENSE)
* MITNFA license, specifically the text at
[https://spdx.org/licenses/MITNFA.html](https://spdx.org/licenses/MITNFA.html)
* X11 license, specifically the text at
[/third_party/github.com/intel/libva/va/x11/va_dri2.c](https://fuchsia.googlesource.com/third_party/github.com/intel/libva/+/6e86b4fb4dafa123b1e31821f61da88f10cfbe91/va/x11/va_dri2.c)
* Zlib license, specifically the text at
[https://fuchsia.googlesource.com/third\_party/zlib/+/main/README#85](https://fuchsia.googlesource.com/third_party/zlib/+/main/README#85)
* Libpng license, specifically the text at
[https://fuchsia.googlesource.com/third\_party/libpng/+/main/LICENSE](https://fuchsia.googlesource.com/third_party/libpng/+/main/LICENSE)
* Boost license 1.0, specifically the text at
[https://fuchsia.googlesource.com/third\_party/asio/+/main/asio/LICENSE\_1\_0.txt](https://fuchsia.googlesource.com/third_party/asio/+/main/asio/LICENSE_1_0.txt)
* OpenSSL license, specifically the text at
[https://fuchsia.googlesource.com/third\_party/boringssl/+/upstream/master/LICENSE](https://fuchsia.googlesource.com/third_party/boringssl/+/upstream/master/LICENSE)
* FreeType project license, specifically the text at
[https://fuchsia.googlesource.com/third\_party/freetype2/+/main/docs/FTL.TXT](https://fuchsia.googlesource.com/third_party/freetype2/+/main/docs/FTL.TXT)
* Apache 2.0 license, specifically the text at
[https://fuchsia.googlesource.com/third\_party/flatbuffers/+/main/LICENSE.txt](https://fuchsia.googlesource.com/third_party/flatbuffers/+/main/LICENSE.txt)
* Independent JPEG Group License (IJG), specifically the text at
[https://fuchsia.googlesource.com/third\_party/iccjpeg/+/main/LICENSE](https://fuchsia.googlesource.com/third_party/iccjpeg/+/main/LICENSE)
* ICU license, specifically the text at
[https://fuchsia.googlesource.com/third\_party/icu/+/main/LICENSE](https://fuchsia.googlesource.com/third_party/icu/+/main/LICENSE)
* Curl license, specifically the text at
[https://fuchsia.googlesource.com/third\_party/curl/+/main/COPYING](https://fuchsia.googlesource.com/third_party/curl/+/main/COPYING)
* University of Illinois / NCSA Open Source License (NCSA), specifically the
text at
[https://fuchsia.googlesource.com/third\_party/clang/+/main/LICENSE.TXT](https://fuchsia.googlesource.com/third_party/clang/+/main/LICENSE.TXT)
* ISC license, specifically the text at
[https://fuchsia.googlesource.com/third\_party/boringssl/+/upstream/master/LICENSE#143](https://fuchsia.googlesource.com/third_party/boringssl/+/upstream/master/LICENSE#143)
* IBM-Pibs license, specifically the text at
[https://github.com/u-boot/u-boot/blob/master/Licenses/ibm-pibs.txt](https://github.com/u-boot/u-boot/blob/master/Licenses/ibm-pibs.txt)
* R8a779x\_usb3 license, specifically the text at
[https://github.com/u-boot/u-boot/blob/master/Licenses/r8a779x\_usb3.txt](https://github.com/u-boot/u-boot/blob/master/Licenses/r8a779x_usb3.txt)
* Creative Commons Attribution 3.0 Unported license at
[https://creativecommons.org/licenses/by/3.0/legalcode](https://creativecommons.org/licenses/by/3.0/legalcode)
* Creative Commons Attribution 4.0 International license at
[https://creativecommons.org/licenses/by/4.0/legalcode](https://creativecommons.org/licenses/by/4.0/legalcode)
Code not under one of these licenses and not explicitly granted an exemption is
not permitted in the production target.
Licenses in the
[restricted](https://opensource.google/docs/thirdparty/licenses/#restricted){:.external}
or
[reciprocal](https://opensource.google/docs/thirdparty/licenses/#reciprocal){:.external}
categories will not be approved for use in Fuchsia.
#### Specific exceptions {:#specific-exceptions}
The following repositories have been granted specific exemptions for production
target devices:
* [https://fuchsia.googlesource.com/third\_party/llvm/](https://fuchsia.googlesource.com/third_party/llvm/)
* [https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/LICENCE.iwlwifi\_firmware](https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/LICENCE.iwlwifi_firmware)
These exemptions apply only to these specific repositories, and do not apply to
anything else no matter how similar they may seem.
#### Proprietary exceptions {:#proprietary-exceptions}
Under exceptional circumstances, when partners will not provide certain
technology under open source licenses, Fuchsia may only be able to provide
compiled binaries to the public under more restrictive license terms.
Any proprietary libraries that fall under this exception, such as several
compatible drivers, will be separate and clearly marked as proprietary materials
with the relevant license terms.
Proprietary license exceptions are disfavored in the Fuchsia ecosystem and
exceptions will only be made when technology substantially improves Fuchsia
functionality or interoperability substantially, no adequate open source
alternatives exist, and the code or binaries can be separated from Fuchsias
open source repositories. No third parties are entitled to an exception from the
Fuchsia licensing policy.
### Development target {:#development-target}
This section applies to all code that is used by developers building things for
Fuchsia including tools, debuggers, utilities, and examples. All licenses
permitted for production targets are permitted for the development target. In
this document, development target is defined as a non-production Fuchsia-based
device in use by a Fuchsia developer and not an end user.
#### Approved licenses
Additionally, the following licenses are permitted for the development target:
* GNU General Public License v2.0 (GPL 2.0), specifically the text at
[https://fuchsia.googlesource.com/third\_party/gdb/+/main/COPYING](https://fuchsia.googlesource.com/third_party/gdb/+/main/COPYING)
* GNU Library General Public License 2.0 (LGPL 2.0), specifically the text at
[https://spdx.org/licenses/LGPL-2.0.html#licenseText](https://spdx.org/licenses/LGPL-2.0.html#licenseText)
* GNU Lesser General Public License 2.1 (LGPL 2.1), specifically the text at
[https://spdx.org/licenses/LGPL-2.1.html#licenseText](https://spdx.org/licenses/LGPL-2.1.html#licenseText)
* Mozilla Public License Version 2.0 (MPL 2.0), specifically the text at
[https://spdx.org/licenses/MPL-2.0.html#licenseText](https://spdx.org/licenses/MPL-2.0.html#licenseText)
* Open Font License 1.1 (OFL 1.1), specifically the text at
[https://github.com/u-boot/u-boot/blob/master/Licenses/OFL.txt](https://github.com/u-boot/u-boot/blob/master/Licenses/OFL.txt)
#### Hosting development artifacts
To host an artifact (a binary or tarball) on
[Google storage](https://cloud.google.com/storage/){:.external} for development
purposes you must do the following:
* Verify all transitive dependencies are under approved licenses.
* Verify the exact source of all dependencies are hosted on
[https://fuchsia.googlesource.com/](https://fuchsia.googlesource.com/).
* If some components are hosted elsewhere, contact the
[Open Source Review Board (OSRB)](/docs/contribute/governance/policy/osrb-process.md)
to check that the hosting arrangement satisfies the requirements of the
Fuchsia project.
* Produce a file containing the license text of the license of the binary and
all transitive dependencies. Serve this file with the artifact (i.e., in a
tar).
## Modifying external code
The process for modifying external code is the same as for modifying Fuchsia
project code. Be sure to keep the appropriate `README.fuchsia` files up-to-date
with a high level description of changes from upstream. Do not modify any
existing copyright notice or license file when changing external code.
## Support contacts
### Add new external code
For information on adding new external code, see
[Open Source Review Board (OSRB) Process](/docs/contribute/governance/policy/osrb-process.md).
### Questions
If you have a question about Fuchsias external policies or how these policies
relate to the Fuchsia project, email
[external-code@fuchsia.dev](https://groups.google.com/a/fuchsia.dev/g/external-code).