Zack Williams | 3645191 | 2022-03-04 20:31:37 -0700 | [diff] [blame^] | 1 | Software Licensing |
| 2 | ================== |
| 3 | |
| 4 | Software Licenses used by ONF |
| 5 | ----------------------------- |
| 6 | |
| 7 | Most of ONF's software is licensed under the `Apache License, Version 2.0 |
| 8 | <https://www.apache.org/licenses/LICENSE-2.0>`_ (commonly referred to as |
| 9 | Apache-2 or APL2). |
| 10 | |
| 11 | REUSE License Tool |
| 12 | """""""""""""""""" |
| 13 | |
| 14 | ONF uses the `REUSE <https://reuse.software>`_ toolkit to verify that licenses |
| 15 | are correctly applied to files within a code repository, as an automated step |
| 16 | in the CI process. |
| 17 | |
| 18 | REUSE replies on the `Software Package Data Exchange (SPDX) license headers |
| 19 | <https://spdx.dev>`_ headers to be applied to every source code file in the |
| 20 | system. These are put in a comment at the start of a file, similar to:: |
| 21 | |
| 22 | # SPDX-FileCopyrightText: 2022 Open Networking Foundation <info@opennetworking.org> |
| 23 | # SPDX-License-Identifier: Apache-2.0 |
| 24 | |
| 25 | License Compatibility |
| 26 | """"""""""""""""""""" |
| 27 | |
| 28 | Software licensing is a complex task, and attention needs to be paid to how |
| 29 | code is incorporated in ONF projects, or how binaries generated from that code |
| 30 | are used. |
| 31 | |
| 32 | If you would like to use external code in an ONF project that uses a license |
| 33 | that is not mentioned as being acceptable in the lists below, please make an |
| 34 | inquiry with the project development team before including that code. |
| 35 | |
| 36 | Code Level Linking |
| 37 | '''''''''''''''''' |
| 38 | |
| 39 | Apache 2.0 licensed software can incorporate or link directly against code |
| 40 | written using the following licenses. A few examples: |
| 41 | |
| 42 | * BSD with 2, 3 clauses |
| 43 | * MIT |
| 44 | * Most "Public Domain" licenses |
| 45 | |
| 46 | See also the `ASF 3rd Party License Policy |
| 47 | <https://www.apache.org/legal/resolved.html>`_ for additional details. |
| 48 | |
| 49 | Runtime Usage |
| 50 | ''''''''''''' |
| 51 | |
| 52 | Code with these kinds of licenses can be used at runtime, but can't be directly |
| 53 | linked to: |
| 54 | |
| 55 | * GPL and most other "Strong Copyleft" licenses |
| 56 | |
| 57 | An example of this would be running an OS like Linux that is GPLv2 licensed as |
| 58 | a part of an ONF project, it's used but not modified or linked against. |
| 59 | |
| 60 | Licenses to avoid |
| 61 | ''''''''''''''''' |
| 62 | |
| 63 | The following licenses have various issues related to additional requirements |
| 64 | placed on it's use that are problematic, or favor one party over others. |
| 65 | |
| 66 | * AGPL: This makes requirements on releasing modifications to services |
| 67 | delivered over a network. |
| 68 | |
| 69 | * BSL: this is a timed license, which is proprietary for a period of time, |
| 70 | then automatically relicensed as GPL2 |
| 71 | |
| 72 | * SSPL (MongoDB, Elasticsearch, etc.): makes requirements upon business process |
| 73 | and deployment code. |
| 74 | |
| 75 | Dual Licensing |
| 76 | """""""""""""" |
| 77 | |
| 78 | It may be advantageous to dual-license code - code that serves as an example or |
| 79 | templates that a user would copy and modify. This also could include any code |
| 80 | that is within documentation. |
| 81 | |
| 82 | In cases such as this, it may be advantageous to place examples in the public |
| 83 | domain, or with a less strict license such as MIT or BSD 2-Clause. |
| 84 | |
| 85 | Contributor License Agreement |
| 86 | ----------------------------- |
| 87 | |
| 88 | Contributing software to and ONF project requires agreeing to the `Contributor |
| 89 | Licensing Agreement <https://wiki.opennetworking.org/x/BgCUI>`_, which gives |
| 90 | ONF a copyright and patent grant to for all code contributions, and the right |
| 91 | to sublicense the code in the future. |