This all sounds very confusing to me. Using this scheme, I could
create a set of dependencies on 2.x with empty jars that don't work on
3.x (because I picked the wrong jars). There is no way to verify that
what I'm doing on 2.x will work on 3.x without trying it on 3.x, so...
or am I missing something?

Gary

On Sun, Jan 19, 2025 at 1:32 PM Piotr P. Karwasz
<pi...@mailing.copernik.eu> wrote:
>
> Hi Robert,
>
> On 19.01.2025 18:39, Robert Middleton wrote:
> > If I'm understanding this correctly, this sounds like a bad idea.
> > While it does make the 2.x -> 3.x transition easier, it creates a
> > bigger issue for when you go from 2.x -> 2.y.
>
> As long as `x` is higher than `y` there will be no problems: the
> additional artifacts are not necessary in 2.x, they are just semantic
> sugar. Users can still add the third-party dependencies like
> `com.lmax:disruptor` themselves, but they could also just add
> `log4j-async-logger` and let us choose the appropriate `disruptor`
> version to use.
>
> The additional artifacts are also meant to help solving security alerts.
> Imagine a CVE is published against XZ that affects the decompression of
> archives. The developer of Acme Cool Server:
>
> 1. Finds out that `xz` is a transitive dependency of his app.
>
> 2. Finds out that `xz` is pulled by the direct dependency
> `commons-compress`.
>
> 3. Asks the Commons project if the problem in `xz` can affect
> `commons-compress`.
>
> 4. The answer will probably be "if you use decompression, YES" and he
> will need to dive into the code to see how Commons Compress is used.
>
> 5. He won't find anything in its own code and he will spend several
> hours to find out the Commons Compress is used by `log4j-core`.
>
> 6. Asks us if the problem in `xz` can affect `log4j-core`.
>
> 7. We will answer "NO, the affected code is not reachable".
>
> If we introduce a `log4j-compress` artifact that depends on
> `commons-compress` and the application uses it, steps 3-5 can be skipped.
>
> Piotr
>

Reply via email to