Hi all, I’ve got a proposal for a new Commons component that I’d like to get feedback on. Essentially, I’d like to propose the creation of a Commons Plugins component inspired by the plugin system developed for Log4j 3.x [0]. This library would be a lightweight dependency injection and configuration library where developers create pluggable classes that can be referenced through plugin names via the configuration file (or configuration source in general). In contrast with more typical dependency injection frameworks like Spring and Guice, this library is for applications where pluggable implementations of things is desired. Developing a plugin system on top of DI frameworks is not a very standardized domain, and each project ends up reinventing this from scratch over time.
Some existing material on how the Log4j plugin and configuration system works that I’d adapt from to form the basis for this component include: - https://github.com/apache/logging-log4j2/blob/master/src/site/asciidoc/manual/dependencyinjection.adoc <https://github.com/apache/logging-log4j2/blob/master/src/site/asciidoc/manual/dependencyinjection.adoc> - https://github.com/apache/logging-log4j2/blob/master/src/site/asciidoc/manual/plugins.adoc <https://github.com/apache/logging-log4j2/blob/master/src/site/asciidoc/manual/plugins.adoc> The general goal of this library is to make it so that applications can provide better configuration DSLs for their plugin components. As both a developer and user, I absolutely despise configuring complex applications with properties files, and YAML variants of properties aren’t that much better. If there was a common plugin library we could reuse, then perhaps more applications would support a better configuration system. This could also provide a nice place for tooling integration similar to how JUnit is supported by IDEs and other tools. What do you think? Should this start in the Sandbox? Is anyone interested in working on or using this? [0]: https://github.com/apache/logging-log4j2/tree/master/log4j-plugins <https://github.com/apache/logging-log4j2/tree/master/log4j-plugins> — Matt Sicker