blob: 0e3c01ea0847cd57cf597918395c1d049d7731cd [file] [log] [blame]
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.