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