I think Łukasz meant - use pure Java/OSGi, i.e no deps on SCR / DS at all?
On Dec 6, 2013, at 12:42 AM, Guillaume Nodet <gno...@apache.org> wrote: > 2013/12/5 Daniel Kulp <dk...@apache.org> > >> >> On Dec 5, 2013, at 11:03 AM, Achim Nierbeck <bcanh...@googlemail.com> >> wrote: >> >>> Hi Johan, >>> >>> I'm fully with you for the client side I wouldn't walk that path for a >>> Karaf without Blueprint. >>> I just have the feeling that especially for the minimal bundle it could >> be >>> really helpful to start without >>> blueprint. >>> @Dan regarding minimal and blueprint, yes though I think since we'd still >>> provide the blueprint feature it would be viable way of doing minimal >>> without blueprint but the user who still needs it >>> needs to depend on that blueprint feature. >> >> The issues is what to do about frameworks that need blueprint, but the >> user may not. The user may not even know that Blueprint is needed. >> Their app may be completely spring-dm based or something. However, if they >> depend on CXF, they would also need blueprint or CXF won’t work (CXF uses >> Blueprint in many places). (Yes, changing CXF to use DS or something is >> certainly a possible enhancement, anyone want to tackle that?) >> >> Right now, there isn’t a “blueprint” feature that CXF can depend on. We >> can add one for 3.1 or 4.0, but if CXF then depends on it, then it would no >> longer load into any 2.3.x Karaf without also doing a 2.3.x release. >> That’s mostly my point, removing something that is there by default in 2.3 >> or 3.0 WILL have user impact. It’s not a major one, but it is something >> that needs to be considered on how to manage it, particularly for >> frameworks that tend to try and keep a range of compatible Karaf versions >> supported. >> >> It could also be something like having a very small bundle listener or >> bundle install hook or something in the core that when a bundle is loaded >> (pre-resolve), if there is a "Bundle-Blueprint” manifest, it would >> automatically start the blueprint feature. Might have some timing quirks >> that would need to be worked out, but possibly doable. >> >> > Instead of using a bundle listener which would only be called after > installation, it may be easier to just improve the FeaturesService > implementation to automatically add those requirements at runtime. > In short, we could easily rewrite the FeaturesServiceImpl#resolve(Feature) > method and hack what we need there: look at bundles and if they have a > blueprint header, add all the blueprint bundles. This would be more robust > than relying on a different bundle to kick in imho. > In the same area, we could also get rid of the OBR resolver and build a new > one using the real OSGi resolver, but that's a separate discussion I think. > > > > > >> Dan >> >> >> >>> >>> regards, Achim >>> >>> >>> 2013/12/5 Johan Edstrom <seij...@gmail.com> >>> >>>> Looking out there, I've seen one customer using DS in the last 3 years >> or >>>> so. >>>> TX, JPA, Spring migrations, Spring only, BP only - sure. >>>> Not to mention NS Handlers and so on. >>>> >>>> It would make a "tiny" karaf viable, less deps and faster startup. >>>> I doubt any developing user would (want to) be able to give up DI. >>>> >>>> /je >>>> >>>> On Dec 5, 2013, at 8:36 AM, Jean-Baptiste Onofré <j...@nanthrax.net> >> wrote: >>>> >>>>> You are right, but we should be careful about the side effects, >> overlap, >>>> etc ;) >>>>> >>>>> On 12/05/2013 04:32 PM, Achim Nierbeck wrote: >>>>>> As far as I understood the idea, it's >>>>>> to use DS for Karaf itself, not to get rid of Blueprint. >>>>>> Just so Karaf itself does have a smaller footprint. >>>>>> @Ioannis did I get this right? >>>>>> >>>>>> regards, Achim >>>>>> >>>>>> >>>>>> 2013/12/5 Jean-Baptiste Onofré <j...@nanthrax.net> >>>>>> >>>>>>> Good point Dan. >>>>>>> >>>>>>> I think you should not hurry about this. >>>>>>> >>>>>>> Ioannis did a good PoC, but I quickly discussed with him and his goal >>>> is >>>>>>> not to "force" the inclusion on Karaf 3.x. >>>>>>> >>>>>>> I think it makes more sense (and it's wise ;)), to act for a plan for >>>>>>> Karaf 4.x. >>>>>>> >>>>>>> Regards >>>>>>> JB >>>>>>> >>>>>>> >>>>>>> On 12/05/2013 04:26 PM, Daniel Kulp wrote: >>>>>>> >>>>>>>> >>>>>>>> On Dec 5, 2013, at 7:31 AM, Guillaume Nodet <gno...@apache.org> >>>> wrote: >>>>>>>> >>>>>>>> I think that can be argued : it's a big internal change, but not >>>> really a >>>>>>>>> user-facing one. If the work is done in a compatible way (which I >>>> think >>>>>>>>> is >>>>>>>>> doable and should be the goal), it can be done in a minor release, >>>> as it >>>>>>>>> would be almost transparent for the user: i.e. a user should still >> be >>>>>>>>> able >>>>>>>>> to deploy his own application without any changes. So I don't >> think >>>> it >>>>>>>>> requires a major version change. >>>>>>>>> >>>>>>>> >>>>>>>> Well, there COULD be an impact…. Right now, some of the >> features.xml >>>>>>>> files out there just assume blueprint is available. For example, >>>> CXF’s >>>>>>>> just assumes blueprint is there. They don’t depend on any >>>> “blueprint” >>>>>>>> feature. Thus, an application (or CXF) that would deploy fine on >>>> the >>>>>>>> minimal container out of the box right now would not with 3.1 (or >>>> whatever) >>>>>>>> where blueprint isn’t there. >>>>>>>> >>>>>>>> We COULD adjust for this by adding a “blueprint” feature right now >>>>>>>> (before 3.0 ships) that is relatively redundant with the “framework” >>>>>>>> feature (or have framework depend on the new blueprint) that the >> other >>>>>>>> features.xml could start depending on. That could also be added >> for >>>> a >>>>>>>> 2.3.x patch as well. >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> Dan >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> 2013/12/5 Jamie G. <jamie.goody...@gmail.com> >>>>>>>>> >>>>>>>>> Just wanted to contribute my 2 cents -- I'd look at a SCR Karaf for >>>> 4.0 >>>>>>>>>> - >>>>>>>>>> removing Blueprint dependencies from the core is too major a >> change >>>> to >>>>>>>>>> try >>>>>>>>>> to introduce it to 2.3.x or 3.0 at this stage. >>>>>>>>>> >>>>>>>>>> --Jamie >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> On Thu, Dec 5, 2013 at 8:10 AM, Jean-Baptiste Onofré < >>>> j...@nanthrax.net >>>>>>>>>> >>>>>>>>>>> wrote: >>>>>>>>>>> >>>>>>>>>> >>>>>>>>>> I think we have to distinguish different things: >>>>>>>>>>> - the learn curve and usage "outside" of Karaf for developers. >> CDI >>>> is >>>>>>>>>>> >>>>>>>>>> like >>>>>>>>>> >>>>>>>>>>> EJB, and other framework. >>>>>>>>>>> - the usage of CDI "inside" an OSGi application or Karaf itself >>>> (or for >>>>>>>>>>> "native" OSGi applications). >>>>>>>>>>> >>>>>>>>>>> The fact that Karaf now supports CDI (via pax-cdi) is as good as >>>>>>>>>>> supporting OpenEJB (in KarafEE), or Spring (in Karaf "natively"). >>>>>>>>>>> >>>>>>>>>>> I would not use OpenEJB in Karaf "itself", nor Spring, nor CDI. >>>>>>>>>>> >>>>>>>>>>> If a developer wants to create a "generic" application (that can >>>> work >>>>>>>>>>> in >>>>>>>>>>> both OSGi or non-OSGi containers), CDI is good. >>>>>>>>>>> If a developer want to create a native OSGi application, I would >>>> use >>>>>>>>>>> natively OSGi "specific" framework (like blueprint). >>>>>>>>>>> >>>>>>>>>>> My 0.02€ >>>>>>>>>>> >>>>>>>>>>> Regards >>>>>>>>>>> JB >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> On 12/05/2013 12:06 PM, Christian Schneider wrote: >>>>>>>>>>> >>>>>>>>>>> Probably you are right. >>>>>>>>>>>> >>>>>>>>>>>> The reason why I came up with CDI is that it has the potential >> to >>>> be >>>>>>>>>>>> the >>>>>>>>>>>> core of user applications. >>>>>>>>>>>> It is fully featured regarding web and persistence if you >> include >>>>>>>>>>>> other >>>>>>>>>>>> JavaEE stuff and also defines a standardized extension >> mechanism. >>>>>>>>>>>> CDI is also well known to JavaEE developers. So my point is/was >>>> that >>>>>>>>>>>> CDI >>>>>>>>>>>> may be the only thing a developer needs to learn regarding >>>> dependency >>>>>>>>>>>> injection. >>>>>>>>>>>> >>>>>>>>>>>> On the other hand a programmer of user applications running on >>>> karaf >>>>>>>>>>>> is >>>>>>>>>>>> quite decoupled from the karaf services and commands. >>>>>>>>>>>> So it is probably not necessary that he uses and understands the >>>> karaf >>>>>>>>>>>> internals. So from this perspective minimum footprint counts >> more >>>> than >>>>>>>>>>>> having only one framework. So from this point of view DS really >> is >>>>>>>>>>>> better than CDI. >>>>>>>>>>>> >>>>>>>>>>>> Another argument supporting this is that while I see most >>>> potential in >>>>>>>>>>>> CDI to take over dependency injection in user space it is far >>>> from the >>>>>>>>>>>> only solution. So there will always be people who use something >>>> else. >>>>>>>>>>>> As >>>>>>>>>>>> karaf needs to support a wide range of frameworks this also >>>> speaks for >>>>>>>>>>>> minimum footprint for karaf's internals. >>>>>>>>>>>> >>>>>>>>>>>> Christian >>>>>>>>>>>> >>>>>>>>>>>> On 05.12.2013 11:49, Guillaume Nodet wrote: >>>>>>>>>>>> >>>>>>>>>>>> 2013/12/5 Christian Schneider <ch...@die-schneider.net> >>>>>>>>>>>>> >>>>>>>>>>>>> Good idea to look into alternatives to blueprint. >>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> The big advantage I see for DS is that it is very light >> weight. >>>> I am >>>>>>>>>>>>>> >>>>>>>>>>>>> not >>>>>>>>>> >>>>>>>>>>> so sure about its long term future though. >>>>>>>>>>>>>> I personally think the future of OSGi dependency injection is >>>> CDI >>>>>>>>>>>>>> like >>>>>>>>>>>>>> pax-cdi + weld or openwebbeans. >>>>>>>>>>>>>> Of course this is not really near term and far from being a >> sure >>>>>>>>>>>>>> bet. >>>>>>>>>>>>>> Still I think if we switch the DI framework we should >>>>>>>>>>>>>> also at least experiment with CDI. I am currently working on a >>>> karaf >>>>>>>>>>>>>> tutorial for CDI. The service injections already work very >> well. >>>>>>>>>>>>>> I am now looking into jpa support. >>>>>>>>>>>>>> >>>>>>>>>>>>>> I disagree. CDI will have the same problems as blueprint, >> it's >>>> an >>>>>>>>>>>>>> >>>>>>>>>>>>> application level injection framework, not focused *primarily* >> on >>>>>>>>>>>>> OSGi. >>>>>>>>>>>>> The lifecycle of CDI beans has to be static, so you have to use >>>>>>>>>>>>> >>>>>>>>>>>> proxies. >>>>>>>>>> >>>>>>>>>>> Blueprint has the exact same problem where the beans lifecycle >> is >>>>>>>>>>>>> bound to >>>>>>>>>>>>> the lifecycle of the container. On the opposite, DS has a >>>> better >>>>>>>>>>>>> lifecycle mechanism for beans which can naturally handle the >> OSGi >>>>>>>>>>>>> dynamism. >>>>>>>>>>>>> >>>>>>>>>>>>> And CDI would be even more heavyweight than blueprint, so I'd >>>> rather >>>>>>>>>>>>> stick >>>>>>>>>>>>> with blueprint than switching to CDI, even if it were ready. >>>>>>>>>>>>> The real benefit of DS is that it has been designed to handle >> the >>>>>>>>>>>>> OSGi >>>>>>>>>>>>> dynamism, so it does less, but it does it better. >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> In any case I think switching the DI framework should be >>>> considered >>>>>>>>>>>>> >>>>>>>>>>>> for >>>>>>>>>> >>>>>>>>>>> karaf 4. So in this case we have a bit of time to experiment. >>>>>>>>>>>>>> >>>>>>>>>>>>>> Christian >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> On 04.12.2013 21:41, Ioannis Canellos wrote: >>>>>>>>>>>>>> >>>>>>>>>>>>>> For anyone curious on how Karaf without Blueprint would look >>>> like, >>>>>>>>>>>>>> >>>>>>>>>>>>>>> here is a karaf branch that is free of blueprint: >>>>>>>>>>>>>>> https://github.com/iocanel/karaf/tree/karaf-light (it's a >>>> fork of >>>>>>>>>>>>>>> >>>>>>>>>>>>>> the >>>>>>>>>> >>>>>>>>>>> karat-2.3.x branch). >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> It is actually a refactored karaf 2.3.x that removes >> blueprint >>>> from >>>>>>>>>>>>>>> all modules (yet still provides blueprint as feaures). Karaf >>>>>>>>>>>>>>> specific >>>>>>>>>>>>>>> blueprint namespace handlers have moved to optional bundles >> so >>>> that >>>>>>>>>>>>>>> they can still be used if needed. >>>>>>>>>>>>>>> Blueprint has been replaced with Felix SCR (including the >> shell >>>>>>>>>>>>>>> commands). Moreover, misc refactorings on features and >> startup >>>>>>>>>>>>>>> >>>>>>>>>>>>>> bundles >>>>>>>>>> >>>>>>>>>>> have been performed in order to reduce the size and the amount of >>>>>>>>>>>>>>> bundles in the minimal distro. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> The result is a minimal distribution that starts 12 bundles >> [1] >>>>>>>>>>>>>>> (out >>>>>>>>>>>>>>> of 37 which were part of karaf 2.3.3 minimal distro). 10 of >>>> those >>>>>>>>>>>>>>> bundle were blueprint bundles and the rest are extra noise. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> My motivation behind this refactoring was: >>>>>>>>>>>>>>> i) I like declarative services more than blueprint. >>>>>>>>>>>>>>> ii) I've been working on projects that are packaged inside >> the >>>>>>>>>>>>>>> karaf >>>>>>>>>>>>>>> minimal distro which would benefit from a smaller size (e.g. >>>>>>>>>>>>>>> jclouds-cli). >>>>>>>>>>>>>>> iii) I wanted to make a karaf distro as flexible as possible. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Please note that my main focus was the minimal distribution >> and >>>>>>>>>>>>>>> also >>>>>>>>>>>>>>> this is not 100% polished. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Enjoy! >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> [1]: The bundle list of the minimal distro: >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> ID State Level Name >>>>>>>>>>>>>>> [ 0] [Active ] [ 0] System Bundle (4.0.3) >>>>>>>>>>>>>>> [ 1] [Active ] [ 5] OPS4J Pax Url - mvn: (1.3.6) >>>>>>>>>>>>>>> [ 2] [Active ] [ 5] OPS4J Pax Url - wrap: (1.3.6) >>>>>>>>>>>>>>> [ 3] [Active ] [ 8] OPS4J Pax Logging - API (1.7.1) >>>>>>>>>>>>>>> [ 4] [Active ] [ 8] OPS4J Pax Logging - Service >>>> (1.7.1) >>>>>>>>>>>>>>> [ 5] [Active ] [ 10] Apache Felix Configuration Admin >>>>>>>>>>>>>>> Service >>>>>>>>>>>>>>> (1.6.0) >>>>>>>>>>>>>>> [ 6] [Active ] [ 11] Apache Felix File Install >> (3.2.6) >>>>>>>>>>>>>>> [ 7] [Active ] [ 13] Apache Felix Declarative >> Services >>>>>>>>>>>>>>> >>>>>>>>>>>>>> (1.6.2) >>>>>>>>>> >>>>>>>>>>> [ 8] [Active ] [ 25] Apache Karaf :: Shell :: Console >>>>>>>>>>>>>>> (2.3.4.SNAPSHOT) >>>>>>>>>>>>>>> [ 9] [Active ] [ 30] Apache Karaf :: Features :: Core >>>>>>>>>>>>>>> (2.3.4.SNAPSHOT) >>>>>>>>>>>>>>> [ 10] [Active ] [ 30] Apache Karaf :: Features :: >>>> Command >>>>>>>>>>>>>>> (2.3.4.SNAPSHOT) >>>>>>>>>>>>>>> [ 11] [Active ] [ 30] Apache Karaf :: Shell :: Log >>>> Commands >>>>>>>>>>>>>>> (2.3.4.SNAPSHOT) >>>>>>>>>>>>>>> [ 12] [Active ] [ 30] Apache Karaf :: Shell :: OSGi >>>> Commands >>>>>>>>>>>>>>> (2.3.4.SNAPSHOT) >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> -- >>>>>>>>>>>>>>> >>>>>>>>>>>>>> Christian Schneider >>>>>>>>>>>>>> http://www.liquid-reality.de >>>>>>>>>>>>>> >>>>>>>>>>>>>> Open Source Architect >>>>>>>>>>>>>> http://www.talend.com >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> -- >>>>>>>>>>> Jean-Baptiste Onofré >>>>>>>>>>> jbono...@apache.org >>>>>>>>>>> http://blog.nanthrax.net >>>>>>>>>>> Talend - http://www.talend.com >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>> >>>>>>>> >>>>>>> -- >>>>>>> Jean-Baptiste Onofré >>>>>>> jbono...@apache.org >>>>>>> http://blog.nanthrax.net >>>>>>> Talend - http://www.talend.com >>>>>>> >>>>>> >>>>>> >>>>>> >>>>> >>>>> -- >>>>> Jean-Baptiste Onofré >>>>> jbono...@apache.org >>>>> http://blog.nanthrax.net >>>>> Talend - http://www.talend.com >>>> >>>> >>> >>> >>> -- >>> >>> Apache Karaf <http://karaf.apache.org/> Committer & PMC >>> OPS4J Pax Web <http://wiki.ops4j.org/display/paxweb/Pax+Web/> Committer >> & >>> Project Lead >>> OPS4J Pax for Vaadin <http://team.ops4j.org/wiki/display/PAXVAADIN/Home> >>> Commiter & Project Lead >>> blog <http://notizblog.nierbeck.de/> >> >> -- >> Daniel Kulp >> dk...@apache.org - http://dankulp.com/blog >> Talend Community Coder - http://coders.talend.com