| = COPYING.adoc for the Khronos Group OpenXR projects |
| |
| // Copyright (c) 2020-2025 The Khronos Group Inc. |
| // |
| // SPDX-License-Identifier: CC-BY-4.0 |
| |
| This document is shared across a number of OpenXR GitHub projects, as the |
| set of files in those projects is partially overlapping. |
| (There is a single "source of truth" internal Khronos GitLab monorepo these |
| GitHub repositories interact with.) |
| |
| == Licenses |
| |
| The OpenXR GitHub projects use several licenses. |
| In general, we work to maintain compliance with the |
| https://reuse.software/spec/[REUSE 3.0 specification] with clear copyright |
| holders and license identifier listed for each file, preferably in each |
| file. |
| Where this is not possible, or e.g. when we are using files unmodified from |
| other open source projects, license data is listed: |
| |
| * in an adjacent file of the same name, with the additional extension |
| "`.license`" |
| * in the repository-wide "`.reuse/dep5`" copyright description |
| https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/["DEP5" |
| machine-readable copyright data] file. |
| |
| The https://github.com/fsfe/reuse-tool["`reuse`" command line tool] can be |
| used to create a software bill of materials in SPDX format from this data. |
| Note that this tool will typically exclude the generated files, so if the |
| BOM is important to you, you may consider using the |
| https://github.com/KhronosGroup/OpenXR-SDK[OpenXR-SDK] repository that |
| contains the API headers and the loader source with all generated files |
| pre-generated. |
| |
| The data in/adjacent to each file is the authoritative license and copyright |
| data. |
| However, for ease of understanding, the following general practices can be |
| observed. |
| (If in doubt, or if the following summary conflicts with the per-file data, |
| the per-file data remains authoritative.) |
| |
| * The source files (in asciidoctor and other formats) for the OpenXR |
| Specification, reference pages, and supporting documentation are licensed |
| under the Creative Commons Attribution 4.0 International License (SPDX |
| license identifier "`CC-BY-4.0`"). |
| * Header files, scripts, programs, XML files, and other tooling used or |
| generated as part of the build process is licensed under the Apache |
| License, Version 2.0. |
| * For compatibility with external developers working in GPLed projects who |
| have requested it, the main OpenXR headers, XML registry, and loader |
| source are licensed under a dual license with the SPDX license identifier |
| "`Apache-2.0 OR MIT`" . |
| Relevant files include: |
| ** "`specification/registry/xr.xml`" |
| ** "`include/openxr/openxr_platform_defines.h`" |
| ** The generated OpenXR headers "`openxr.h`", "`openxr_platform.h`", and |
| "`openxr_reflection.h`". |
| ** Source files in "`src/loader/`", and a few files in "`src/common/`". |
| ** Generated source files used by the loader (including pre-generated in |
| OpenXR-SDK): "`common_config.h`", "`xr_generated_loader.cpp`", and |
| "`xr_generated_loader.hpp`". |
| * There are a few files adopted from other open source projects. |
| Such files continue under their original licenses, and appropriately |
| annotated in accordance with REUSE. |
| * Some generated, transient files produced during the course of building the |
| specification, headers, or other targets may not have copyrights. |
| These are typically very short asciidoc fragments describing parts of the |
| OpenXR API, and are incorporated by reference into specification or |
| reference page builds. |
| |
| Users outside Khronos who create and post OpenXR Specifications, whether |
| modified or not, should use the CC-BY-4.0 license on the output documents |
| (HTML, PDF, etc.) they generate. |
| |
| |
| == Frequently Asked Questions |
| |
| Q: Why are the HTML and PDF Specifications posted on Khronos' website under |
| a license which is neither CC-BY-4.0 nor Apache 2.0? |
| |
| A: The Specifications posted by Khronos in the OpenXR Registry are licensed |
| under the proprietary Khronos Specification License. |
| Only these Specifications are Ratified by the Khronos Board of Promoters, |
| and therefore they are the only Specifications covered by the Khronos |
| Intellectual Property Rights Policy. |
| |
| |
| Q: Does Khronos allow the creation and distribution of modified versions of |
| the OpenXR Specification, such as translations to other languages? |
| |
| A: Yes. |
| Such modified Specifications, since they are not created by Khronos, should |
| be placed under the CC-BY-4.0 license. |
| If you believe your modifications are of general interest, consider |
| contributing them back by making a pull request (PR) on the OpenXR-Docs |
| project. |
| |
| |
| Q: Can I contribute changes to the OpenXR Specification? |
| |
| A: Yes, by opening an Issue or Pull Request (PR) on the |
| link:https://github.com/KhronosGroup/OpenXR-Docs/[OpenXR-Docs] GitHub |
| project. |
| You must execute a click-through Contributor License Agreement, which brings |
| your changes under the umbrella of the Khronos IP policy. |
| |
| |
| Q: Can you change the license on your files so they're compatible with my |
| license? |
| |
| A: We are using a dual license license on `xr.xml`, the main API headers, |
| and the loader source files, to make them compatible with GPL-2.0- and |
| LGPL-2.0/2.1-licensed projects. |
| This replaces earlier approaches of an MIT-like license on the XML and |
| Apache 2.0 on all headers, and allows use of the SPDX license identifier |
| "`Apache-2.0 OR MIT`" to denote the license. |
| |
| If you *require* this same compatibility for use of other Apache-2.0 |
| licensed files in our repository, please raise an issue identifying the |
| files and we will consider changing those specific files to the dual license |
| as well. |
| |