Hey all, after making a lot of serious progress toward what I’ve been alternatively referring to as the “Mean Bean Machine” or the “Great Inversion”, I’m finally coming to a logical conclusion of this (only have a couple remaining plugin types to refactor). While it took a few tries using different APIs and approaches to using dependency injection, I’m feeling good about this current iteration as it’s been fairly successful so far at applying inversion of control to places that were otherwise using ad hoc configuration mechanisms or other static method factories to enable a unified approach to configuring things.
With this in place, I believe we only have a few remaining high level tasks to complete before we can release 3.0.0 (including any potential early-release alpha/beta versions). Please feel free to comment on any of these or add other items. * The log4j-core module still needs to be further broken into modules such that log4j-core only requires java.base (and log4j-api and log4j-plugins). * The rest of the Log4j modules that don’t already have a module-info.java file need one. * There are dozens (possibly hundreds) of commits that have only been applied to release-2.x which need to be copied to master. * The new JSON configuration factory based on an embedded JSON parser (from the JSON Template Layout module) needs to be merged into log4j-core to replace the Jackson variant (which would be moved to its own module just like the other configuration factories that require more than java.base). * The LoggerContext properties configuration proposal from Ralph needs to be implemented. * The website and docs need to be updated, though this task is shared with the same issue for 2.x. Based on these remaining issues to resolve, I’d estimate that we can most likely make a 3.0.0 release before ApacheCon this year (which is Oct 3-6) which could make great timing for getting a talk or two accepted at ApacheCon (the first and last time I had a talk accepted for this was for the 2.0 release). If that’s the case, then I also have a tentative schedule we can try to follow: 1. Make an alpha or beta release of 3.0.0 by June. 2. Preferably more than one beta depending on feedback. 3. Work on cutting 3.0.0 by September. Hopefully this timeline isn’t overly optimistic, but I believe we’ve finally passed some of the toughest parts of the roadmap (Java modules and the Great Inversion being two of them). It’d also be great to try to have a Log4j release with a Java 11 baseline before Java 11 itself is EOL, but that’s not a _requirement_ per se. — Matt Sicker