On Sep 9, 2012, at 4:17 AM, Mark Struberg wrote:

> Can you again please explain me what the benefit of the SLF4J abstraction 
> over the already used plexus.Logger is? Both are just logging facades.
> 

Sure, I can repost the list of benefits I posted a couple days ago:

- Ubiquity. SLF4J may not be perfect, but I doubt we'll make anything better. 
Used by 15 Apache projects already. No one else in the world uses the Plexus 
logging facade.
- Changes have been made in Sisu that allow SLF4J logger to be injectable (we 
would have to redo this work).
- M2E uses SLF4J successfully and we never had any problems. We also now get 
consistency through the most widely used Maven toolchain.
- There are many default implementations to choose from, including log4j. All 
the hard work has been done.
- All the bridges function which pretty much allows all the common frameworks 
to be utilized with no work on our side. This allows others to use whatever 
they like in their components, and we can absorb almost any component that 
exists using its.
- If there are integration issues I'm sure Ceki will fix them. If there are 
examples of integrations I'd like to see the examples because I've never seen 
them personally. I don't really care to develop another logging facade.

> I mean you can still use whatever bridge underneath plexus.Logger. And 
> plexus.Logger is exclusively used by Maven, so we have a guarantee to not 
> introduce classpath clashes. Also, by just adding slf4j you will still miss 
> all the other logging facades, so this is only a quarter of a solution imo.

I have personally seen very few clashes, none in the near term, and the cost of 
sorting out these issues and possibly having to work with SLF4J developers 
doesn't really warrant trying to use something custom, not currently developed, 
and not used by anyone else in the world.

I'm not sure what you mean by a quarter solution. There is a highly used 
facade, with a good community with a decent interface, an abundance of 
implementations for people to choose from include one here from Apache, it's 
well documented, and everything is now routed through it. What do you think is 
missing?

> 
> 
> It has exactly zero benefit over just using plain JUL for example. This can 
> be used as purely a facade as well and would at least not create any 
> classpath clashes.
> 

Other than JUL loggers can be reclaimed by GC along with their configurations 
which is horrible IMO.

> 
> Actually while looking at the patch then I see quite a lot stuff I'm not sure 
> about
> 
> 
>>> +import com.google.inject.AbstractModule;
> I hope we do NOT use guice natively but only JSR-330 stuff in our business 
> code and guice is well hidden in an abstraction, don't we?

No client code has to use anything from Guice if they wish not to but providers 
are still very handy, and you can't really avoid providing the initial 
bindings. We use Sisu which is a layer on top of Guice which we are always 
going to use unless you are going to replace every Plexus component that 
exists. So we'll be using Sisu and therefore Guice as the implementation 
forever. That's the legacy of Plexus.

> 
> 
>>> +        imports.put( "org.sonatype.inject.*", coreRealm );
> Nice, but ... I don't see any code change which touches any org.sonatype 
> class. 
> 

These are Sisu exports and they are actually now at Eclipse. When we update 
those will change.

> I understand that you like to export sonatype specific stuff you need for you 
> company in the container core classpath. But wouldn't it be much better to 
> make this configurable like we have done in MAVEN_HOME/bin/m2.conf?

It's Sisu specific stuff, not anything that Sonatype needs. This is what's in 
the package, helper annotations essentially:

https://github.com/sonatype/sisu/tree/master/sisu-inject/containers/guice-bean/guice-bean-binders/src/main/java/org/sonatype/inject

> 
> 
> LieGrue,
> strub
> 
> 
> 
> ----- Original Message -----
>> From: Jason van Zyl <[email protected]>
>> To: Maven Developers List <[email protected]>
>> Cc: 
>> Sent: Sunday, September 9, 2012 5:30 AM
>> Subject: SLF4J implementation [was Re: svn commit: r1380105 - in 
>> /maven/maven-3/trunk: ./ apache-maven/ 
>> maven-core/src/main/java/org/apache/maven/classrealm/ maven-embedder/ 
>> maven-embedder/src/main/java/org/apache/maven/cli/]
>> 
>> T o complete this work and unify all the logging under SLF4J can we pick an 
>> implementation?
>> 
>> I have everything routing through SLF4J so everything using Plexus loggers 
>> or 
>> SLF4J loggers use the same SLF4J implementation. Even if we pick the simple 
>> implementation for now I can completely clean up the CLI and it will simply 
>> be a 
>> matter of dropping in an implementation JAR. Even the Log4J implementation 
>> is 
>> only 500k in total. I'm using Logback myself but it really doesn't 
>> matter what implementation we pick, I'd just like to pick one and finish the 
>> cleanup.
>> 
>> On Sep 8, 2012, at 3:39 AM, Stephen Connolly wrote:
>> 
>>> +1 on bump to 3.1
>>> 
>>> On Friday, 7 September 2012, Anders Hammar wrote:
>>> 
>>>> I know. But there wasn't much visible change in v3.0 either. And 
>> I'm
>>>> thinking that it would be easier to communicate a dependency on Maven
>>>> 3.1+ than 3.0.5+ if some component utilizes the JSR330 support.
>>>> 
>>>> Version numbers are cheap. Why not bump and get some attention? :-)
>>>> 
>>>> /Anders
>>>> 
>>>> On Fri, Sep 7, 2012 at 10:03 PM, Jason van Zyl <[email protected]> 
>> wrote:
>>>>> There are no visible user changes, so I don't think so. There 
>> aren't
>>>> even any changes to integrators unless they want to use take advantage 
>> of
>>>> the changes.
>>>>> 
>>>>> On Sep 7, 2012, at 4:01 PM, Anders Hammar wrote:
>>>>> 
>>>>>> Maybe this even should bump the version to v3.1?
>>>>>> 
>>>>>> /Anders
>>>>>> 
>>>>>> On Fri, Sep 7, 2012 at 5:37 PM, Olivier Lamy 
>> <[email protected]> wrote:
>>>>>>> Maybe I miss something but we don't have any associated 
>> jira entry for
>>>>>>> reference in release notes neither core it test.
>>>>>>> Do you have a bit of time for that ?
>>>>>>> 
>>>>>>> Thanks
>>>>>>> --
>>>>>>> Olivier
>>>>>>> 2012/9/3  <[email protected]>:
>>>>>>>> Author: jvanzyl
>>>>>>>> Date: Mon Sep  3 01:07:31 2012
>>>>>>>> New Revision: 1380105
>>>>>>>> 
>>>>>>>> URL: 
>> http://svn.apache.org/viewvc?rev=1380105&view=rev
>>>>>>>> Log:
>>>>>>>> o Enabled support and discovery of JSR-330 components
>>>>>>>> 
>>>>>>>> o Added Slf4j logger factory to support generic JSR-330 
>> logging
>>>>>>>> 
>>>>>>>> o Exported Guice package for components that access 
>> Guice (or better
>>>> it's injector) directly
>>>>>>>> 
>>>>>>>> Widen export of Guice packages (not ideal, need to look 
>> into ways to
>>>> avoid this)
>>>>>>>> 
>>>>>>>> o use specific exports
>>>>>>>> 
>>>>>>>> o for now we will attempt to hide all of Guice in 
>> plugin realms and
>>>> we'll do a bit of testing
>>>>>>>> 
>>>>>>>> closes #3
>>>>>>>> 
>>>>>>>> Added:
>>>>>>>> 
>>>> 
>> maven/maven-3/trunk/maven-embedder/src/main/java/org/apache/maven/cli/PlexusLogger.java
>>>>>>>> 
>>>> 
>> maven/maven-3/trunk/maven-embedder/src/main/java/org/apache/maven/cli/PlexusLoggerFactory.java
>>>>>>>> Modified:
>>>>>>>>    maven/maven-3/trunk/apache-maven/pom.xml
>>>>>>>> 
>>>> 
>> maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/classrealm/DefaultClassRealmManager.java
>>>>>>>>    maven/maven-3/trunk/maven-embedder/pom.xml
>>>>>>>> 
>>>> 
>> maven/maven-3/trunk/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java
>>>>>>>>    maven/maven-3/trunk/pom.xml
>>>>>>>> 
>>>>>>>> Modified: maven/maven-3/trunk/apache-maven/pom.xml
>>>>>>>> URL:
>>>> 
>> http://svn.apache.org/viewvc/maven/maven-3/trunk/apache-maven/pom.xml?rev=1380105&r1=1380104&r2=1380105&view=diff
>>>>>>>> 
>>>> 
>> ==============================================================================
>>>>>>>> --- maven/maven-3/trunk/apache-maven/pom.xml (original)
>>>>>>>> +++ maven/maven-3/trunk/apache-maven/pom.xml Mon Sep  3 
>> 01:07:31 2012
>>>>>>>> @@ -83,6 +83,10 @@
>>>>>>>>       <groupId>org.sonatype.aether</groupId>
>>>>>>>>       
>> <artifactId>aether-connector-wagon</artifactId>
>>>>>>>>     </dependency>
>>>>>>>> +    <dependency>
>>>>>>>> +      <groupId>org.slf4j</groupId>
>>>>>>>> +      <artifactId>slf4j-nop</artifactId>
>>>>>>>> +    </dependency>
>>>>>>>>   </dependencies>
>>>>>>>> 
>>>>>>>>   <build>
>>>>>>>> 
>>>>>>>> Modified:
>>>> 
>> maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/classrealm/DefaultClassRealmManager.java
>>>>>>>> URL:
>>>> 
>> http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/<http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/classrealm/DefaultClassRealmManager.java?rev=1380105&r1=1380104&r2=1380105&view=diff>
>> 
>> Thanks,
>> 
>> Jason
>> 
>> ----------------------------------------------------------
>> Jason van Zyl
>> Founder & CTO, Sonatype
>> Founder,  Apache Maven
>> http://twitter.com/jvanzyl
>> ---------------------------------------------------------
>> 
>> We know what we are, but know not what we may be.
>> 
>>   -- Shakespeare
>> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
> 

Thanks,

Jason

----------------------------------------------------------
Jason van Zyl
Founder & CTO, Sonatype
Founder,  Apache Maven
http://twitter.com/jvanzyl
---------------------------------------------------------

The modern conservative is engaged in one of man's oldest exercises in moral 
philosophy; that is, 
the search for a superior moral justification for selfishness.

 -- John Kenneth Galbraith





Reply via email to