You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jira@kafka.apache.org by "Dejan Stojadinović (Jira)" <ji...@apache.org> on 2026/10/15 15:04:00 UTC
[jira] [Created] (KAFKA-21287) Fix 'licenses' folder contents and 'LICENSE-binary' file references
Dejan Stojadinović created KAFKA-21287:
------------------------------------------
Summary: Fix 'licenses' folder contents and 'LICENSE-binary' file references
Key: KAFKA-21287
URL: https://issues.apache.org/jira/browse/KAFKA-21287
Project: Kafka
Issue Type: Bug
Components: build
Reporter: Dejan Stojadinović
h1. Kafka licenses/ folder audit
The {{licenses/}} folder shipped in the Kafka binary distribution has drifted from the dependencies it covers: one referenced file is missing, one has the wrong license text, four ship for nothing, and several copyright lines are stale. CI only compares versions in {{{}LICENSE-binary{}}}, never the contents of {{{}licenses/{}}}.
h2. Findings
16 files in {{licenses/}} were compared with the {{LICENSE-binary}} references and with the license each dependency ships at its current version ({{{}gradle/dependencies.gradle{}}}).
||#||File / entry||Problem||Fix||
|1|{{jakarta.activation-2.0.1}} → {{licenses/jakarta-BSD-3-clause}}|Referenced file does not exist. The jar's own {{META-INF/LICENSE.md}} is EDL 1.0 (BSD-3, Copyright 2018 Oracle).|Point to {{licenses/eclipse-distribution-license-1.0}}|
|2|{{protobuf-java-BSD-3-clause}}|Wrong text: "Copyright 2023, the original author or authors" (jline's wording). Upstream v25.5 is "Copyright 2008 Google Inc."|Replace with upstream v25.5 {{LICENSE}}|
|3|{{mock-oauth2-server-MIT}}|Test-only dependency ({{{}testImplementation{}}}), not bundled|Delete|
|3|{{jsr305-BSD-3-clause}}|Dependency dropped from {{LICENSE-binary}} in 2025, file left behind|Delete|
|3|{{paranamer-BSD-3-clause}}|Same as jsr305|Delete|
|3|{{eclipse-distribution-license-1.0}}|Not referenced, although it is the right file for #1 and #4|Reference it|
|4|{{{}jakarta.activation-api-2.1.0{}}}, {{jakarta.xml.bind-api-3.0.1}}|Listed as CDDL 1.1 + GPLv2; POM and jar say EDL 1.0|Move to an EDL 1.0 section|
|4|{{jakarta.servlet-api-6.0.0}}|Listed as CDDL 1.1 + GPLv2; POM says EPL 2.0 / GPL2 w/ CPE|Move to the EPL 2.0 section|
|4|{{CDDL+GPL-1.1}}|Unreferenced once the three jars above move|Delete|
|5|{{classgraph-MIT}} (4.8.196)|2019 vs upstream 2026|Upstream text|
|5|{{slf4j-MIT}} (1.7.36)|2004-2017 QOS.ch vs 2004-2022 QOS.ch Sarl (Switzerland)|Upstream text|
|5|{{jline-BSD-3-clause}} (3.30.17)|2002-2018 vs 2002-2023|Upstream text|
|5|{{jopt-simple-MIT}} (5.0.4)|2004-2016 vs 2004-2015 at the tag|Upstream text|
|5|{{argparse-MIT}} (0.7.0)|2011-2017 vs 2011, 2014, 2015 at the tag|Upstream text|
|5|{{zstd-jni-BSD-2-clause}} (1.5.7-17)|Extra title line; "BSD License" vs "BSD-2-Clause License" + URL|Upstream text|
|–|{{{}pcollections-MIT{}}}, {{{}hdrHistogram-BSD-2-clause{}}}, {{{}re2j-GO{}}}, {{eclipse-public-license-2.0}}|Match upstream|None|
h2. Proposed change
One {{MINOR}} PR, branch {{{}MINOR-fix-licenses-folder{}}}, touches only {{LICENSE-binary}} and {{{}licenses/{}}}.
* {{{}LICENSE-binary{}}}: replace the "CDDL 1.1 + GPLv2" section with an "Eclipse Distribution License - v 1.0" section ({{{}jakarta.activation-2.0.1{}}}, {{{}jakarta.activation-api-2.1.0{}}}, {{{}jakarta.xml.bind-api-3.0.1{}}}); add {{jakarta.servlet-api-6.0.0}} to the EPL 2.0 section; drop the broken {{jakarta-BSD-3-clause}} line.
* Replaced with upstream text at the current version: {{{}protobuf-java-BSD-3-clause{}}}, {{{}classgraph-MIT{}}}, {{{}slf4j-MIT{}}}, {{{}jline-BSD-3-clause{}}}, {{{}jopt-simple-MIT{}}}, {{{}argparse-MIT{}}}, {{{}zstd-jni-BSD-2-clause{}}}.
* Deleted: {{{}mock-oauth2-server-MIT{}}}, {{{}jsr305-BSD-3-clause{}}}, {{{}paranamer-BSD-3-clause{}}}, {{{}CDDL+GPL-1.1{}}}.
h2. Verification
A fresh {{./gradlew clean releaseTarGz}} on the fix branch confirms the change.
* The third-party jars in {{libs/}} match the entries in {{LICENSE-binary}} exactly. Nothing is missing on either side.
* Every {{licenses/...}} path in {{LICENSE-binary}} exists, and every file in {{licenses/}} is referenced.
* {{jakarta.servlet-api}} is bundled at 6.0.0, as {{LICENSE-binary}} says, even though {{dependencies.gradle}} declares 6.1.0. The 6.1.0 declaration does not reach the runtime classpath.
* The tarball's {{licenses/}} now holds 12 files, down from 16.
h2. How it drifted
Each problem traces back to one commit. The CI step {{committer-tools/verify_license.py}} (KAFKA-17607) only matches jar names in {{libs/}} against {{{}LICENSE-binary{}}}, so none of these failed a build.
||Date||Commit||What happened||
|2026-05-07|KAFKA-20555 (#22232)|Removed the EDL 1.0 section and moved {{jakarta.activation-api}} and {{jakarta.xml.bind-api}} under CDDL|
|2025-06-12|KAFKA-19153 (#19938)|Added {{mock-oauth2-server-MIT}} for a test-only dependency|
|2025-02-18/19|#18943, #18950|Removed paranamer and jsr305 from {{{}LICENSE-binary{}}}, left their files|
|2025-01-01|KAFKA-18375 (#18359)|Added {{jakarta.activation-2.0.1}} pointing to the non-existent {{{}licenses/jakarta-BSD-3-clause{}}}, and {{jakarta.servlet-api-6.0.0}} under CDDL next to {{javax.servlet-api-3.1.0}}|
|2023-11-29|#14833|Added {{protobuf-java-BSD-3-clause}} with generic wording instead of Google's text|
|2021-04-06|KAFKA-12602 (#10474)|Added argparse and jopt-simple texts copied from newer upstream releases than the bundled jars. Later version bumps of slf4j, jline and classgraph never refreshed their texts|
--
This message was sent by Atlassian Jira
(v8.20.10#820010)