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