Should this be in Commons Configuration? Gary
On Sat, Apr 2, 2022, 15:33 Matt Sicker <boa...@gmail.com> wrote: > 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 > >