[log4j] Links to issues in VOTE emails and release notes (Was: [VOTE] Release Apache Log4j `2.25.1` (RC1))

2025-07-08 Thread Volkan Yazıcı
I see that the most recent VOTE email misses ticket IDs, making it
cumbersome to access associated PRs. I can see the Discussion linked, but
that is not what I am asking for.

Can we share the Issue/PR IDs in the VOTE emails, please?

On Sat, Jul 5, 2025 at 11:08 PM Piotr P. Karwasz 
wrote:

> This is a vote to release the Apache Log4j `2.25.1`.
>
> Website: https://logging.staged.apache.org/log4j/2.25.1/index.html
> GitHub: https://github.com/apache/logging-log4j2
> Commit: bda63362cf405449ff4edc2e4d92353be65c4d4e
> Distribution: https://dist.apache.org/repos/dist/dev/logging/log4j/2.25.1
> Nexus:
>
> https://repository.apache.org:443/content/repositories/orgapachelogging-1320
> Signing key: 0x077e8893a6dcc33dd4a4d5b256e73ba9a0b592d0
> Review kit:
>
> https://logging.apache.org/logging-parent/release-review-instructions.html[*]
>
> Please download, test, and cast your votes on this mailing list.
> You can optionally also cast your vote in the ATR system[**].
>
> [ ] +1, release the artifacts
> [ ] -1, don't release, because...
>
> This vote is open for 72 hours and will pass unless getting a
> net negative vote count. All votes are welcome and we encourage
> everyone to test the release, but only the Logging Services PMC
> votes are officially counted. At least 3 +1 votes and more
> positive than negative votes are required.
>
> [*] As with the 2.25.0 release, the aggregate SBOM for the log4j-bom
> artifact in version 2.25.1 is not fully reproducible. Two variants may
> be generated that differ only in the ordering of the `jspecify` dependency.
>
> This issue is known and tracked under GitHub issue #3804:
>
> https://github.com/apache/logging-log4j2/issues/3804
>
> To avoid false negatives during verification, reviewers are asked to
> ignore this specific difference by appending the following parameter to
> the build command in the release review instructions:
>
> -Dbuildinfo.ignore="*/log4j-bom-2.25.1-cyclonedx.xml"
>
> [**] Please note that the Apache Trusted Release (ATR) tool is currently
> in alpha, and votes cast through ATR are not officially counted in the
> release process. However, Apache committers are encouraged to try it out
> and provide feedback using the following URL:
>
> https://release-test.apache.org/vote/logging-log4j/2.25.1
>
> == Release Notes
>
> This patch release addresses a dozen bugs in version `2.25.0`, in
> particular:
>
> * Resolves a concurrency issue in the new unified datetime formatter.
> * Fixes build failures affecting Gradle users.
> * Restores backward compatibility with Spring Boot’s common logging
> configuration.
> * Improves handling of edge cases in GraalVM support.
>
> The complete changelog of the `2.25.1` release can be found on the
> staged website at:
>
>
> https://logging.staged.apache.org/log4j/2.25.1/release-notes.html#release-notes-2-25-1
>


[DISCUSSION][VOTE] Release Apache Log4j `2.25.1` (RC1)

2025-07-08 Thread Piotr P. Karwasz
Hi Matt,

On 7.07.2025 22:34, Matt Sicker wrote:
> Something is buggy for me in the Maven wrapper script which causes this error 
> to print out:
> 
> mvnw: line 114: mvnw/.mvn/wrapper/maven-wrapper.properties: Not a directory
> cannot read distributionUrl property in 
> mvnw/.mvn/wrapper/maven-wrapper.properties

This is a known bug in Maven Wrapper—see Volkan's e-mail.

> When I tried running the build with a local copy of Maven, I get a different 
> error:
> 
> [ERROR] size mismatch log4j-api-2.25.1-sources.jar: investigate with 
> diffoscope 
> log4j-api/target/reference/org.apache.logging.log4j/log4j-api-2.25.1-sources.jar
>  log4j-api/target/log4j-api-2.25.1-sources.jar
> [ERROR] size mismatch log4j-api-2.25.1.module: investigate with diffoscope 
> log4j-api/target/reference/org.apache.logging.log4j/log4j-api-2.25.1.module 
> log4j-api/target/publications/maven/module.json
> [ERROR] Reproducible Build output summary: 3 files ok, 2 different
> [ERROR] see diff log4j-api/target/reference/log4j-api-2.25.1.buildinfo 
> log4j-api/target/log4j-api-2.25.1.buildinfo
> 
> The diff:

As I’ve mentioned before—e.g., in a similar report from Gary[1]—running
the final `diff` command is rarely useful. It only confirms that files
differ (as already stated) and in this case, mainly reveals that your
build was done on macOS.

Instead, could you please run the `diffoscope` commands listed earlier
in the output? These are much more helpful for diagnosing actual
differences:


  diffoscope
log4j-api/target/reference/org.apache.logging.log4j/log4j-api-2.25.1-sources.jar
log4j-api/target/log4j-api-2.25.1-sources.jar
  diffoscope
log4j-api/target/reference/org.apache.logging.log4j/log4j-api-2.25.1.module
log4j-api/target/publications/maven/module.json

Piotr

PS: I’ve submitted a bug report / feature request[2] to improve the
clarity of this error message. If you have a moment, could you take a
look and let me know if the suggestions make sense?

[1] https://lists.apache.org/thread/q8vyzndb4g6sfzk0xw8ofgnfv32o6ox6
[2] https://github.com/apache/maven-artifact-plugin/issues/175






Re: [VOTE] Release Apache Log4j `2.25.1` (RC1)

2025-07-08 Thread Volkan Yazıcı
+1

✅ Signatures
✅ Checksums
✅ `./mvnw verify`

*Build platform:*
- Xubuntu 24.04.2
- OpenJDK 17.0.15+6-Ubuntu-0ubuntu124.04
- x86_64

*Notes:*

I had the same issues reported by Matt.

`mvnw` needed an `chmod u+x mvnw` amendment.
This is a known issue, I reported it to Maven[1][2],
Piotr provided a PR[3], yet...

I could not resolve the `artifact:compare` failure on
`log4j-parent`. This is an important problem, but not
a release blocker, AFAICT.

[1] https://issues.apache.org/jira/browse/MWRAPPER-161
[2] https://github.com/apache/maven-wrapper/issues/305
[3] https://github.com/apache/maven-wrapper/pull/329


On Mon, Jul 7, 2025 at 10:34 PM Matt Sicker  wrote:

> Something is buggy for me in the Maven wrapper script which causes this
> error to print out:
>
> mvnw: line 114: mvnw/.mvn/wrapper/maven-wrapper.properties: Not a directory
> cannot read distributionUrl property in
> mvnw/.mvn/wrapper/maven-wrapper.properties
>
> When I tried running the build with a local copy of Maven, I get a
> different error:
>
> [ERROR] size mismatch log4j-api-2.25.1-sources.jar: investigate with
> diffoscope
> log4j-api/target/reference/org.apache.logging.log4j/log4j-api-2.25.1-sources.jar
> log4j-api/target/log4j-api-2.25.1-sources.jar
> [ERROR] size mismatch log4j-api-2.25.1.module: investigate with diffoscope
> log4j-api/target/reference/org.apache.logging.log4j/log4j-api-2.25.1.module
> log4j-api/target/publications/maven/module.json
> [ERROR] Reproducible Build output summary: 3 files ok, 2 different
> [ERROR] see diff log4j-api/target/reference/log4j-api-2.25.1.buildinfo
> log4j-api/target/log4j-api-2.25.1.buildinfo
>
> The diff:
>
> 0a1,15
> > # https://reproducible-builds.org/docs/jvm/
> > buildinfo.version=1.0-SNAPSHOT
> >
> > name=Apache Log4j API
> > group-id=org.apache.logging.log4j
> > artifact-id=log4j-api
> > version=2.25.1
> >
> > # source information
> > source.scm.uri=scm:git:https://github.com/apache/logging-log4j2.git
> > source.scm.tag=rel/2.25.1
> >
> > # build instructions
> > build-tool=mvn
> >
> 2,3c17,19
> < java.version=17 (from MANIFEST.MF Build-Jdk-Spec)
> < os.name=Unix (from pom.properties newline)
> ---
> > java.version=17.0.15
> > java.vendor=Apple Inc.
> > os.name=Mac OS X
> 4a21,25
> > # Maven rebuild instructions and effective environment
> > mvn.version=3.9.10
> >
> > # output
> >
> 22,23c43,44
> < outputs.3.length=293959
> <
> outputs.3.checksums.sha512=a85f1d8b55567e579d23a5c73f3d7345dce5b835cb792f542f64d28250d307531f0e91817e61bd9ca6a2069d6992641e65ed4c3a3b8d699b52ebd6bf4c08e18c
> ---
> > outputs.3.length=293922
> >
> outputs.3.checksums.sha512=104f3d1d5c4ba247b919f622653eb9f8f44d3780b742104d4b68cc09af5b30655e202480f5a0a957efeb85260e10b440c56c2fac8c114927bbb194df135c9c24
> 27,28c48,49
> < outputs.4.length=2906
> <
> outputs.4.checksums.sha512=6811bd5c5b51012c2734331338089aade55708afa619761cbe129a1fc68d6e1be3c8f32d601689d0811784496ad2523979106f92560086b0f107dbb691e87511
> ---
> > outputs.4.length=2907
> >
> outputs.4.checksums.sha512=bdfb25da0e910bd45e1f30007e9ab19aa3a802e5471d6266599f2b231f8a8a39e0f3790e212b4dac5c96e3642ae04b962a414c95fb6f7f760807358973ba9a43
>
>
> > On Jul 5, 2025, at 16:08, Piotr P. Karwasz 
> wrote:
> >
> > te
>
>


Release notes, changelog and commits

2025-07-08 Thread Piotr P. Karwasz
Hi Volkan,

On 8.07.2025 10:44, Volkan Yazıcı wrote:
> I see that the most recent VOTE email misses ticket IDs, making it
> cumbersome to access associated PRs. I can see the Discussion linked, but
> that is not what I am asking for.
> 
> Can we share the Issue/PR IDs in the VOTE emails, please?

I appreciate you bringing this up. Since you find it helpful, and I have
no strong objections, I will include the changelog in future VOTE emails.

That said, I’d like to use this opportunity to open a broader discussion
on how we handle and duplicate release-related content across various
channels. Specifically, I’d like to clarify our approach regarding the
following:

1. **Release Notes**

These are the curated summaries we write in `.release-notes.adoc.ftl`
files. In my view, release notes are essential and should appear in all
of the following:

* Our website.
* The VOTE email (so PMC members can easily see what changed).
* The `annou...@apache.org` email (while not universally practiced, many
projects include release notes in the announcement [3]).
* GitHub Releases, since Dependabot pulls release notes from there.
  While some projects (e.g., JUnit) only link to their website in their
  GitHub Releases, I believe inlining our release notes is worthwhile.

Note that—except for our website, which uses the original AsciiDoc
format—all other channels require manual conversion to plain text or
Markdown, particularly for hyperlinks.

2. **Changelog**

By *changelog*, I mean a complete list of changes relevant to
users—excluding things like test or Javadoc updates, which don’t affect
user-facing behavior.

I suggest we **do not** replicate the changelog in too many places. Instead:

* Keep it on the website.
* Include it in the VOTE email (useful for developers, even if a bit noisy).
* Link to it in the announcement email, rather than embedding it.

For GitHub/Dependabot purposes, we have two options:

1. Add a link to the website in our GitHub Releases.
2. Add a `CHANGELOG.md` file in the repo with the latest entries, and
link to the website for older ones.

GitHub looks for keywords like `changelog`, `news`, `changes`,
`history`, etc., to identify changelog files.

3. **Commits**

GitHub/Dependabot uses the three-dot comparison between release tags, e.g.:

https://github.com/apache/logging-log4j2/compare/rel%2F2.24.3...rel%2F2.25.0

Due to the way I’ve been creating patch releases—by branching off the
previous release tag and cherry-picking fixes from `2.x`—the merge base
between patch and minor releases is often far back, usually before the
previous minor.

As a result, the commit list in these comparisons includes too many
unrelated changes. This might be worth revisiting. Should we consider a
different strategy for patch releases to improve clarity in these diffs?

**Context and Motivation**

I’ve been working on enhancing `dependabot/fetch-metadata` to use it in
our Dependabot workflow, which led me to explore how release information
is generated by the bot. To help users decide whether a dependency
update is relevant (e.g., for a Log4j patch), we should aim to expose
structured and clear metadata.

For a quick preview on what data Dependabot gathers, see
ppkarwasz/logging-log4j2#566[2]. The sources of the gathered data are:

1. For the "Release notes" section: GitHub Releases.
2. For the "Changelog" section: files in the project repository.
3. For the "Commits" section: the three-dot GitHub comparison.

Looking forward to your thoughts.

Best wishes,
Piotr


[1]
https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-comparing-branches-in-pull-requests#about-three-dot-comparison-on-github
[2] https://github.com/ppkarwasz/logging-log4j2/pull/566
[3] https://lists.apache.org/list?annou...@apache.org


[DISCUSSION][VOTE] Release Apache Log4j `2.25.1` (RC1)

2025-07-08 Thread Piotr P. Karwasz
Hi Volkan,

On 8.07.2025 09:29, Volkan Yazıcı wrote:
> I could not resolve the `artifact:compare` failure on
> `log4j-parent`. This is an important problem, but not
> a release blocker, AFAICT.

Just to clarify—are you referring to the reproducibility issue in
`log4j-bom`, or is this a separate problem you encountered with
`org.apache.logging.log4j:log4j`?

Once I gain a better understanding of what’s happening with these SBOMs,
I plan to address the issue in the CycloneDX Maven Plugin.

On a related note, I’ve been re-evaluating the usefulness of the
“aggregate” SBOMs (`log4j-bom` and `log4j`):

* These SBOMs don’t accurately describe the dependencies of `log4j-bom`
or `log4j`. For POM files, the true dependencies are their parent POMs.

* The way the `makeAggregateBom` goal is currently bound in the Maven
lifecycle means that the generated SBOMs lack critical details—such as
the checksums of Log4j’s binary artifacts—since the execution happens
before those artifacts are built.

* Even if we consider the aggregate SBOM to describe the build-time
dependencies of the source archive, it still misses key components,
including Maven plugins used in the build process and test/provided
dependencies.

Given these limitations, I’m considering replacing the
`makeAggregateBom` execution with `makeBom`. This would generate SBOMs
only for binary JARs, capturing the actual compile- and runtime-relevant
dependencies for each artifact.

What do you think?

Piotr



Re: [DISCUSSION][VOTE] Release Apache Log4j `2.25.1` (RC1)

2025-07-08 Thread Matt Sicker
The diffoscope output for the module file is simple:

diffoscope 
log4j-api/target/reference/org.apache.logging.log4j/log4j-api-2.25.1.module 
log4j-api/target/publications/maven/module.json
--- log4j-api/target/reference/org.apache.logging.log4j/log4j-api-2.25.1.module
+++ log4j-api/target/publications/maven/module.json
├── Pretty-printed
│ @@ -5,15 +5,15 @@
│  },
│  "group": "org.apache.logging.log4j",
│  "module": "log4j-api",
│  "version": "2.25.1"
│  },
│  "createdBy": {
│  "maven": {
│ -"version": "3.9.8"
│ +"version": "3.9.10"
│  }
│  },
│  "formatVersion": "1.1",
│  "variants": [
│  {
│  "attributes": {
│  "org.gradle.category": "library”,

The diffoscope output for the other file has substantial changes (probably 
related to version differences).

> On Jul 8, 2025, at 03:36, Piotr P. Karwasz  wrote:
> 
> Hi Matt,
> 
> On 7.07.2025 22:34, Matt Sicker wrote:
>> Something is buggy for me in the Maven wrapper script which causes this 
>> error to print out:
>> 
>> mvnw: line 114: mvnw/.mvn/wrapper/maven-wrapper.properties: Not a directory
>> cannot read distributionUrl property in 
>> mvnw/.mvn/wrapper/maven-wrapper.properties
> 
> This is a known bug in Maven Wrapper—see Volkan's e-mail.
> 
>> When I tried running the build with a local copy of Maven, I get a different 
>> error:
>> 
>> [ERROR] size mismatch log4j-api-2.25.1-sources.jar: investigate with 
>> diffoscope 
>> log4j-api/target/reference/org.apache.logging.log4j/log4j-api-2.25.1-sources.jar
>>  log4j-api/target/log4j-api-2.25.1-sources.jar
>> [ERROR] size mismatch log4j-api-2.25.1.module: investigate with diffoscope 
>> log4j-api/target/reference/org.apache.logging.log4j/log4j-api-2.25.1.module 
>> log4j-api/target/publications/maven/module.json
>> [ERROR] Reproducible Build output summary: 3 files ok, 2 different
>> [ERROR] see diff log4j-api/target/reference/log4j-api-2.25.1.buildinfo 
>> log4j-api/target/log4j-api-2.25.1.buildinfo
>> 
>> The diff:
> 
> As I’ve mentioned before—e.g., in a similar report from Gary[1]—running
> the final `diff` command is rarely useful. It only confirms that files
> differ (as already stated) and in this case, mainly reveals that your
> build was done on macOS.
> 
> Instead, could you please run the `diffoscope` commands listed earlier
> in the output? These are much more helpful for diagnosing actual
> differences:
> 
> 
>  diffoscope
> log4j-api/target/reference/org.apache.logging.log4j/log4j-api-2.25.1-sources.jar
> log4j-api/target/log4j-api-2.25.1-sources.jar
>  diffoscope
> log4j-api/target/reference/org.apache.logging.log4j/log4j-api-2.25.1.module
> log4j-api/target/publications/maven/module.json
> 
> Piotr
> 
> PS: I’ve submitted a bug report / feature request[2] to improve the
> clarity of this error message. If you have a moment, could you take a
> look and let me know if the suggestions make sense?
> 
> [1] https://lists.apache.org/thread/q8vyzndb4g6sfzk0xw8ofgnfv32o6ox6
> [2] https://github.com/apache/maven-artifact-plugin/issues/175
> 
> 
> 
> 



Re: [DISCUSSION][VOTE] Release Apache Log4j `2.25.1` (RC1)

2025-07-08 Thread Piotr P. Karwasz
Hi Matt,

On 8.07.2025 18:34, Matt Sicker wrote:
> The diffoscope output for the module file is simple:
>
> [...]
> │  "createdBy": {
> │  "maven": {
> │ -"version": "3.9.8"
> │ +"version": "3.9.10"
> │  }

I didn't know about this aspect of the Gradle Module Metadata (GMM)
Maven Plugin, but the error makes sense now: the difference is due to
the Maven version used.

To address this, I’ve opened a feature request in the GMM Maven Plugin
to stop generating the optional `createdBy` field altogether:

https://github.com/gradlex-org/gradle-module-metadata-maven-plugin/issues/43

This should improve reproducibility and make it easier to verify future
Log4j releases.

> The diffoscope output for the other file has substantial changes
> (probably related to version differences).

The differences in the `-sources.jar` are a bit more concerning. While
it’s more of a documentation artifact than the actual source code of
Log4j, unexpected changes there still raise questions.

Unlike the `.module` file issue—which I can reproduce by switching to
Maven 3.9.10—I haven't been able to reproduce the `-sources.jar`
differences on Linux. Could you upload your `diffoscope` output to a
Gist or share a summary of the key differences you’re seeing?

Piotr




Re: [DISCUSSION][VOTE] Release Apache Log4j `2.25.1` (RC1)

2025-07-08 Thread Matt Sicker
https://gist.github.com/jvz/54c8222bd8ef3dabd690994ab35d85d2
gist:54c8222bd8ef3dabd690994ab35d85d2
gist.github.com

Logs say the diff is mainly due to compression levels.


> On Jul 8, 2025, at 13:38, Piotr P. Karwasz  wrote:
> 
> Hi Matt,
> 
> On 8.07.2025 18:34, Matt Sicker wrote:
>> The diffoscope output for the module file is simple:
>> 
>> [...]
>> │  "createdBy": {
>> │  "maven": {
>> │ -"version": "3.9.8"
>> │ +"version": "3.9.10"
>> │  }
> 
> I didn't know about this aspect of the Gradle Module Metadata (GMM)
> Maven Plugin, but the error makes sense now: the difference is due to
> the Maven version used.
> 
> To address this, I’ve opened a feature request in the GMM Maven Plugin
> to stop generating the optional `createdBy` field altogether:
> 
> https://github.com/gradlex-org/gradle-module-metadata-maven-plugin/issues/43
> 
> This should improve reproducibility and make it easier to verify future
> Log4j releases.
> 
>> The diffoscope output for the other file has substantial changes
>> (probably related to version differences).
> 
> The differences in the `-sources.jar` are a bit more concerning. While
> it’s more of a documentation artifact than the actual source code of
> Log4j, unexpected changes there still raise questions.
> 
> Unlike the `.module` file issue—which I can reproduce by switching to
> Maven 3.9.10—I haven't been able to reproduce the `-sources.jar`
> differences on Linux. Could you upload your `diffoscope` output to a
> Gist or share a summary of the key differences you’re seeing?
> 
> Piotr
> 
>