Re: License Combination: LGPL and BSD-4-Clause

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Jan 22, 2025 at 11:34:50AM GMT, Mario wrote:
 
> The file text-utils/hexdump-parse.c is licensed under the BSD-4-Clause license.
> This file includes the header file include/xalloc.h, which is licensed
> under the LGPL.

I will attempt to change the license of xalloc.{c,h} and colors.{c,h}
to public domain, but this will depend on the other authors. It does
not make sense to use any other license for these commonly used files.

The issue lies with list.h (GPL), which we have already used in old
BSD-based tools such as hexdump, kill, and logger.

> According to the GNU licence compatibility list
> (https://www.gnu.org/licenses/license-list.html.en#OriginalBSD),
> this combination of licenses is not allowed.
> 
> I would like to know:
> 
> How can the resulting binary from this combination be used in a
> license-compliant manner?

Well, ChatGPT has some interesting notes about it:

You're absolutely right—the BSD-4-Clause (with the advertising clause)
is GPL-incompatible, which complicates things when mixing it with LGPL
code. However, since the LGPL header file includes only trivial inline
functions (such as memory allocation and linked list utilities), the
impact on the binary's final license is likely minimal. Here’s why:

    Trivial Inline Functions & LGPL Exception
        The LGPL allows using inline functions and macros in headers
        without imposing LGPL on the entire binary, provided they are
        generic and not substantial parts of the program’s logic.
        Many projects, including the GNU C Library (glibc), use
        LGPL-licensed headers, and applications linking to them are
        not automatically subject to LGPL.

    BSD-4-Clause Licensing Remains for the Main Code
        Since your core program logic remains under BSD-4-Clause and
        the LGPL-covered header only provides minor utilities, your
        program is still primarily BSD-4-Clause.  The advertising
        clause does create GPL/LGPL incompatibility for direct
        combination, but since the inline functions are trivial, it's
        unlikely they trigger a full LGPL conversion.

How to Handle the License Clarification:

    If You Want to Be Safe:
        Replace the LGPL header with a BSD-compatible alternative
        (e.g., a public domain or MIT-licensed equivalent).  If
        possible, move any non-trivial inline functions into a
        separate .c file and dynamically link them under LGPL.

    If Keeping It As-Is:
        Clarify in the documentation that the main program is
        BSD-4-Clause but includes minor LGPL-covered inline functions.
        Users should be informed that these inline functions come from
        LGPL code, but their triviality does not relicense the binary.


> Are there any possible solutions or workarounds to resolve the license
> incompatibility?

I will make an effort to address this issue in the next major release.
We have been gradually resolving the licensing confusion over the past
few years.

For now, from my point of view, hexdump is still BSD-4-Clause licensed
as LGPL is used for trivial wrappers like err-on-malloc, etc.

    Karel


-- 
 Karel Zak  <kzak@xxxxxxxxxx>
 http://karelzak.blogspot.com





[Index of Archives]     [Netdev]     [Ethernet Bridging]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]

  Powered by Linux