I am always in favor of improving the documentation. The general rule is you 
never have enough and what you have is never good enough.

Ralph

> On Jan 22, 2018, at 12:49 PM, Gary Gregory <garydgreg...@gmail.com> wrote:
> 
> On Mon, Jan 22, 2018 at 12:36 PM, Matt Sicker <boa...@gmail.com> wrote:
> 
>> This whole conversation just reminds me of all the times in the past I
>> suggested full modularization of the core API/SPI. I think such an effort
>> would make sense in a 3.0 release.
>> 
>> In 2.x, perhaps what we can do is define a stable plugin API based on what
>> we already have. Since we're still supporting Java 7, I'd suggest we make
>> abstract classes be the stable part of the API since we don't have default
>> methods on interfaces here.
>> 
> 
> At the very least and as a first step, we could make official the
> annotations required to build plugins. This would mean a serious effort at
> providing better Javadocs. For
> example, org.apache.logging.log4j.core.config.plugins.Plugin.deferChildren()
> has NO Javadoc. Actually, the first step would be to Javadoc all of the
> annotations as best we can, ideally to the point where folks would not need
> to go to the site; having examples in the Javadoc you can cut and paste for
> example.
> 
> Gary
> 
> 
>> 
>> And yes, the GitBox integration thing sounds neat, particularly for code
>> review, though that's a separate topic entirely.
>> 
>> On 22 January 2018 at 00:37, Gary Gregory <garydgreg...@gmail.com> wrote:
>> 
>>> On Sun, Jan 21, 2018 at 4:14 PM, Ralph Goers <ralph.go...@dslextreme.com
>>> 
>>> wrote:
>>> 
>>>> I am very much against the idea of a single repo. Yes, you can have
>>>> multiple projects in the repo but I am not sure how that can be sanely
>>>> released. I much prefer the model that Maven has taken. They are now
>>> using
>>>> gitbox [1] which seems to allow GitHub to be the primary repo.
>>> 
>>> 
>>> GitHub is a distracting tangent here IMO. I really like GitHub's code
>>> commenting feature, but it should not matter if we use Apache's Git
>> hosted
>>> repos or GitHub's. So I'm not sure why we are mixing GitHub in the
>>> conversation... ;-)
>>> 
>>> Gary
>>> 
>>> 
>>>> Every Maven plugin is individually released. Scroll down the link below
>>> to
>>>> the Maven section and you can see all the plugin repos.
>>>> 
>>>> The upside to this is that it are:
>>>>        1. It is far easier to perform releases of the individual
>>>> components.
>>>>        2. It is much easier to accept plugin contributions.
>>>> The downsides are:
>>>>        1. A page like https://maven.apache.org/plugins/ <
>>>> https://maven.apache.org/plugins/> is needed to keep track of the
>> plugin
>>>> versions.
>>>>        2. It could make sense to have log4j-parent and log4j-bom
>>>> projects. The first to help keep the builds similar and the second to
>>> help
>>>> customers pick up the latest versions.
>>>> 
>>>> Ralph
>>>> 
>>>> [1] https://gitbox.apache.org/repos/asf <https://gitbox.apache.org/
>>>> repos/asf>
>>>> 
>>>>> On Jan 21, 2018, at 8:55 AM, Gary Gregory <garydgreg...@gmail.com>
>>>> wrote:
>>>>> 
>>>>> Hi All,
>>>>> 
>>>>> I am writing this to in an effort to understand how we can manage and
>>>> grow
>>>>> Log4j. I use the term 'grow' not in the 'bigger is better' sense but
>>> more
>>>>> in the maturing sense.
>>>>> 
>>>>> I am prompted to write this by Ralph's comment that log4j-core and
>> the
>>>> main
>>>>> repo is too big and that releases take too long make, partially
>>> prompted
>>>> by
>>>>> my addition of a new module called log4j-jdbc-dbcp2 which currently
>>>>> contains one small class with a dependency on Apache Commons DBCP 2.
>>>>> 
>>>>> I would like to express my gratitude at Ralph's efforts to
>> revitalized
>>>>> Log4j and performing most release management duties. Thank you Ralph!
>>>>> 
>>>>> I can see two main orthogonal issues:
>>>>> - The size of the git repo.
>>>>> - The size of the log4j-core module.
>>>>> 
>>>>> Ralph has proposed that new modules like log4j-jdbc-dbcp2 be moved to
>>>>> another 'plugin' repo.
>>>>> 
>>>>> I really dislike this idea:
>>>>> - The plugin repo has never been released. Not that one releases a
>> repo
>>>> but
>>>>> you get the point.
>>>>> - How do you keep things in sync between repos and code when we have
>> no
>>>>> official 'core' SPI.
>>>>> 
>>>>> For my money, we should keep _everything_ in one repo. Good enough
>> for
>>>>> Google, so good enough for me. What we release out of that repo is a
>>>>> different story and what I would like to discuss next.
>>>>> 
>>>>> This is not the same as Maven plugins IMO but the case could be made
>>> for
>>>> it
>>>>> I suppose where a lot/most plugins live in their own repos. It is not
>>> the
>>>>> same as with Maven IMO because our plugins rely on log4j-core and
>> it's
>>>>> guts, for which we only make loose compatibility guarantees -- as
>>> opposed
>>>>> to log4j-core where we are strict(er). Maven OTOH, has a API for
>> plugin
>>>>> auteurs.
>>>>> 
>>>>> For example, log4j-jdbc-dbcp2 replies on the guts of log4j-core and
>> we
>>>> have
>>>>> no 'official' core SPI, so splitting it off into a separate repo
>> would
>>>>> greatly increase the risk of it falling out of sync. It is just so
>> much
>>>>> more easier to maintain when it is all in one repo.
>>>>> 
>>>>> My proposal is to:
>>>>> 
>>>>> - Put everything back into one repo (Chainsaw too?)
>>>>> - Define a core SPI for plugin writers where we make some statement
>>> about
>>>>> BC, more than the casual 'we try not break stuff.'
>>>>> - Defining what Log4j project 'components' we have and release based
>> on
>>>>> that. For example, today, all of the main Log4j repo is one component
>>>> with
>>>>> many modules. Chainsaw would be another component of the Log4j
>> project.
>>>>> Maybe we need to redefine components: API, File, JDBC and so on. A
>>>>> component can have one of more module
>>>>> - Got for there.
>>>>> 
>>>>> Thoughts? Help me flush this out?
>>>>> 
>>>>> Thank you for reading!
>>>>> Gary
>>>> 
>>>> 
>>> 
>> 
>> 
>> 
>> --
>> Matt Sicker <boa...@gmail.com>
>> 


Reply via email to