Hi Ralph,

On Thu, 2 Nov 2023 at 08:39, Piotr P. Karwasz <piotr.karw...@gmail.com> wrote:
> Hi Ralph,
> On Thu, 2 Nov 2023 at 05:53, Ralph Goers <ralph.go...@dslextreme.com> wrote:
> > JPMS is not the main target for 2.x as 2.x still supports Java 8 and has to 
> > use “versioned” jars so it can work in Java 8 and Java 11+.  3.x only 
> > supports Java 11 and is really where we want to focus our attention. I wish 
> > everyone would agree with this so we could get 3.0.0 GA out as quickly as 
> > possible but people still want to (seemingly endlessly) tinker with 3.x. 
> > Once 3.x I would like to announce that 2.x’s EOL is directly tied to the 
> > longevity of Java 8. Once Java 8 falls below 10% usage it will be EOL’d.  
> > So I would rather everyone focus their energy on 3.x and not make any more 
> > changes to 2.x other than bug-fixes.

I agree that 3.x should have a fixed number of features. We should
probably agree on them and close the list.

There are things that I would like to add to 3.x, that you won't allow
me to do in a minor release:
 * drop JMX support in 3.0.x: I have a basic understanding on how
Micrometer works. In 3.1.x I could restore the monitoring capabilities
of Log4j Core with a `log4j-core-jmx` module and possibly a
`log4j-core-micrometer` module (or `micrometer-log4j-core` if the
Micrometer project accepts such a contribution). This could probably
be done by just extending the public `log4j-core` API,
 * move the code that depends on LMAX disruptor to a separate module
(`log4j-async-logger`, but I am open to suggestions for a better
name),
 * move the code that depends on Conversant disruptor to a separate
module (`log4j-async-queue-disruptor` for lack of a better name),
 * move the code that depends on JCTools to a separate module
(`log4j-async-queue-jctools`); the same applies to JTL,
 * move the code that depends on Commons Compress to a separate module
(`log4j-file-compress`),
 * move the code that depends on JAnsi to a separate module
(`log4j-console-jansi`),
 * remove the Jackson-based configuration factories (to be restored in
3.1.x) or move them to a different module,
 * remove the `log4j-jndi` dependency from `log4j-jdbc` by creating
`log4j-jdbc-jndi`.
 * drop `log4j-slf4j-impl`, since as far as I know the 1.7.x branch is
not supported any more by Ceki; I know this contains some support for
structured events from `slf4j-ext` 1.7.25 that is not present in
`log4j-slfj42-impl`, but I suppose this is no longer needed.

There are some changes we are waiting for
(https://github.com/apache/logging-log4j2/milestone/2):
 * LoggerContext-scoped properties, plugins, etc. I am not sure we can
introduce this in a minor release. I recently extended JCL to use the
Log4j API and SLF4J and noticed that Logback does not allow multiple
logger contexts. We do, but those are useless if Log4j Core in the
system classloader can't pick up plugins from other classloaders. A
little example: in Tomcat the system classloader basically contains
only the logging framework and `log4j-core` can not pick up
`log4j-web` in the classloader with all the Servlet API classes,
 * Recycler API: I doubt we can introduce a uniform way to cache
objects without breaking changes. Volkan will pick this up shortly, so
be patient,
 * regressions, regressions and once again regressions. One is even
reported (https://github.com/apache/logging-log4j2/issues/1439) and
has been sitting there for some time.

Piotr

Reply via email to