xref: /aosp_15_r20/external/dtc/README.license (revision cd60bc56d4bea3af4ec04523e4d71c2b272c8aff)
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