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