xref: /f-stack/dpdk/license/README (revision d30ea906)
1*d30ea906Sjfb8856606The DPDK uses the Open Source BSD-3-Clause license for the core libraries and
2*d30ea906Sjfb8856606drivers. The kernel components are naturally GPL-2.0 licensed.
3*d30ea906Sjfb8856606
4*d30ea906Sjfb8856606Including big blocks of License headers in all files blows up the
5*d30ea906Sjfb8856606source code with mostly redundant information.  An additional problem
6*d30ea906Sjfb8856606is that even the same licenses are referred to by a number of
7*d30ea906Sjfb8856606slightly varying text blocks (full, abbreviated, different
8*d30ea906Sjfb8856606indentation, line wrapping and/or white space, with obsolete address
9*d30ea906Sjfb8856606information, ...) which makes validation and automatic processing a nightmare.
10*d30ea906Sjfb8856606
11*d30ea906Sjfb8856606To make this easier, DPDK uses a single line reference to Unique License
12*d30ea906Sjfb8856606Identifiers in source files as defined by the Linux Foundation's SPDX project
13*d30ea906Sjfb8856606(https://spdx.org/).
14*d30ea906Sjfb8856606
15*d30ea906Sjfb8856606Adding license information in this fashion, rather than adding full license
16*d30ea906Sjfb8856606text, can be more efficient for developers; decreases errors; and improves
17*d30ea906Sjfb8856606automated detection of licenses. The current set of valid, predefined SPDX
18*d30ea906Sjfb8856606identifiers is set forth on the SPDX License List at https://spdx.org/licenses/.
19*d30ea906Sjfb8856606
20*d30ea906Sjfb8856606DPDK uses first line of the file to be SPDX tag. In case of *#!* scripts, SPDX
21*d30ea906Sjfb8856606tag can be placed in 2nd line of the file.
22*d30ea906Sjfb8856606
23*d30ea906Sjfb8856606For example, to label a file as subject to the BSD-3-Clause license,
24*d30ea906Sjfb8856606the following text would be used:
25*d30ea906Sjfb8856606
26*d30ea906Sjfb8856606SPDX-License-Identifier: BSD-3-Clause
27*d30ea906Sjfb8856606
28*d30ea906Sjfb8856606To label a file as GPL-2.0 (e.g., for code that runs in the kernel), the
29*d30ea906Sjfb8856606following text would be used:
30*d30ea906Sjfb8856606
31*d30ea906Sjfb8856606SPDX-License-Identifier: GPL-2.0
32*d30ea906Sjfb8856606
33*d30ea906Sjfb8856606To label a file as dual-licensed with BSD-3-Clause and GPL-2.0 (e.g., for code
34*d30ea906Sjfb8856606that is shared between the kernel and userspace), the following text would be
35*d30ea906Sjfb8856606used:
36*d30ea906Sjfb8856606
37*d30ea906Sjfb8856606SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0)
38*d30ea906Sjfb8856606
39*d30ea906Sjfb8856606To label a file as dual-licensed with BSD-3-Clause and LGPL-2.1 (e.g., for code
40*d30ea906Sjfb8856606that is shared between the kernel and userspace), the following text would be
41*d30ea906Sjfb8856606used:
42*d30ea906Sjfb8856606
43*d30ea906Sjfb8856606SPDX-License-Identifier: (BSD-3-Clause OR LGPL-2.1)
44*d30ea906Sjfb8856606
45*d30ea906Sjfb8856606Any new file contributions in DPDK shall adhere to the above scheme.
46*d30ea906Sjfb8856606It is also being recommended to replace the existing license text in the code
47*d30ea906Sjfb8856606with SPDX-License-Identifiers.
48*d30ea906Sjfb8856606
49*d30ea906Sjfb8856606Any exception to the DPDK IP policies shall be approved by DPDK Tech Board and
50*d30ea906Sjfb8856606DPDK Governing Board. Steps for any exception approval:
51*d30ea906Sjfb88566061. Mention the appropriate license identifier form SPDX. If the license is not
52*d30ea906Sjfb8856606   listed in SPDX Licenses. It is the submitters responsibiliity to get it
53*d30ea906Sjfb8856606   first listed.
54*d30ea906Sjfb88566062. Get the required approval from the DPDK Technical Board. Technical Board may
55*d30ea906Sjfb8856606   advise the author to check alternate means first. If no other alternative
56*d30ea906Sjfb8856606   are found and the merit of the contributions are important for DPDK's
57*d30ea906Sjfb8856606   mission, it may decide on such exception with two-thirds vote of the members.
58*d30ea906Sjfb88566063. Technical Board then approach Governing Board for such limited approval for
59*d30ea906Sjfb8856606   the given contribution only.
60*d30ea906Sjfb8856606
61*d30ea906Sjfb8856606Any approvals shall be documented in "Licenses/exceptions.txt" with record
62*d30ea906Sjfb8856606dates.
63*d30ea906Sjfb8856606
64*d30ea906Sjfb8856606DPDK project supported licenses are:
65*d30ea906Sjfb8856606
66*d30ea906Sjfb88566061. BSD 3-clause "New" or "Revised" License
67*d30ea906Sjfb8856606	SPDX-License-Identifier: BSD-3-Clause
68*d30ea906Sjfb8856606	URL: http://spdx.org/licenses/BSD-3-Clause#licenseText
69*d30ea906Sjfb8856606	DPDK License text: licenses/bsd-3-clause.txt
70*d30ea906Sjfb88566062. GNU General Public License v2.0 only
71*d30ea906Sjfb8856606	SPDX-License-Identifier: GPL-2.0
72*d30ea906Sjfb8856606	URL: http://spdx.org/licenses/GPL-2.0.html#licenseText
73*d30ea906Sjfb8856606	DPDK License text: licenses/gpl-2.0.txt
74*d30ea906Sjfb88566063. GNU Lesser General Public License v2.1
75*d30ea906Sjfb8856606	SPDX-License-Identifieri: LGPL-2.1
76*d30ea906Sjfb8856606	URL: http://spdx.org/licenses/LGPL-2.1.html#licenseText
77*d30ea906Sjfb8856606	DPDK License text: licenses/lgpl-2.1.txt
78