| Software Licensing |
| ================== |
| |
| Software Licenses used by ONF |
| ----------------------------- |
| |
| Most of ONF's software is licensed under the `Apache License, Version 2.0 |
| <https://www.apache.org/licenses/LICENSE-2.0>`_ (commonly referred to as |
| Apache-2 or APL2). |
| |
| REUSE License Tool |
| """""""""""""""""" |
| |
| ONF uses the `REUSE <https://reuse.software>`_ toolkit to verify that licenses |
| are correctly applied to files within a code repository, as an automated step |
| in the CI process. |
| |
| REUSE replies on the `Software Package Data Exchange (SPDX) license headers |
| <https://spdx.dev>`_ headers to be applied to every source code file in the |
| system. These are put in a comment at the start of a file, similar to:: |
| |
| # SPDX-FileCopyrightText: 2022 Open Networking Foundation <info@opennetworking.org> |
| # SPDX-License-Identifier: Apache-2.0 |
| |
| License Compatibility |
| """"""""""""""""""""" |
| |
| Software licensing is a complex task, and attention needs to be paid to how |
| code is incorporated in ONF projects, or how binaries generated from that code |
| are used. |
| |
| If you would like to use external code in an ONF project that uses a license |
| that is not mentioned as being acceptable in the lists below, please make an |
| inquiry with the project development team before including that code. |
| |
| Code Level Linking |
| '''''''''''''''''' |
| |
| Apache 2.0 licensed software can incorporate or link directly against code |
| written using the following licenses. A few examples: |
| |
| * BSD with 2, 3 clauses |
| * MIT |
| * Most "Public Domain" licenses |
| |
| See also the `ASF 3rd Party License Policy |
| <https://www.apache.org/legal/resolved.html>`_ for additional details. |
| |
| Runtime Usage |
| ''''''''''''' |
| |
| Code with these kinds of licenses can be used at runtime, but can't be directly |
| linked to: |
| |
| * GPL and most other "Strong Copyleft" licenses |
| |
| An example of this would be running an OS like Linux that is GPLv2 licensed as |
| a part of an ONF project, it's used but not modified or linked against. |
| |
| Licenses to avoid |
| ''''''''''''''''' |
| |
| The following licenses have various issues related to additional requirements |
| placed on it's use that are problematic, or favor one party over others. |
| |
| * AGPL: This makes requirements on releasing modifications to services |
| delivered over a network. |
| |
| * BSL: this is a timed license, which is proprietary for a period of time, |
| then automatically relicensed as GPL2 |
| |
| * SSPL (MongoDB, Elasticsearch, etc.): makes requirements upon business process |
| and deployment code. |
| |
| Dual Licensing |
| """""""""""""" |
| |
| It may be advantageous to dual-license code - code that serves as an example or |
| templates that a user would copy and modify. This also could include any code |
| that is within documentation. |
| |
| In cases such as this, it may be advantageous to place examples in the public |
| domain, or with a less strict license such as MIT or BSD 2-Clause. |
| |
| Contributor License Agreement |
| ----------------------------- |
| |
| Contributing software to and ONF project requires agreeing to the `Contributor |
| Licensing Agreement <https://wiki.opennetworking.org/x/BgCUI>`_, which gives |
| ONF a copyright and patent grant to for all code contributions, and the right |
| to sublicense the code in the future. |