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