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