1*cd60bc56SAndroid Build Coastguard WorkerLicensing and contribution policy of dtc and libfdt 2*cd60bc56SAndroid Build Coastguard Worker=================================================== 3*cd60bc56SAndroid Build Coastguard Worker 4*cd60bc56SAndroid Build Coastguard WorkerThis dtc package contains two pieces of software: dtc itself, and 5*cd60bc56SAndroid Build Coastguard Workerlibfdt which comprises the files in the libfdt/ subdirectory. These 6*cd60bc56SAndroid Build Coastguard Workertwo pieces of software, although closely related, are quite distinct. 7*cd60bc56SAndroid Build Coastguard Workerdtc does not incorporate or rely on libfdt for its operation, nor vice 8*cd60bc56SAndroid Build Coastguard Workerversa. It is important that these two pieces of software have 9*cd60bc56SAndroid Build Coastguard Workerdifferent license conditions. 10*cd60bc56SAndroid Build Coastguard Worker 11*cd60bc56SAndroid Build Coastguard WorkerAs SPDX license tags in each source file attest, dtc is licensed 12*cd60bc56SAndroid Build Coastguard Workerunder the GNU GPL. The full text of the GPL can be found in the file 13*cd60bc56SAndroid Build Coastguard Workerentitled 'GPL' which should be included in this package. dtc code, 14*cd60bc56SAndroid Build Coastguard Workertherefore, may not be incorporated into works which do not have a GPL 15*cd60bc56SAndroid Build Coastguard Workercompatible license. 16*cd60bc56SAndroid Build Coastguard Worker 17*cd60bc56SAndroid Build Coastguard Workerlibfdt, however, is GPL/BSD dual-licensed. That is, it may be used 18*cd60bc56SAndroid Build Coastguard Workereither under the terms of the GPL, or under the terms of the 2-clause 19*cd60bc56SAndroid Build Coastguard WorkerBSD license (aka the ISC license). The full terms of that license can 20*cd60bc56SAndroid Build Coastguard Workerbe found are in the file entitled 'BSD-2-Clause'. This is, in 21*cd60bc56SAndroid Build Coastguard Workerpractice, equivalent to being BSD licensed, since the terms of the BSD 22*cd60bc56SAndroid Build Coastguard Workerlicense are strictly more permissive than the GPL. 23*cd60bc56SAndroid Build Coastguard Worker 24*cd60bc56SAndroid Build Coastguard WorkerI made the decision to license libfdt in this way because I want to 25*cd60bc56SAndroid Build Coastguard Workerencourage widespread and correct usage of flattened device trees, 26*cd60bc56SAndroid Build Coastguard Workerincluding by proprietary or otherwise GPL-incompatible firmware or 27*cd60bc56SAndroid Build Coastguard Workertools. Allowing libfdt to be used under the terms of the BSD license 28*cd60bc56SAndroid Build Coastguard Workermakes that it easier for vendors or authors of such software to do so. 29*cd60bc56SAndroid Build Coastguard Worker 30*cd60bc56SAndroid Build Coastguard WorkerThis does mean that libfdt code could be "stolen" - say, included in a 31*cd60bc56SAndroid Build Coastguard Workerproprietary fimware and extended without contributing those extensions 32*cd60bc56SAndroid Build Coastguard Workerback to the libfdt mainline. While I hope that doesn't happen, I 33*cd60bc56SAndroid Build Coastguard Workerbelieve the goal of allowing libfdt to be widely used is more 34*cd60bc56SAndroid Build Coastguard Workerimportant than avoiding that. libfdt is quite small, and hardly 35*cd60bc56SAndroid Build Coastguard Workerrocket science; so the incentive for such impolite behaviour is small, 36*cd60bc56SAndroid Build Coastguard Workerand the inconvenience caused thereby is not dire. 37*cd60bc56SAndroid Build Coastguard Worker 38*cd60bc56SAndroid Build Coastguard WorkerLicenses such as the LGPL which would allow code to be used in non-GPL 39*cd60bc56SAndroid Build Coastguard Workersoftware, but also require contributions to be returned were 40*cd60bc56SAndroid Build Coastguard Workerconsidered. However, libfdt is designed to be used in firmwares and 41*cd60bc56SAndroid Build Coastguard Workerother environments with unusual technical constraints. It's difficult 42*cd60bc56SAndroid Build Coastguard Workerto anticipate all possible changes which might be needed to meld 43*cd60bc56SAndroid Build Coastguard Workerlibfdt into such environments and so difficult to suitably word a 44*cd60bc56SAndroid Build Coastguard Workerlicense that puts the boundary between what is and isn't permitted in 45*cd60bc56SAndroid Build Coastguard Workerthe intended place. Again, I judged encouraging widespread use of 46*cd60bc56SAndroid Build Coastguard Workerlibfdt by keeping the license terms simple and familiar to be the more 47*cd60bc56SAndroid Build Coastguard Workerimportant goal. 48*cd60bc56SAndroid Build Coastguard Worker 49*cd60bc56SAndroid Build Coastguard Worker**IMPORTANT** It's intended that all of libfdt as released remain 50*cd60bc56SAndroid Build Coastguard Workerpermissively licensed this way. Therefore only contributions which 51*cd60bc56SAndroid Build Coastguard Workerare released under these terms can be merged into the libfdt mainline. 52*cd60bc56SAndroid Build Coastguard Worker 53*cd60bc56SAndroid Build Coastguard Worker 54*cd60bc56SAndroid Build Coastguard WorkerDavid Gibson <[email protected]> 55*cd60bc56SAndroid Build Coastguard Worker(principal original author of dtc and libfdt) 56*cd60bc56SAndroid Build Coastguard Worker2 November 2007 57