blob: 0e3c01ea0847cd57cf597918395c1d049d7731cd [file] [log] [blame]
Zack Williams36451912022-03-04 20:31:37 -07001Software Licensing
2==================
3
4Software Licenses used by ONF
5-----------------------------
6
7Most 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
9Apache-2 or APL2).
10
11REUSE License Tool
12""""""""""""""""""
13
14ONF uses the `REUSE <https://reuse.software>`_ toolkit to verify that licenses
15are correctly applied to files within a code repository, as an automated step
16in the CI process.
17
18REUSE 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
20system. 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
25License Compatibility
26"""""""""""""""""""""
27
28Software licensing is a complex task, and attention needs to be paid to how
29code is incorporated in ONF projects, or how binaries generated from that code
30are used.
31
32If you would like to use external code in an ONF project that uses a license
33that is not mentioned as being acceptable in the lists below, please make an
34inquiry with the project development team before including that code.
35
36Code Level Linking
37''''''''''''''''''
38
39Apache 2.0 licensed software can incorporate or link directly against code
40written using the following licenses. A few examples:
41
42* BSD with 2, 3 clauses
43* MIT
44* Most "Public Domain" licenses
45
46See also the `ASF 3rd Party License Policy
47<https://www.apache.org/legal/resolved.html>`_ for additional details.
48
49Runtime Usage
50'''''''''''''
51
52Code with these kinds of licenses can be used at runtime, but can't be directly
53linked to:
54
55* GPL and most other "Strong Copyleft" licenses
56
57An example of this would be running an OS like Linux that is GPLv2 licensed as
58a part of an ONF project, it's used but not modified or linked against.
59
60Licenses to avoid
61'''''''''''''''''
62
63The following licenses have various issues related to additional requirements
64placed 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
75Dual Licensing
76""""""""""""""
77
78It may be advantageous to dual-license code - code that serves as an example or
79templates that a user would copy and modify. This also could include any code
80that is within documentation.
81
82In cases such as this, it may be advantageous to place examples in the public
83domain, or with a less strict license such as MIT or BSD 2-Clause.
84
85Contributor License Agreement
86-----------------------------
87
88Contributing software to and ONF project requires agreeing to the `Contributor
89Licensing Agreement <https://wiki.opennetworking.org/x/BgCUI>`_, which gives
90ONF a copyright and patent grant to for all code contributions, and the right
91to sublicense the code in the future.