Licensing and contribution policy of dtc and libfdt
===================================================

This dtc package contains two pieces of software: dtc itself, and
libfdt which comprises the files in the libfdt/ subdirectory.  These
two pieces of software, although closely related, are quite distinct.
dtc does not incorporate or rely on libfdt for its operation, nor vice
versa.  It is important that these two pieces of software have
different license conditions.

As SPDX license tags in each source file attest, dtc is licensed
under the GNU GPL.  The full text of the GPL can be found in the file
entitled 'GPL' which should be included in this package.  dtc code,
therefore, may not be incorporated into works which do not have a GPL
compatible license.

libfdt, however, is GPL/BSD dual-licensed.  That is, it may be used
either under the terms of the GPL, or under the terms of the 2-clause
BSD license (aka the ISC license).  The full terms of that license can
be found are in the file entitled 'BSD-2-Clause'. This is, in
practice, equivalent to being BSD licensed, since the terms of the BSD
license are strictly more permissive than the GPL.

I made the decision to license libfdt in this way because I want to
encourage widespread and correct usage of flattened device trees,
including by proprietary or otherwise GPL-incompatible firmware or
tools.  Allowing libfdt to be used under the terms of the BSD license
makes that it easier for vendors or authors of such software to do so.

This does mean that libfdt code could be "stolen" - say, included in a
proprietary fimware and extended without contributing those extensions
back to the libfdt mainline.  While I hope that doesn't happen, I
believe the goal of allowing libfdt to be widely used is more
important than avoiding that.  libfdt is quite small, and hardly
rocket science; so the incentive for such impolite behaviour is small,
and the inconvenience caused thereby is not dire.

Licenses such as the LGPL which would allow code to be used in non-GPL
software, but also require contributions to be returned were
considered.  However, libfdt is designed to be used in firmwares and
other environments with unusual technical constraints.  It's difficult
to anticipate all possible changes which might be needed to meld
libfdt into such environments and so difficult to suitably word a
license that puts the boundary between what is and isn't permitted in
the intended place.  Again, I judged encouraging widespread use of
libfdt by keeping the license terms simple and familiar to be the more
important goal.

**IMPORTANT** It's intended that all of libfdt as released remain
permissively licensed this way.  Therefore only contributions which
are released under these terms can be merged into the libfdt mainline.


David Gibson <david@gibson.dropbear.id.au>
(principal original author of dtc and libfdt)
2 November 2007
