(It would be nice to get finals taken off methods of the NOP implementation for this release)<br><br><div><span class="gmail_quote">On 2/21/07, <b class="gmail_sendername">Ceki Gülcü</b> &lt;<a href="mailto:listid@qos.ch">
listid@qos.ch</a>&gt; wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">John,<br><br>With the recent changes made by Sebastien [1, 2], we no longer have
<br>packages split across modules. Thus,<br><br>slf4j-api<br>exports&nbsp;&nbsp;packages:<br>&nbsp;&nbsp; org.slf4j<br>&nbsp;&nbsp; org.slf4j.spi<br>&nbsp;&nbsp; org.slf4j.helpers<br>imports packages:<br>&nbsp;&nbsp; org.slf4j.impl<br><br>slf4j-BINDING (where BINDING is one of nop, simple, log4j12, etc)
<br>exports packages:<br>&nbsp;&nbsp; org.slf4j.impl<br>imports packages:<br>&nbsp;&nbsp; org.slf4j<br>&nbsp;&nbsp; org.slf4j.spi<br>&nbsp;&nbsp; org.slf4j.helpers<br><br>As things stand currently, I believe that we are close to a release<br>candidate. The remaining question is with respect to OSGi
<br>meta-data. Do we keep using maven-bundle-plugin or not? In particular,<br>does that plug-in support Require-Bundle directives? (I think that<br>Require-Bundle directives would be necessary.)<br><br>Comments/thoughts?<br>
<br>[1] <a href="http://www.slf4j.org/pipermail/dev/2007-February/000818.html">http://www.slf4j.org/pipermail/dev/2007-February/000818.html</a><br>[2] <a href="http://www.slf4j.org/pipermail/dev/2007-February/000874.html">
http://www.slf4j.org/pipermail/dev/2007-February/000874.html</a><br><br><br>At 11:45 PM 2/20/2007, John E. Conlon wrote:<br>&gt;Ceki Gülcü wrote:<br>&gt; &gt; John,<br>&gt; &gt;<br>&gt; &gt; Do you have a suggestion how we could avoid duplication of slf4j-api
<br>&gt; &gt; classes in the various bindings? Can this be done using<br>&gt; maven-bundle-plugin ?<br>&gt; &gt;<br>&gt;At the moment I can think four approaches to removing the duplication of<br>&gt;classes in the bindings that sit on &#39;Sally&#39;s application&#39;s classpath.
<br>&gt;<br>&gt;1. Keep the packages split across the api and binding projects, continue<br>&gt;to rely on single classloader joining at runtime, and move back to a<br>&gt;Require-Bundle approach for osgi support. We won&#39;t need the
<br>&gt;maven-bundle-plugin in the binding projects for this.<br>&gt;<br>&gt;2. Remove the split packages by consolidating the packages into the api<br>&gt;and binding jars, and use a &#39;service implementation&#39; discovery similar
<br>&gt;that suggested by Eric in the &quot;aufgeregt&quot; thread :-) :<br>&gt;<br>&gt;<a href="http://www.qos.ch/pipermail/logback-user/2007-February/000129.html">http://www.qos.ch/pipermail/logback-user/2007-February/000129.html
</a><br>&gt;<br>&gt;We should not depend on a sun impl for this so we would have to provide<br>&gt;our own implementation, Boris has provided an example at:<br>&gt;<br>&gt;<a href="http://marc.theaimsgroup.com/?l=slf4j-dev&amp;m=117157566417290&amp;w=2">
http://marc.theaimsgroup.com/?l=slf4j-dev&amp;m=117157566417290&amp;w=2</a><br>&gt;<br>&gt;While I have not experimented with his code, I do see one area that<br>&gt;would require a change for it to work in an OSGi environment.
<br>&gt;<br>&gt;&nbsp;&nbsp;public Object obtainFactory(ClassLoader cl) {<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ILoggerFactory ret = null;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; InputStream is = cl.getResourceAsStream(SERVICE_ID);<br>&gt;<br>&gt;Note: couldn&#39;t use a context classloader as it would not find the
<br>&gt;classes in an OSGi runtime. Sun&#39;s service api offers similar signatures.<br>&gt;<br>&gt;3. Keep split packages and retain current way of combining api and<br>&gt;bindings.&nbsp;&nbsp;Remove OSGi decorations and maven-bundle-plugin from the five
<br>&gt;bindings projects.&nbsp;&nbsp; Create five additional OSGi &#39;pom&#39; projects that<br>&gt;just wrap the api and bindings to create OSGi binding bundles.&nbsp;&nbsp;These<br>&gt;projects would only have a pom.xml (no code) and the artifacts they
<br>&gt;create would be the same bundles as we are now producing in the binding<br>&gt;projects.&nbsp;&nbsp;All other projects producing native jar/osgi bundles (like<br>&gt;the adapters) would remain unchanged.<br>&gt;(In this case Sally would not use the osgi-xxx-binding bundles.)
<br>&gt;<br>&gt;4. Convince Sally to run OSGi ;-)<br>&gt;<br>&gt;&nbsp;&nbsp;From an OSGi perspective I would rate them in order of functionality<br>&gt;from higher to lower - 4, 3, 2, 1.<br>&gt;<br>&gt;kind regards,<br>&gt;John<br>
&gt;<br>&gt;<br>&gt;<br>&gt; &gt; At 07:52 PM 2/19/2007, Ceki Gülcü wrote:<br>&gt; &gt;<br>&gt; &gt;<br>&gt; &gt;&gt; At 08:25 PM 2/18/2007, John E. Conlon wrote:<br>&gt; &gt;&gt;<br>&gt; &gt;&gt;<br>&gt; &gt;&gt;&gt;&gt; Assuming Maven 2 is used by all participants, without particular
<br>&gt; &gt;&gt;&gt;&gt; action by Sally, slf4j-api would be packaged in the final<br>&gt; &gt;&gt;&gt;&gt; application along with a user-chosen binding, say slf4j-log4j12. In<br>&gt; &gt;&gt;&gt;&gt; that case, we would have the contents of slf4j-api project duplicated,
<br>&gt; &gt;&gt;&gt;&gt; once in slf4j-api.jar and once in slf4j-log4j12.jar. It would most<br>&gt; &gt;&gt;&gt;&gt; probably work as expected, but I don&#39;t think it&#39;s good practice to<br>&gt; &gt;&gt;&gt;&gt; have class files duplicated.
<br>&gt; &gt;&gt;&gt;&gt;<br>&gt; &gt;&gt;&gt;&gt;<br>&gt; &gt;&gt;&gt; I don&#39;t like this class duplication either, but AFAIK given the same<br>&gt; &gt;&gt;&gt; classloader this should not matter.&nbsp;&nbsp;The same classloader will load
<br>&gt; &gt;&gt;&gt; which ever it encounters first.&nbsp;&nbsp;(Maybe I will eat these words<br>&gt; latter?) ;-)<br>&gt; &gt;&gt;&gt;<br>&gt; &gt;&gt; Hi John,<br>&gt; &gt;&gt;<br>&gt; &gt;&gt; The driving premise behind SLF4J is to reduce surprises. I think we
<br>&gt; &gt;&gt; should do things by the book and avoid duplication. Since SLF4J<br>&gt; &gt;&gt; version 1.1, user&#39;s have been asked to have two jars, slfl4-api.jar in<br>&gt; &gt;&gt; addition to a binding. In SLF4J 
1.3, the general arrangement remains<br>&gt; &gt;&gt; the same, except that slf4j-api is now self-sufficient as a<br>&gt; &gt;&gt; compile-time dependency.<br>&gt; &gt;&gt;<br>&gt; &gt;&gt; I quite like this user-story. Alice and Bob expose slf4j-api as a
<br>&gt; &gt;&gt; transitive dependency, while Sally, the end-user, chooses to depend on<br>&gt; &gt;&gt; a binding of her own selection.&nbsp;&nbsp;We respond to Eric Crahen&#39;s initial<br>&gt; &gt;&gt; request [1] without fundamentally changing how SLF4J works.
<br>&gt; &gt;&gt;<br>&gt; &gt;&gt; I do not wish to hide behind backward-compatibility excuses. We<br>&gt; &gt;&gt; finally have a nice and clear separation between slf4j-api and<br>&gt; &gt;&gt; slf4j-binding. Let&#39;s keep it clean and simple even if it costs an
<br>&gt; &gt;&gt; extra jar on the class path.<br>&gt; &gt;&gt;<br>&gt; &gt;&gt; [1]<br>&gt; &gt;&gt; <a href="http://www.qos.ch/pipermail/logback-user/2007-February/000129.html">http://www.qos.ch/pipermail/logback-user/2007-February/000129.html
</a><br>&gt; &gt;&gt;<br>&gt; &gt;&gt;<br>&gt; &gt;&gt;<br>&gt; &gt;&gt;<br>&gt; &gt;&gt;&gt; a good weekend for you too,<br>&gt; &gt;&gt;&gt; John<br>&gt; &gt;&gt;&gt;<br>&gt; &gt;&gt; --<br>&gt; &gt;&gt; Ceki Gülcü<br>&gt; &gt;&gt; Logback: The reliable, generic, fast and flexible logging framework
<br>&gt; for Java.<br>&gt; &gt;&gt; <a href="http://logback.qos.ch">http://logback.qos.ch</a><br>&gt; &gt;&gt;<br>&gt; &gt;&gt; _______________________________________________<br>&gt; &gt;&gt; dev mailing list<br>&gt; &gt;&gt; 
<a href="mailto:dev@slf4j.org">dev@slf4j.org</a><br>&gt; &gt;&gt; <a href="http://www.slf4j.org/mailman/listinfo/dev">http://www.slf4j.org/mailman/listinfo/dev</a><br>&gt; &gt;&gt;<br>&gt; &gt;<br>&gt; &gt;<br>&gt;<br>&gt;_______________________________________________
<br>&gt;dev mailing list<br>&gt;<a href="mailto:dev@slf4j.org">dev@slf4j.org</a><br>&gt;<a href="http://www.slf4j.org/mailman/listinfo/dev">http://www.slf4j.org/mailman/listinfo/dev</a><br><br>--<br>Ceki Gülcü<br>Logback: The reliable, generic, fast and flexible logging framework for Java.
<br><a href="http://logback.qos.ch">http://logback.qos.ch</a><br><br>_______________________________________________<br>dev mailing list<br><a href="mailto:dev@slf4j.org">dev@slf4j.org</a><br><a href="http://www.slf4j.org/mailman/listinfo/dev">
http://www.slf4j.org/mailman/listinfo/dev</a><br></blockquote></div><br><br clear="all"><br>-- <br><br>- Eric