[log4j] `2.22.0` release

2023-11-13 Thread Volkan Yazıcı
I would like to do the Log4j `2.22.0` release in a couple of days;
there are some bug fixes and SBOM is ready to be shipped. Let me know
if you have objections.


Re: [log4j] `2.22.0` release

2023-11-13 Thread Gary Gregory
Go for it and thank you!

Gary


On Mon, Nov 13, 2023, 9:24 AM Volkan Yazıcı  wrote:

> I would like to do the Log4j `2.22.0` release in a couple of days;
> there are some bug fixes and SBOM is ready to be shipped. Let me know
> if you have objections.
>


Re: [log4j] `2.22.0` release

2023-11-13 Thread Ralph Goers
That is OK with me. T

Ralph

> On Nov 13, 2023, at 7:22 AM, Volkan Yazıcı  wrote:
> 
> I would like to do the Log4j `2.22.0` release in a couple of days;
> there are some bug fixes and SBOM is ready to be shipped. Let me know
> if you have objections.



Upcoming changes to main for Log4j 3.x

2023-11-13 Thread Matt Sicker
After some discussions yesterday about what’s up for 3.0 (notes are somewhere), 
I wanted to share the list of action items I'm planning to implement in main:

* Removal of legacy OSGi support. We will rely on ServiceLoader and things like 
SPI Fly or other common OSGi mechanisms for supporting ServiceLoader while 
deferring lower level OSGi integration to libraries like Pax-Logging.
* Removal of support for SecurityManager. Since Java 21 doesn’t allow for 
specifying a SecurityManager, and considering our anemic support for running 
with one, we thought it would be simpler to deprecate support for this and log 
a warning at startup if a custom SecurityManager is installed.
* Further refactoring in log4j-api/core to better support more context-scoped 
properties (we still have various things relying on static fields for this)

We also talked about upgrading the JavaEE API integrations to all use 
JakartaEE, switching the baseline Java version for 3.0 to be 17 (to match 
Spring Boot 3 et al.), and some other things I can’t recall at the moment. 
These encompassed most of what we wanted to definitely have before 3.0 GA, 
though we also plan to make some regular beta releases. There was also a desire 
to split out all the JakartaEE stuff into its own git repository (SMTP, JMS, 
JDBC, JNDI, JPA, and anything else using JavaEE/JakartaEE libs).

I know that Volkan plans on working on the Recycler API which touches things 
largely in the Layout implementations along with reusable Message and LogEvent 
objects, though this is largely an implementation detail until we expose the 
Recycler API for more general reuse. What else have I missed in this email?

—
Matt Sicker



Re: [log4j] `2.22.0` release

2023-11-13 Thread Matt Sicker
Go for it! I love how streamlined our release process is now. :)
—
Matt Sicker

> On Nov 13, 2023, at 08:22, Volkan Yazıcı  wrote:
> 
> I would like to do the Log4j `2.22.0` release in a couple of days;
> there are some bug fixes and SBOM is ready to be shipped. Let me know
> if you have objections.



Re: Upcoming changes to main for Log4j 3.x

2023-11-13 Thread Piotr P. Karwasz
Hi Matt,

On Mon, 13 Nov 2023 at 19:18, Matt Sicker  wrote:
> * Removal of legacy OSGi support. We will rely on ServiceLoader and things 
> like SPI Fly or other common OSGi mechanisms for supporting ServiceLoader 
> while deferring lower level OSGi integration to libraries like Pax-Logging.

We must just check if SPI Fly supports weaving code like this:

final MethodHandle loadHandle = lookup.findStatic(ServiceLoader.class, "load",
MethodType.methodType(ServiceLoader.class, Class.class,
ClassLoader.class));

Otherwise we need to use a simple `ServiceLoader.load(..., ...)`.

Maybe, instead of passing `MethodHandles.Lookup` to
`ServiceLoaderUtil`, we could pass the result of
`ServiceLoader.load(Class)` and get rid of all this JPMS crap?

Piotr


OSGi package versioning

2023-11-13 Thread Piotr P. Karwasz
Hi all,

As you probably noticed, all our packages (at least the exported ones)
are annotated with the OSGi annotation `@Version`.
This might result in failures from the `bnd-baseline-maven-plugin` if
you make changes in the public API without incrementing the version
annotation.

Since BND only indicates the minimal version increment, we can adopt
many different conventions on package versioning.
For example OSGi itself increments the packages by the minimal amount
(so OSGi 8.0 contains version 1.10 of OSGi Framework API).

Personally I would find such a convention confusing since OSGi is not
our main market.
If we have a package versioned 2.3.4 and BND asks as to upgrade the
version I would propose:

 * if BND classifies the change as `MICRO` to use 2.3.5,
 * if BND classifies the change as `MINOR` to use the next Log4j minor
release number (e.g. 2.22.0); such a change can not be included in a
patch release,
 * if BND classifies the change as `MAJOR`, either we publish the
change only in the `main` branch or we fix it so that it is not a
breaking change.

Remark that some changes that can not possibly break any existing
code, might be classified by BND as `MAJOR`: e.g. removing `protected`
methods from `final` classes is such a limitation. In such cases we
can override BND's decision using the `diffpackages` configuration of
the plugin:

https://github.com/bndtools/bnd/tree/master/maven-plugins/bnd-baseline-maven-plugin#diffpackages

Piotr


Re: OSGi package versioning

2023-11-13 Thread Ralph Goers
How does this relate, if at all, to the COMPATIBLE_API_VERSIONS constant 
defined in ProviderUtil.java? We use that to ensure the API only binds with a 
compatible implementation of the API.

Ralph

> On Nov 13, 2023, at 1:29 PM, Piotr P. Karwasz  wrote:
> 
> Hi all,
> 
> As you probably noticed, all our packages (at least the exported ones)
> are annotated with the OSGi annotation `@Version`.
> This might result in failures from the `bnd-baseline-maven-plugin` if
> you make changes in the public API without incrementing the version
> annotation.
> 
> Since BND only indicates the minimal version increment, we can adopt
> many different conventions on package versioning.
> For example OSGi itself increments the packages by the minimal amount
> (so OSGi 8.0 contains version 1.10 of OSGi Framework API).
> 
> Personally I would find such a convention confusing since OSGi is not
> our main market.
> If we have a package versioned 2.3.4 and BND asks as to upgrade the
> version I would propose:
> 
> * if BND classifies the change as `MICRO` to use 2.3.5,
> * if BND classifies the change as `MINOR` to use the next Log4j minor
> release number (e.g. 2.22.0); such a change can not be included in a
> patch release,
> * if BND classifies the change as `MAJOR`, either we publish the
> change only in the `main` branch or we fix it so that it is not a
> breaking change.
> 
> Remark that some changes that can not possibly break any existing
> code, might be classified by BND as `MAJOR`: e.g. removing `protected`
> methods from `final` classes is such a limitation. In such cases we
> can override BND's decision using the `diffpackages` configuration of
> the plugin:
> 
> https://github.com/bndtools/bnd/tree/master/maven-plugins/bnd-baseline-maven-plugin#diffpackages
> 
> Piotr



[VOTE][LAZY] Release Apache Logging Parent 10.4.0

2023-11-13 Thread Volkan Yazıcı
This is a lazy-vote to release the Apache Logging Parent 10.4.0.

Website: https://logging.staged.apache.org/logging-parent
GitHub: https://github.com/apache/logging-parent
Commit: e45457c683302242be5e8e7c3c33edf8f0e0ec0e
Distribution: https://dist.apache.org/repos/dist/dev/logging/logging-parent
Nexus: https://repository.apache.org/content/repositories/orgapachelogging-1232
Signing key: 0x077e8893a6dcc33dd4a4d5b256e73ba9a0b592d0

Please download, test, and cast your votes on this mailing list.

[ ] +1, release the artifacts
[ ] -1, don't release, because...

This vote is open for 24 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.

=== On 24 hour timeline

This release contains a fix and the Palantir formatter integration,
which is discussed already in the mailing list. I would like to get
this release ASAP so I can proceed with Log4j, Log4j Tools, and Log4j
JMX GUI releases. Given the schedule and no significant changes, I
opted for a shorter deadline.

=== Release Notes

This minor release contains several small improvements.

 Added

* Add deterministic Palantir Java formatter

 Changed

* Increase directory scanning depth from 8 to 32 in the distribution
BeanShell script


Re: OSGi package versioning

2023-11-13 Thread Piotr P. Karwasz
Hi Ralph,

On Mon, 13 Nov 2023 at 22:18, Ralph Goers  wrote:
>
> How does this relate, if at all, to the COMPATIBLE_API_VERSIONS constant 
> defined in ProviderUtil.java? We use that to ensure the API only binds with a 
> compatible implementation of the API.

It is certainly related, although in practice I don't know how.
In theory every minor version bump of `org.apache.logging.log4j` or
`o.a.l.l.spi` can cause an incompatibility between API and
implementation.
In practice the implementations also rely on the API for
`o.a.l.l.util` classes, so they will not work with a version that is
too old.

I would certainly bring some order here, if you have any ideas how...

Piotr


Re: OSGi package versioning

2023-11-13 Thread Matt Sicker
It’s similar to the compatible API versions, but the BND equivalent here would 
be the highest package version of all the packages in log4j-api (since the 
packages don’t get split out from the modules in practice).
—
Matt Sicker

> On Nov 13, 2023, at 16:02, Piotr P. Karwasz  wrote:
> 
> Hi Ralph,
> 
> On Mon, 13 Nov 2023 at 22:18, Ralph Goers  wrote:
>> 
>> How does this relate, if at all, to the COMPATIBLE_API_VERSIONS constant 
>> defined in ProviderUtil.java? We use that to ensure the API only binds with 
>> a compatible implementation of the API.
> 
> It is certainly related, although in practice I don't know how.
> In theory every minor version bump of `org.apache.logging.log4j` or
> `o.a.l.l.spi` can cause an incompatibility between API and
> implementation.
> In practice the implementations also rely on the API for
> `o.a.l.l.util` classes, so they will not work with a version that is
> too old.
> 
> I would certainly bring some order here, if you have any ideas how...
> 
> Piotr



Re: OSGi package versioning

2023-11-13 Thread Ralph Goers
The version number only changes when we intentionally change the API so that it 
would cause failures with an older implementation. For example, I believe the 
last time it changed was when we introduced ServiceLoader to locate the 
implementation.

In 3.x the constant is set to 3.0.0 as the Log4j API won’t work with an 
implementation that only supports 2.6.0.

Ralph

> On Nov 13, 2023, at 3:02 PM, Piotr P. Karwasz  wrote:
> 
> Hi Ralph,
> 
> On Mon, 13 Nov 2023 at 22:18, Ralph Goers  wrote:
>> 
>> How does this relate, if at all, to the COMPATIBLE_API_VERSIONS constant 
>> defined in ProviderUtil.java? We use that to ensure the API only binds with 
>> a compatible implementation of the API.
> 
> It is certainly related, although in practice I don't know how.
> In theory every minor version bump of `org.apache.logging.log4j` or
> `o.a.l.l.spi` can cause an incompatibility between API and
> implementation.
> In practice the implementations also rely on the API for
> `o.a.l.l.util` classes, so they will not work with a version that is
> too old.
> 
> I would certainly bring some order here, if you have any ideas how...
> 
> Piotr