Hi all, While the list of optional dependencies in `log4j-core` version 3.x is much shorter than the one in the 2.x series, we could probably still improve it a bit:
* we could remove `jansi`. Since Windows 10 the terminal supports standard ANSI escapes[1]. On the other hand we broke JANSI support 3 years ago by upgrading from JANSI 1.x to 2.x[2]: the new version does not have the `org.fusesource.jansi.WindowsAnsiOutputStream` class we rely upon, * we should consider removing the Jackson dependency: 1. it is only required by the YAML configuration format, that we could move to a new module, 2. the JSON configuration format should probably use the JSON parser embedded into `log4j-api`. * maybe we could add some POM-only artifacts like `log4j-core-starter-async` that would depend on `log4j-core` and the recommended version of `disruptor`. The problem I find with optional dependencies is that consumers need to hardcode the version of the dependency in their POM and need to remember to upgrade it when they upgrade `log4j-core`. If we introduce "starters" for each optional dependency (LMAX disruptor, Conversant disruptor and JCTools), users can rely on our choice of the version. Piotr [1] https://stackoverflow.com/q/16755142/11748454 [2] https://github.com/apache/logging-log4j2/commit/9fabec5277f06f59ceaeff20da055ab7bf1952c4