That would be the goal. Then we can have a log4j-core which has all the
main plugins (file-related mostly) and other log4j addons for the 3rd party
dependency ones.

On 24 April 2017 at 09:47, Mikael Ståldal <mikael.stal...@magine.com> wrote:

> I guess this means that a plugin only needs to depend on log4j-spi (and
> probably on log4j-api), not on log4j-core or anything else log4j-*.
>
> That would be good.
>
> On Mon, Apr 24, 2017 at 4:44 PM, Matt Sicker <boa...@gmail.com> wrote:
>
> > Keeping configuration/plugin processing code inside log4j-spi should
> > probably be marked clearly which classes are public APIs and which aren't
> > then. I'm not sure how many classes would need to be moved around, but
> that
> > will require some experimentation to figure out anyways.
> >
> > On 24 April 2017 at 04:38, Mikael Ståldal <mikael.stal...@magine.com>
> > wrote:
> >
> > > I fully agree with Matt's both proposals.
> > >
> > > I'm skeptic to creating more repositories (than we already have)
> though.
> > I
> > > think that we should start by splitting out modules from log4j-core and
> > > keep those modules in the main repository with synchronized versioning
> > and
> > > releases, at least for the 2.9 release. We can always move those
> modules
> > to
> > > other repositories later if we want to.
> > >
> > > It is a lot of administrative work to create a new repository (as we
> have
> > > seen for log4j-scala), I don't want us to do all that work over and
> over
> > > again unless really necessary.
> > >
> > > We have a JIRA ticket for this:
> > > https://issues.apache.org/jira/browse/LOG4J2-1650
> > >
> > > I have already started by breaking out log4j-server:
> > > https://issues.apache.org/jira/browse/LOG4J2-1851
> > >
> > > I think the next step is to break out plugins (layouts and appenders)
> > with
> > > optional 3rd party dependencies into their own modules.
> > >
> > >
> > > On Sun, Apr 23, 2017 at 7:45 PM, Matt Sicker <boa...@gmail.com> wrote:
> > >
> > > > I think I brought this topic up like 3 years ago when I was working
> on
> > > > initial OSGi support, but now that we have 3 more years worth of code
> > > > additions and optional features, I think this might be a more
> > appropriate
> > > > time to discuss it again in light of experience.
> > > >
> > > > Building log4j-core itself already takes a long time, and many
> plugins
> > > > aren't updated very often at all. In the past, requiring users to
> > simply
> > > > add log4j-core plus any transitive dependencies to use optional
> > features
> > > > seemed to work well enough, but I still think that's a confusing
> > > > distribution mechanism as demonstrated by the numerous bug reports
> and
> > > > Stack Overflow posts regarding missing transitive dependencies for
> > > various
> > > > features. I spent some time experimenting with Log4j Boot a little
> > while
> > > > ago to help alleviate this problem, but this may be unnecessary if we
> > can
> > > > agree to modularize log4j-core itself.
> > > >
> > > > I have two different proposals, both of which can be used at the same
> > > time.
> > > >
> > > > 1. Split out everything from log4j-core that requires 3rd party
> > > > dependencies (except for AsyncLogger, though perhaps we could
> consider
> > > > shading and renaming those classes like some other low level
> libraries
> > do
> > > > with JCTools). Ideally, I'd like to see each module have required
> > > > dependencies instead of optional ones, so that if, for instance, I
> > > include
> > > > a "log4j-config-yaml" dependency, I know that Log4j will support YAML
> > > > configuration without having to specify the individual Jackson
> > > > dependencies.
> > > >
> > > > 2. Split out from log4j-core a sort of log4j-spi module which defines
> > > > interfaces, abstract classes, and annotations for plugins that would
> be
> > > > promoted to the same level of backwards compatibility guarantees as
> > > > log4j-api. This would aid in cementing what we really wish to
> maintain
> > > > compatibility with in the backend while allowing other modules to
> have
> > > less
> > > > strict guarantees.
> > > >
> > > > With proposal #1, I'd think that we could more easily start moving
> > > modules
> > > > into separate repositories and release trains. Without #2, though,
> this
> > > > makes version support more annoying to handle, but that's what we'll
> > face
> > > > regardless as we separate more repositories. If we go this route,
> then
> > > > there will be no need for a Log4j Boot subproject.
> > > >
> > > > What do you all think?
> > > >
> > > > --
> > > > Matt Sicker <boa...@gmail.com>
> > > >
> > >
> > >
> > >
> > > --
> > > [image: MagineTV]
> > >
> > > *Mikael Ståldal*
> > > Senior software developer
> > >
> > > *Magine TV*
> > > mikael.stal...@magine.com
> > > Grev Turegatan 3  | 114 46 Stockholm, Sweden  |   www.magine.com
> > >
> > > Privileged and/or Confidential Information may be contained in this
> > > message. If you are not the addressee indicated in this message
> > > (or responsible for delivery of the message to such a person), you may
> > not
> > > copy or deliver this message to anyone. In such case,
> > > you should destroy this message and kindly notify the sender by reply
> > > email.
> > >
> >
> >
> >
> > --
> > Matt Sicker <boa...@gmail.com>
> >
>
>
>
> --
> [image: MagineTV]
>
> *Mikael Ståldal*
> Senior software developer
>
> *Magine TV*
> mikael.stal...@magine.com
> Grev Turegatan 3  | 114 46 Stockholm, Sweden  |   www.magine.com
>
> Privileged and/or Confidential Information may be contained in this
> message. If you are not the addressee indicated in this message
> (or responsible for delivery of the message to such a person), you may not
> copy or deliver this message to anyone. In such case,
> you should destroy this message and kindly notify the sender by reply
> email.
>



-- 
Matt Sicker <boa...@gmail.com>

Reply via email to