You might want to educate yourself on DS before dismissing it. david jencks
On Dec 6, 2013, at 2:05 PM, Łukasz Dywicki <l...@code-house.org> wrote: > Yes Joed, > You got the point I wanted to reflect. DS and SCR is still dependency which, > for sure, may be optional. Switching to poorer replacement from feature rich > blueprint will bring bigger cost than moving to plain osgi. For me it will > look like stopping in half of the way. > Most of us knows well core spec plus something about blueprint. Very few from > us knows anything more about SCR, except the fact, that it's exists. This > kind of change may decrese number of maintaners to these who already know > SCR. From drawbacks of another DI I may throw that it requires, if I'm not > wrong, additional bundle header which lists all components. Also integration > with maven bundle plugin seems missing. Ie for blueprint we get imports for > free and validation, because when this plugin fails to read XML prevents > build from passing. > > The idea of extender, shared earlier in this topic, which install necessary > features is very good. It might be used in similar way as deployers or > feature resolvers to preprocess bundles before installation to automatically > enable certain features. > > Łukasz Dywicki > -- > Code-House > http://code-house.org > > Dnia 6 gru 2013 o godz. 21:12 Johan Edstrom <seij...@gmail.com> napisał(a): > >> 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 >>