That&#39;s interesting, I hadn&#39;t heard about the service container yet. Yes, if we combine both we have basically the same thing as why I think OSGI would be good,  possibly even better and created within JBoss (so we have access to the right people). I do think we really need a service layer, just modules will only solve part of the problem so we should definitly look at this.<div>
So yes, it makes a lot of sense. I will spent some time on a prototype anyway just because I want to try and then we have something to compare with :-)</div><div><br></div><div>Paul</div><div><div><br><br><div class="gmail_quote">
On Sat, Jun 18, 2011 at 9:02 PM, Dan Allen <span dir="ltr">&lt;<a href="mailto:dan.j.allen@gmail.com">dan.j.allen@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
Paul,<div><br></div><div>Your points about OSGi are well made and definitely worth exploring.</div><div><br></div><div>I did leave out an important piece of information that may help bridge the design gap.</div><div><br></div>


<div>One of the main motivators for creating JBoss Modules was to isolate the concern of modular classloading from services, which are unnecessarily coupled in OSGi. Of course, there is still an need for the services. That&#39;s why the JBoss Modular Services Container [1] was created, to solve the other half of the equation independently. JBM doesn&#39;t have a services layer because MSC provides that :)</div>


<div><br></div><div>Together, JBoss Modules and the JBoss Modular Services Container match the functionality that OSGi provides (you can look at it like a Venn Diagram, with the overlap being the OSGi equivalent). JBoss even provides an OSGi container, which as you can probably guess, is layered on top of this foundation.</div>
<div class="im">

<div><br></div><blockquote class="gmail_quote" style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0.8ex;border-left-width:1px;border-left-color:rgb(204, 204, 204);border-left-style:solid;padding-left:1ex">


I would personally prefer OSGI because it offers a bit more (services) than JBM which I believe is very useful for Forge, but JBM being a JBoss project is a good argument to prefer this solution. </blockquote><div><br></div>


</div><div>In essence, I don&#39;t think we should limit ourselves to JBM either. On the other hand, I don&#39;t know that we have to go all the way to OSGi. And I would say that this choice has little to do with the fact that JBM and MSC are JBoss projects. After all, if we used OSGi, we can use JBoss OSGi, or any other compliant container. The ownership doesn&#39;t really concern me.</div>


<div><br></div><div>The reason I&#39;m suggesting that we use JBM and MSC is because they are the simplest possible tool that can solve the problem (the best tool for the job). If they aren&#39;t, for some reason, then we can shift upwards to OSGi.</div>


<div><br></div><div>Make sense?</div><div><br></div><div>-Dan</div><div><br></div><div> </div><div>[1] <a href="https://github.com/jbossas/jboss-msc" target="_blank">https://github.com/jbossas/jboss-msc</a></div><div>[2] <a href="https://github.com/jbosgi" target="_blank">https://github.com/jbosgi</a><div>
<div></div><div class="h5"><br>

<br><div class="gmail_quote">On Sat, Jun 18, 2011 at 08:53, Paul Bakker <span dir="ltr">&lt;<a href="http://paul.bakker.nl" target="_blank">paul.bakker.nl</a>@<a href="http://gmail.com" target="_blank">gmail.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

The osgi service model makes it possible to publish services to the runtime. A service is just a Java interface, because services are running in the same VM/runtime. Services are dynamic, meaning they can come and go any time. From code you can ask the runtime for all services implementing a specific interface (other &quot;query&quot; metadata is possible too). With weld-osgi it&#39;s possble to do this completely using cdi annotations. Forge is already higly modular at build time because Plugins are decoupled from other plugins. If Plugins become services they are decoupled at runtime too. Forge and osgi services seems to be a perfect fit to each other.<div>



<br></div><div>I&#39;ve watched the JBoss world presentation (thanks for the links Dan!) and JBM looks great too. JBM doesn&#39;t have a services layer though (which is an explicit choice). We can live without though, since we already do now. The largest problem that must be solved in Forge is the classloading itself, and JBM does that perfectly. I would personally prefer OSGI because it offers a bit more (services) than JBM which I believe is very useful for Forge, but JBM being a JBoss project is a good argument to prefer this solution. </div>



<div><div><br></div><div>Either solution would keep the plugin development process exactly the same as is. Plugin writers and users will not have to notice whatever we use. I&#39;ll try to work on a prototype using OSGI, even if we go for JBM it will be a fun experiment anyway ;-)</div>



<div><br></div><div>Paul</div><div><br><div class="gmail_quote"><div><div></div><div>On Fri, Jun 17, 2011 at 6:39 PM, Dan Allen <span dir="ltr">&lt;<a href="mailto:dan.j.allen@gmail.com" target="_blank">dan.j.allen@gmail.com</a>&gt;</span> wrote:<br>


</div></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div></div><div>
<div>On Fri, Jun 17, 2011 at 11:59, Lincoln Baxter, III <span dir="ltr">&lt;<a href="mailto:lincolnbaxter@gmail.com" target="_blank">lincolnbaxter@gmail.com</a>&gt;</span> wrote:<br></div><div class="gmail_quote">
<div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

The reason I want to go toward JBoss Modules is because I think that we can get things working with absolutely 0 code changes required for plugin developers, and yes, also because it&#39;s a jboss project.<br><br></blockquote>





<div> </div></div><div>I have complete confidence that JBoss Modules [1] is the right way to go. It may be young, but it has been very carefully designed by someone who has crystal clear understanding of the problem. I&#39;m not just saying that because David&#39;s my respected colleague, it&#39;s backed up with proof in the form of AS 7, his blogs about modularity [2] [3] and the JBoss Modules presentation. I&#39;ve heard the JavaDoc are very good as well. [4]</div>





<div><br></div><div>If you haven&#39;t yet, I strongly recommend all of you to watch the presentation on JBoss Modules from JUDCon [5], which was given by David by his proxy, Jason Greene. It gives an overview of JBoss Modules, but more importantly it explains how it relates to OSGi and Maven.</div>





<div><br></div><div>JBoss Modules truly is a good fit. Plus, Forge could really help get the word out about the benefit of modularity in general.</div><div><br></div><div>-Dan </div><div><br></div><div>[1] <a href="https://github.com/jbossas/jboss-modules" target="_blank">https://github.com/jbossas/jboss-modules</a></div>





<div>[2] <a href="http://in.relation.to/Bloggers/ModularizedJavaWithJBossModules" target="_blank">http://in.relation.to/Bloggers/ModularizedJavaWithJBossModules</a></div><div>[3] <a href="http://in.relation.to/Bloggers/ModulesInJDK8AndProjectJigsawRequirementsReviewPart1" target="_blank">http://in.relation.to/Bloggers/ModulesInJDK8AndProjectJigsawRequirementsReviewPart1</a></div>





<div>[4] <a href="https://github.com/jbossas/jboss-modules/blob/master/src/main/java/org/jboss/modules/ConcurrentClassLoader.java" target="_blank">https://github.com/jbossas/jboss-modules/blob/master/src/main/java/org/jboss/modules/ConcurrentClassLoader.java</a></div>





<div>[5] <a href="http://vimeo.com/24776447" target="_blank">http://vimeo.com/24776447</a></div></div><br><font color="#888888">-- <br><div>Dan Allen</div>Principal Software Engineer, Red Hat | Author of Seam in Action<br>



Registered Linux User #231597<br><br>

<div><a href="http://www.google.com/profiles/dan.j.allen#about" target="_blank">http://www.google.com/profiles/dan.j.allen#about</a><br><a href="http://mojavelinux.com" target="_blank">http://mojavelinux.com</a><br><a href="http://mojavelinux.com/seaminaction" target="_blank">http://mojavelinux.com/seaminaction</a><br>





</div><br>
</font><br></div></div><div>_______________________________________________<br>
forge-dev mailing list<br>
<a href="mailto:forge-dev@lists.jboss.org" target="_blank">forge-dev@lists.jboss.org</a><br>
<a href="https://lists.jboss.org/mailman/listinfo/forge-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/forge-dev</a><br>
<br></div></blockquote></div><br></div></div>
<br>_______________________________________________<br>
forge-dev mailing list<br>
<a href="mailto:forge-dev@lists.jboss.org" target="_blank">forge-dev@lists.jboss.org</a><br>
<a href="https://lists.jboss.org/mailman/listinfo/forge-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/forge-dev</a><br>
<br></blockquote></div><br><br clear="all"><br>-- <br><div>Dan Allen</div>Principal Software Engineer, Red Hat | Author of Seam in Action<br>Registered Linux User #231597<br><br><div><a href="http://www.google.com/profiles/dan.j.allen#about" target="_blank">http://www.google.com/profiles/dan.j.allen#about</a><br>


<a href="http://mojavelinux.com" target="_blank">http://mojavelinux.com</a><br><a href="http://mojavelinux.com/seaminaction" target="_blank">http://mojavelinux.com/seaminaction</a><br></div><br>
</div></div></div>
<br>_______________________________________________<br>
forge-dev mailing list<br>
<a href="mailto:forge-dev@lists.jboss.org">forge-dev@lists.jboss.org</a><br>
<a href="https://lists.jboss.org/mailman/listinfo/forge-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/forge-dev</a><br>
<br></blockquote></div><br></div></div>