Hi JB,

my point is that you are a veteran on different technologies, that you know
> ;)
>

and that's the reason I already know where other people are struggling
with.
I do a lot of consulting to people that either don't care or are not
interested in their day-job.
They just need to get that stuff done.
Therefore it needs to be easy as taking a dump.


>
> But anyway, veteran or not, it would be very helpful to have tooling. I
> would love to have a karaf-boot tool that allows me to quickly create my
> artifacts, without taking a look on 3 or 4 different projects/technologies,
> plugins, etc/
>
> Just my €0.02 (I'm in € now ;)).
>
>
I'm with you that we need better tooling, but actually we should focus on
the build-chain first.
Make it good, make it awesome.
After that let's take a look on where we find some more room for
improvement.
That's why I think if we talk of *-boot we should focus on having easy
inclusion of different dependencies.
Cause not everybody want's to start with a REST-Microservice, but might be
interested in Database first.
That's why we need different BOMs that stick together as lego-bricks.

regards, Achim



> Regards
> JB
>
>
> On 09/11/2015 08:47 AM, Achim Nierbeck wrote:
>
>> Hi JB,
>>
>> I'm very sorry but I have to completely disagree on this.
>> Let me point this out inline
>>
>>
>> Generally speaking, I think we are not the best ones to evaluate this
>>> because we are involved in the "low level", and so we might not see
>>> values
>>> there.
>>>
>>>
>>> This might be true for core developers that only work on Karaf, it
>> certainly doesn't affect me, as my day-job requires me to work with
>> everything else but OSGi. Therefore I think I'm in the very convenient
>> position to say: "I know what is missing and I know where the benefits of
>> Spring-Boot are"
>> Working on Karaf and Pax Web is just a mere hobby for me, as it doesn't
>> pay
>> my bills.
>>
>>
>> It would be great to have "new developers" feedback (it's where I started
>>> for karaf-boot actually). That's the key point: think when you are very
>>> new
>>> to Karaf and you have to start.
>>>
>>>
>>> see above
>>
>>
>> Anyway, my comments inline:
>>>
>>>
>>> On 09/10/2015 11:58 PM, Achim Nierbeck wrote:
>>>
>>> Hi
>>>>
>>>> after reading this thread about two times, I finally understood the
>>>> intention and the confusion in the thread.
>>>> Let me try to summarize this to start some more confusion :-D
>>>>
>>>> Initial Problem:
>>>> - learning OSGi has a steep learning curve
>>>> - initial setup for a new OSGi project needs a lot of infrastructural
>>>> "thingis"
>>>> - doing the "microservice" dance is hard as it requires to much "extras"
>>>> to
>>>> have a simple REST service
>>>> -- including infrastructure
>>>> - Spring boot brings everything needed in one place in one "application"
>>>> with just annotations
>>>>
>>>> These are the "problems" we know of and if I did get it right are the
>>>> intention for the Karaf-Boot project.
>>>> Now let me try to summarize the idea on how to solve that.
>>>>
>>>>   From a simple Class file with some annotation generate
>>>> - a OSGi service, including OSGi wiring via Blueprint - via an extra
>>>> maven
>>>> plugin
>>>> - get rid of all those infrastructural "add-ons" for the first OSGi
>>>> bundle
>>>> by having a easy to use Parent-POM
>>>> - do the microservice - dance by wrapping everything together including
>>>> CXF
>>>> in a "one-size-fits-all" executable jar, which is a wonna-be-spring-boot
>>>> jar but made of karaf
>>>>
>>>> Now some thoughts of mine ...
>>>> I somehow fear you try to mix several problems and try to solve all of
>>>> them
>>>> with one go.
>>>> Let's try to analyze those initial problems separately and we might
>>>> find a
>>>> valid approach.
>>>>
>>>> Learning curve of OSGi:
>>>> right now we have different approaches to make it easier with OSGi.
>>>> - Blueprint
>>>> - DS
>>>> - CDI
>>>> - iPojo
>>>> - Felix DependencyManager
>>>>
>>>> Blueprint just tastes to much like spring xml and actually isn't state
>>>> of
>>>> the art anymore. You'll get a lot of negative feedback regarding the
>>>> "old-school" xml. It's biggest plus is the Enterprise "features" like
>>>> JPA
>>>> and JTA, which isn't covered by any other technique right now (unless
>>>> you
>>>> look at non Apache Hosted OSS projects like Amdatu).
>>>>
>>>> Declarative Services, especially the latest R6 looks rather promising,
>>>> especially in conjunction with MetaType. But we have specialized
>>>> annotations which again don't actually help with the learning curve.
>>>> Another downside is the missing JPA and JTA Enterprise features.
>>>>
>>>> CDI, we have the Pax-CDI project which has been on the way of being the
>>>> reference implementation of the OSGi-CDI spec. Well, we all know how
>>>> that
>>>> turned out. One of its biggest benefits is definitely the easy
>>>> transition
>>>> because of the CDI annotation which help a lot with wiring inside a
>>>> bundle
>>>> and also with extra annotations (@OsgiService) with OSGi-Services. CDI
>>>> though still lacks runtime OSGi annotation support for JPA and JTA if we
>>>> are somehow capable to compensate that, we'll have the required EE stack
>>>> at
>>>> hand.
>>>>
>>>> iPojo ... sorry never used
>>>>
>>>> Dependency Manager is a bit more low-level compared to DS but seems to
>>>> have
>>>> a nice DSL for easy wiring of Services.
>>>>
>>>> So do we really need another Build-Time-Annotation which generates
>>>> another
>>>> "wiring" plan which is used during runtime (exactly what DS already
>>>> does)?
>>>> Right now I'm not convinced of this. Instead of another generation I
>>>> would
>>>> prefer to use CDI as it is known to work in classic Spring/EE world and
>>>> OSGi. Instead we should focus on bringing the full support of Enterprise
>>>> style annotations to the OSGi world.
>>>>
>>>>
>>> I agree. With the current annotations (whatever the ones we use, CDI, DS,
>>> etc):
>>> - they are very low level, and doesn't provide "key turn" annotations
>>> - they don't provide enterprise ready annotations
>>> - depending of the annotations, it's spread on different dependencies and
>>> packages (not easy for the user)
>>>
>>> Basically, a new developer starts on Karaf, it could be lost: a fair
>>> question is what technology should I use.
>>>
>>>
>>> Use CDI it's a standard annotation and can equally be used for Spring or
>> in
>> a modern Enterprise Server.
>>
>>
>>
>> We bring an important flexibility, which is awesome for the advanced
>>> users.
>>>
>>> But this flexibility means it's not easy to start and choose something: I
>>> have to learn, prepare my pom.xml accordingly, etc.
>>>
>>> The purpose of karaf-boot is not to create new technology, it's just to
>>> leverage the existing ones, hide it to the developer, and provide a quick
>>> and easy starter.
>>>
>>>
>>>
>> great, and this is the point we need to focus on! Make it easier to
>> develop
>> a Bundle to run on Karaf.
>> That's why I might need to elaborate a bit more about my idea of BOMs.
>> Take for example the spring-boot-log4j-starter bom. If you use that one
>> all
>> is included to work with log4j logging, one dependency in your POM,
>> no need to have a Parent.
>> Same for REST, depending on what people would like to use it can be a
>> karaf-boot-cxf-jaxrs-starter bom, which contains the dependencies for
>> working with cxf rest including the feature definition that needs to be
>> used by karaf.
>> Here we need something "new", if a feature is present in the POM and we
>> have the karaf-maven-plugin in use (the only valid point for a Parent POM
>> to have that as default available) this feature must be used inside the
>> generated feature as dependency and the karaf-maven-plugin should generate
>> according to the requirements the dependencies from that feature.
>>
>>
>>
>>>
>>>> Initial Setup for a new OSGi Bundle Project
>>>>
>>>> Instead of a parent POM I think it would be much more beneficial to work
>>>> with a BOM (Bill of Material) for easier development, especially when
>>>> working with std. CDI annotations plus some extra PAX-CDI ones. Maven
>>>> Archetype are actually good enough to create an initial structure for a
>>>> maven project.
>>>> The big benefit of the spring-boot approach is to actually have a bunch
>>>> of
>>>> different BOMs that can be used to add certain functionalities to the
>>>> project, aka spring-boot-*-starter.
>>>> To start a karaf-boot I think we should first try to have a karaf:run
>>>> available as maven plugin.
>>>>
>>>>
>>> I already have karaf:run on one of my branches, but the purpose is
>>> different. Let's keep the starter out of the picture for now.
>>>
>>> A BoM can be materialize as a parent-pom, it's the purpose of the
>>> karaf-boot-parent.
>>>
>>> Maven archetype is good, but it's require to execute the archetype,
>>> update
>>> the project definition before being able to build. Of course, it makes
>>> sense to provide it.
>>>
>>> But, the big advantage of karaf-boot-parent, it's again easy and key
>>> turn:
>>> I'm a new developer, I just inherit from karaf-boot-parent, I just define
>>> groupId, artifactId, version, I'm ready to go.
>>>
>>
>>
>> I'm sorry but this is a too big cannon you use to shoot on sparrows.
>> Think minimalistic and modular. With the karaf-boot-*-starter boms we
>> would
>> achieve something far more modular and closer to what people actually
>> need.
>> And forgive me for comparing it with spring-boot again, the big benefit of
>> it is actually those *starter boms.
>>
>>
>>
>>>
>>>
>>>
>>>> The microservice dance
>>>>
>>>> actually it's just add a rest-service on top of a OSGi service, that's
>>>> all
>>>> that is needed in Karaf.
>>>> Right now I'm not in favor of any certain framework. CXF seems a bit
>>>> bloated but is known to work, but requires blueprint.
>>>> Jersey, I've seen that to be working with "plain" OSGi. A bit of
>>>> polishing
>>>> and it should be quite easy to use, especially with CDI at hand.
>>>>
>>>> But it needs more to dance the microservice dance, you need "small"
>>>> containers ... which is quite contrary to the way Karaf and OSGi in
>>>> general
>>>> is working with services.
>>>> But this is the point I think the karaf profiles come in handy. You
>>>> don't
>>>> need a full blown Karaf, just a basic infrastructure with your own
>>>> Bundle,
>>>> might as well ignore the shell. In the end dump that into a docker
>>>> container and if you need to do a bugfix do it the "docker" - way.
>>>>
>>>>
>>> It's another point, but @rest and karaf-boot-starter address this, using
>>> profiles and karaf minimal distribution.
>>>
>>
>>
>> here we are inline, a minimalistic distribution based on profiles should
>> do.
>>
>>
>>
>>>
>>>
>>>
>>>> spring-boot brings it all in one go
>>>>
>>>> karaf-boot should do the same, but actually I fear we do more then
>>>> needed.
>>>> For a new Project setup I'd rather would like to see different
>>>> karaf-starter-* BOMs and a karaf:run maven plugin
>>>> Some more docuementation for the profiles of Karaf could also be helpful
>>>> :D
>>>> to build minimalistic karaf instances runnable in docker containers.
>>>> Regarding the karaf:run it might be interesting to "re-activate" the
>>>> pax:run maven plugin to run nicely with a karaf instance, or use it as
>>>> foundation for the karaf:run maven plugin.
>>>>
>>>>
>>> See my previous comment.
>>>
>>>
>>>
>>>>
>>>> So in the end, do we really need all this?
>>>> I'm not so sure, but we surely need an easier "to use" approach.
>>>> Therefore we should first focus on having easier setup of bundle
>>>> development.
>>>> -> karaf-boot-starter-* BOMs should take care of that
>>>> -> karaf:run should make it easier to have a running container
>>>>
>>>> Do we need new annotations? I can't see that yet.
>>>> Instead we should/could focus on the following:
>>>> a) make sure DS also is capable to work with JPA/JTA and some other
>>>> enterprise annotations
>>>> b) make sure CDI works with runtime JPA/JTA annotation smoothly
>>>> c) provide more demos and archetypes with OSGi and CDI annotations
>>>>
>>>>
>>> You talk about JPA/JTA and I agree. But don't forget high level
>>> annotations like @jpa(provider = "openjpa", dataSource = "my"), @rest,
>>> @soap, @jms, etc.
>>>
>>>
>> all those "high" level annotations are already solve.
>> Take Jersey or CXF you can use either to solve the @rest or @soap
>> annotations. We don't need extras here
>> We should thoroughly look through the ones that are already available with
>> CDI and make sure we don't re-invent the wheel wrong here.
>>
>>
>>
>>> That's why abstract, high level annotations could make sense.
>>>
>>>
>>
>> only for the ones missing, yes then it might be helpful, but to my
>> understanding this should be the last Story in the backlog to have a
>> quick-and-easy to build environment.
>>
>>
>> regards, Achim
>>
>>
>>
>>
>>
>>> Regards
>>> JB
>>>
>>>
>>>
>>>
>>>> regards, Achim
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> 2015-09-10 20:41 GMT+02:00 Jean-Baptiste Onofré <[email protected]>:
>>>>
>>>> Thanks Milen,
>>>>
>>>>>
>>>>> it's an open place to discussion. We just share standpoints and
>>>>> opinions:
>>>>> that's the key part !!!
>>>>>
>>>>> My goal is to give more traction on Karaf by providing easier
>>>>>
>>>>> We all provide valid points, but I think we are not the most setted to
>>>>> argue as we are deeply involved in OSGi and Karaf. The karaf-boot proto
>>>>> came when discussing with new Karaf users, coming from "outside" of
>>>>> OSGi,
>>>>> or people that decided to use spring-boot (even if they like a lot
>>>>> Karaf),
>>>>> just because it's easier. It's hardly frustrating for us as we just
>>>>> need
>>>>> some tooling to provide even more traction. On the container side, I
>>>>> think
>>>>> Karaf is already great, and answers all needs. The part where we should
>>>>> improve what we deliver is around developer tooling: easier, faster,
>>>>> key
>>>>> turn.
>>>>>
>>>>> If karaf-boot will be a success, I don't know (who knows ? ;)). But
>>>>> anyway, it brings points, questions, and identify some missings in the
>>>>> current picture.
>>>>>
>>>>> My $0.01 ;)
>>>>>
>>>>> Regards
>>>>> JB
>>>>>
>>>>>
>>>>> On 09/10/2015 08:02 PM, Milen Dyankov wrote:
>>>>>
>>>>> Well I was just referring to your example but I get your point. Which
>>>>>
>>>>>> reminds me of EnRoute <http://enroute.osgi.org/> project which
>>>>>> despite
>>>>>> the
>>>>>> big names and the most popular OSGI build tool behind it, doesn't seem
>>>>>> to
>>>>>> get as much traction as I expected!
>>>>>>
>>>>>> That said, I really admire your enthusiasm and wish KarafBoot can be
>>>>>> more
>>>>>> successful that that. I'm not trying to discourage you! Just it seams
>>>>>> what
>>>>>> you are after is something that other people have tried already with
>>>>>> questionable success.
>>>>>>
>>>>>> Best,
>>>>>> Milen
>>>>>>
>>>>>>
>>>>>>
>>>>>> On Thu, Sep 10, 2015 at 7:22 PM, Jean-Baptiste Onofré <
>>>>>> [email protected]>
>>>>>> wrote:
>>>>>>
>>>>>> And how to you deal with jpa, jta, rest, etc with SCR annotations ?
>>>>>>
>>>>>>
>>>>>>> Regards
>>>>>>> JB
>>>>>>>
>>>>>>>
>>>>>>> On 09/10/2015 07:16 PM, Milen Dyankov wrote:
>>>>>>>
>>>>>>> So correct me if I'm wrong but if I get the sample you provided in
>>>>>>> the
>>>>>>>
>>>>>>> first mail and replace:
>>>>>>>>      - the parent pom with "maven-bundle-plugin"
>>>>>>>>      - @Bean with @Component
>>>>>>>>      - @Init with @Activate
>>>>>>>>
>>>>>>>> wouldn't that have the exact same end result? I mean it obviously
>>>>>>>> differ
>>>>>>>> in
>>>>>>>> terms of what gets generated (Blueprint vs DS) but form end user
>>>>>>>> perspective there is no difference, right?
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> On Thu, Sep 10, 2015 at 6:55 PM, Jean-Baptiste Onofré <
>>>>>>>> [email protected]>
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>> Hey Milen,
>>>>>>>>
>>>>>>>>
>>>>>>>> Actually, there's too part:
>>>>>>>>> 1/ karaf-boot-starter will do the ready to start artifact,
>>>>>>>>> embedding
>>>>>>>>> karaf, but it's another point
>>>>>>>>> 2/ the value of karaf-boot annotations and plugin is first to
>>>>>>>>> simplify
>>>>>>>>> the
>>>>>>>>> bundle/artifact ready to be deploy-able into Karaf (generate the
>>>>>>>>> "plumbing"
>>>>>>>>> easily for developers).
>>>>>>>>>
>>>>>>>>> Regards
>>>>>>>>> JB
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On 09/10/2015 06:50 PM, Milen Dyankov wrote:
>>>>>>>>>
>>>>>>>>> " ... that you deploy in Karaf ..."
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> OK may be I misunderstood the concept. I thought the result is
>>>>>>>>>> standalone
>>>>>>>>>> executable JAR, thus my comments above. If on the other hand I
>>>>>>>>>> need
>>>>>>>>>> to
>>>>>>>>>> install Karaf and then deploy my services into it I really don't
>>>>>>>>>> see
>>>>>>>>>> how
>>>>>>>>>> it
>>>>>>>>>> differs form what people are doing now?
>>>>>>>>>>
>>>>>>>>>> I'm sorry if I'm not making much sense. I didn't have the time to
>>>>>>>>>> experiment with your code and samples so may be I'm missing an
>>>>>>>>>> important
>>>>>>>>>> peace here.
>>>>>>>>>>
>>>>>>>>>> Best,
>>>>>>>>>> Milen
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On Thu, Sep 10, 2015 at 6:27 PM, Jean-Baptiste Onofré <
>>>>>>>>>> [email protected]>
>>>>>>>>>> wrote:
>>>>>>>>>>
>>>>>>>>>> Allow me to disagree: Karaf is a perfect container for
>>>>>>>>>> microservices.
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Image to create a microservice (using karaf-boot) that you deploy
>>>>>>>>>> in
>>>>>>>>>>
>>>>>>>>>>> Karaf
>>>>>>>>>>> and use such service in another microservice, all wired with OSGi
>>>>>>>>>>> service
>>>>>>>>>>> and Karaf: we leverage OSGi/Karaf as a microservices container.
>>>>>>>>>>>
>>>>>>>>>>> But even without talking of microservices, new developers to
>>>>>>>>>>> Karaf
>>>>>>>>>>> (and
>>>>>>>>>>> OSGi generally speaking) are frustrated by the effort on non
>>>>>>>>>>> business
>>>>>>>>>>> code
>>>>>>>>>>> to do (I have to write an Activator, or a descriptor, etc, etc).
>>>>>>>>>>> So, a tooling to simplify this is still a valid addition IMHO.
>>>>>>>>>>>
>>>>>>>>>>> Regards
>>>>>>>>>>> JB
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> On 09/10/2015 06:23 PM, Milen Dyankov wrote:
>>>>>>>>>>>
>>>>>>>>>>> I might be wrong but I think the whole success of SpringBoot
>>>>>>>>>>> (apart
>>>>>>>>>>> from
>>>>>>>>>>>
>>>>>>>>>>> having the "Spring" in it) is the microservices hype!
>>>>>>>>>>>
>>>>>>>>>>> it's quick and easy but most usecases follow the "create one (or
>>>>>>>>>>>> very
>>>>>>>>>>>> few)
>>>>>>>>>>>> service(s), pack them as single executable and access them via
>>>>>>>>>>>> REST"
>>>>>>>>>>>> pattern. We can obviously do the same with OSGi and Karaf in
>>>>>>>>>>>> particular
>>>>>>>>>>>> but
>>>>>>>>>>>> personally I think this makes absolutely no sense. In such
>>>>>>>>>>>> approach
>>>>>>>>>>>> one
>>>>>>>>>>>> in
>>>>>>>>>>>> not benefiting form OSGi almost at all. Honestly speaking I
>>>>>>>>>>>> would
>>>>>>>>>>>> argue
>>>>>>>>>>>> that if one does not understand how OSGi service layer works
>>>>>>>>>>>> (regardless
>>>>>>>>>>>> of
>>>>>>>>>>>> the framework used to register/access services) it makes no
>>>>>>>>>>>> sense
>>>>>>>>>>>> to
>>>>>>>>>>>> use
>>>>>>>>>>>> OSGi at all.
>>>>>>>>>>>>
>>>>>>>>>>>> Just my 2 cents!
>>>>>>>>>>>>
>>>>>>>>>>>> Regards,
>>>>>>>>>>>> Milen
>>>>>>>>>>>>
>>>>>>>>>>>> On Thu, Sep 10, 2015 at 6:08 PM, Christian Schneider <
>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>
>>>>>>>>>>>> I already created such a maven plugin in aries. The user can use
>>>>>>>>>>>> standard
>>>>>>>>>>>>
>>>>>>>>>>>> CDI and JEE annotations and the result is blueprint xml.
>>>>>>>>>>>>
>>>>>>>>>>>> How is the new approach different / better?
>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> Why should it be good for the developer to move away from well
>>>>>>>>>>>>> defined
>>>>>>>>>>>>> standard annotations and use custom annotations that bind him
>>>>>>>>>>>>> to
>>>>>>>>>>>>> karaf?
>>>>>>>>>>>>> I mean if this is created by the spring guys I know they want
>>>>>>>>>>>>> to
>>>>>>>>>>>>> catch
>>>>>>>>>>>>> people by perceived simplicity and then make sure to make it
>>>>>>>>>>>>> difficult
>>>>>>>>>>>>> to
>>>>>>>>>>>>> switch. As an open source comminity I do not know why we should
>>>>>>>>>>>>> do
>>>>>>>>>>>>> something like this.
>>>>>>>>>>>>> Abstracting away from frameworks just means you create another
>>>>>>>>>>>>> layer
>>>>>>>>>>>>> that
>>>>>>>>>>>>> people then also have to learn. There were some cases in the
>>>>>>>>>>>>> past
>>>>>>>>>>>>> where
>>>>>>>>>>>>> this make sense because the underlying frameworks sucked (like
>>>>>>>>>>>>> JEE
>>>>>>>>>>>>> 2).
>>>>>>>>>>>>> This
>>>>>>>>>>>>> is not the case today though I think.
>>>>>>>>>>>>>
>>>>>>>>>>>>> What kind of use case do you have in mind? Every project starts
>>>>>>>>>>>>> small
>>>>>>>>>>>>> but
>>>>>>>>>>>>> it needs to be able to grow then. You can not start with custom
>>>>>>>>>>>>> annoations
>>>>>>>>>>>>> and then tell people to later switch to something else when the
>>>>>>>>>>>>> project grows. I think it makes more sense to make it easier
>>>>>>>>>>>>> for
>>>>>>>>>>>>> people
>>>>>>>>>>>>> to
>>>>>>>>>>>>> use the standard annoations and use the right dependencies.
>>>>>>>>>>>>>
>>>>>>>>>>>>> If we simply provide a tooling that makes it easy to start with
>>>>>>>>>>>>> SCR
>>>>>>>>>>>>> or
>>>>>>>>>>>>> blueprint we provide much more value for people as thery can
>>>>>>>>>>>>> then
>>>>>>>>>>>>> grow
>>>>>>>>>>>>> without any breaking changes.
>>>>>>>>>>>>>
>>>>>>>>>>>>> Christian
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> Am 10.09.2015 um 17:46 schrieb Jean-Baptiste Onofré:
>>>>>>>>>>>>>
>>>>>>>>>>>>> Because all these annotations are runtime: here we talk about
>>>>>>>>>>>>> tooling
>>>>>>>>>>>>> at
>>>>>>>>>>>>>
>>>>>>>>>>>>> build time.
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> More over, the purpose is to provide more high level
>>>>>>>>>>>>>> annotations,
>>>>>>>>>>>>>> which
>>>>>>>>>>>>>> abstract actual annotations/frameworks that we can use under
>>>>>>>>>>>>>> hood.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> The purpose of centralizing all in karaf-boot is to have a
>>>>>>>>>>>>>> central
>>>>>>>>>>>>>> project: the developer just use karaf-boot, it doesn't really
>>>>>>>>>>>>>> know
>>>>>>>>>>>>>> what
>>>>>>>>>>>>>> technologies are involved behind the scene.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> For instance, in spring-boot, they use activemq, jersey, etc,
>>>>>>>>>>>>>> but
>>>>>>>>>>>>>> all
>>>>>>>>>>>>>> from spring-boot. The developers don't know a rest service use
>>>>>>>>>>>>>> jersey
>>>>>>>>>>>>>> for
>>>>>>>>>>>>>> instance, it's completely abstracted.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Again the purpose is to simplify life for developers:
>>>>>>>>>>>>>> splitting
>>>>>>>>>>>>>> the
>>>>>>>>>>>>>> annotations in different projects introduces complexity (at
>>>>>>>>>>>>>> least
>>>>>>>>>>>>>> to
>>>>>>>>>>>>>> find
>>>>>>>>>>>>>> the dependencies and core import packages).
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> If an advanced developer wants to use CDI, SCR, etc, he can of
>>>>>>>>>>>>>> course.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Regards
>>>>>>>>>>>>>> JB
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> On 09/10/2015 05:40 PM, Christian Schneider wrote:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> I am not really enthusiastic about duplicating functionality
>>>>>>>>>>>>>> of
>>>>>>>>>>>>>> cxf
>>>>>>>>>>>>>> or
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> aries. Aries supports a very nice approach for injections, jpa
>>>>>>>>>>>>>> and
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> jta.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Why should it make sense to recreate that?
>>>>>>>>>>>>>>> Aries blueprint also has annoation support even in two
>>>>>>>>>>>>>>> flavors
>>>>>>>>>>>>>>> (CDI,
>>>>>>>>>>>>>>> custom). How does the new approach interact with this?
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Instead I propose we create support for such annotations in
>>>>>>>>>>>>>>> the
>>>>>>>>>>>>>>> respective projects (where they are missing) and concentrate
>>>>>>>>>>>>>>> on
>>>>>>>>>>>>>>> karaf
>>>>>>>>>>>>>>> as
>>>>>>>>>>>>>>> a container not an application development framework.
>>>>>>>>>>>>>>> By leveraging the existing frameworks we profit from their
>>>>>>>>>>>>>>> own
>>>>>>>>>>>>>>> development teams. Whatever we recreate will have to be
>>>>>>>>>>>>>>> developed
>>>>>>>>>>>>>>> by
>>>>>>>>>>>>>>> the
>>>>>>>>>>>>>>> very few resources of the karaf team.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Christian
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Am 10.09.2015 um 16:53 schrieb Jean-Baptiste Onofré:
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Hi Guillaume,
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> thanks for your feedback.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> I fully agree about providing more high level annotations
>>>>>>>>>>>>>>>> (it's
>>>>>>>>>>>>>>>> what I
>>>>>>>>>>>>>>>> do with @jpa, @rest, @soap, @jta annotations).
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> I agree that the current annotations are too low level, and
>>>>>>>>>>>>>>>> blueprint
>>>>>>>>>>>>>>>> "oriented". I just move forward a bit with the current
>>>>>>>>>>>>>>>> codebase,
>>>>>>>>>>>>>>>> just
>>>>>>>>>>>>>>>> to illustrate karaf-boot usage in the samples.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> But again, you are right, and I will create a new
>>>>>>>>>>>>>>>> annotations
>>>>>>>>>>>>>>>> set.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> One of the purpose of karaf-boot annotations is to
>>>>>>>>>>>>>>>> "abstract"
>>>>>>>>>>>>>>>> the
>>>>>>>>>>>>>>>> actual code/artifact that we generate. So, if now we
>>>>>>>>>>>>>>>> generate
>>>>>>>>>>>>>>>> blueprint, without changing the karaf-boot annotations, we
>>>>>>>>>>>>>>>> will
>>>>>>>>>>>>>>>> be
>>>>>>>>>>>>>>>> able to generate something else (why not SCR, etc).
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> I agree with a BOM, but I think it's interesting to provide
>>>>>>>>>>>>>>>> both:
>>>>>>>>>>>>>>>> - providing a ready to use parent pom allows developers to
>>>>>>>>>>>>>>>> create
>>>>>>>>>>>>>>>> a
>>>>>>>>>>>>>>>> very simple pom.xml where all plugins and dependencies are
>>>>>>>>>>>>>>>> already
>>>>>>>>>>>>>>>> defined
>>>>>>>>>>>>>>>> - for more advanced devs, they can create their own pom.xml
>>>>>>>>>>>>>>>> starting
>>>>>>>>>>>>>>>> from the BOM or archetype.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Thanks again for your feedback !
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Regards
>>>>>>>>>>>>>>>> JB
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> On 09/10/2015 04:44 PM, Guillaume Nodet wrote:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> I like the idea.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> For the annotations, we need to keep really high level.  The
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> annotations in
>>>>>>>>>>>>>>>>> the code base right now are much too close to blueprint.
>>>>>>>>>>>>>>>>> I think we need to grab a small enough subset so that the
>>>>>>>>>>>>>>>>> annotations
>>>>>>>>>>>>>>>>> are
>>>>>>>>>>>>>>>>> easy to understand for beginners and without any
>>>>>>>>>>>>>>>>> ambiguities,
>>>>>>>>>>>>>>>>> even
>>>>>>>>>>>>>>>>> at
>>>>>>>>>>>>>>>>> the
>>>>>>>>>>>>>>>>> cost of features.
>>>>>>>>>>>>>>>>> For example, I think we should restrict to constructor
>>>>>>>>>>>>>>>>> injection,
>>>>>>>>>>>>>>>>> so
>>>>>>>>>>>>>>>>> that
>>>>>>>>>>>>>>>>> we don't have any bind / rebind / init methods.  We simply
>>>>>>>>>>>>>>>>> need
>>>>>>>>>>>>>>>>> an
>>>>>>>>>>>>>>>>> optional
>>>>>>>>>>>>>>>>> @Destroy.  In case the dependencies change at runtime,
>>>>>>>>>>>>>>>>> simply
>>>>>>>>>>>>>>>>> destroy
>>>>>>>>>>>>>>>>> the
>>>>>>>>>>>>>>>>> bean / service and recreate it the dependencies are still
>>>>>>>>>>>>>>>>> met
>>>>>>>>>>>>>>>>> after
>>>>>>>>>>>>>>>>> the
>>>>>>>>>>>>>>>>> change.
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> If blueprint is to be hidden completely, we may find a
>>>>>>>>>>>>>>>>> better
>>>>>>>>>>>>>>>>> alternative
>>>>>>>>>>>>>>>>> in SCR or even Felix Dependency Manager, but it does not
>>>>>>>>>>>>>>>>> matter
>>>>>>>>>>>>>>>>> too
>>>>>>>>>>>>>>>>> much
>>>>>>>>>>>>>>>>> for now.
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> I agree with the idea of using a BOM instead of a parent if
>>>>>>>>>>>>>>>>> possible.  I'm
>>>>>>>>>>>>>>>>> not very familiar, but this is less invasive.
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> The real problems will come with the support of higher
>>>>>>>>>>>>>>>>> level
>>>>>>>>>>>>>>>>> annotations
>>>>>>>>>>>>>>>>> for JAXRS, JPA, etc...
>>>>>>>>>>>>>>>>> Not really sure how to handle those yet...
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> 2015-09-09 16:32 GMT+02:00 Jean-Baptiste Onofré <
>>>>>>>>>>>>>>>>> [email protected]
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> :
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> Hi all,
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> I worked on a prototype about Karaf Boot.
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> Let me give you some backgrounds and discuss about that all
>>>>>>>>>>>>>>>>>> together.
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>         Why Karaf Boot ?
>>>>>>>>>>>>>>>>>>         ----------------
>>>>>>>>>>>>>>>>>> When you develop artifacts (bundles) to be deployed in
>>>>>>>>>>>>>>>>>> Karaf,
>>>>>>>>>>>>>>>>>> you
>>>>>>>>>>>>>>>>>> can see
>>>>>>>>>>>>>>>>>> that the actual time that you spend on your business code
>>>>>>>>>>>>>>>>>> is
>>>>>>>>>>>>>>>>>> finally
>>>>>>>>>>>>>>>>>> largely less important that all the plumbing effort that
>>>>>>>>>>>>>>>>>> you
>>>>>>>>>>>>>>>>>> have
>>>>>>>>>>>>>>>>>> to
>>>>>>>>>>>>>>>>>> do
>>>>>>>>>>>>>>>>>> (writing OSGi Activator, or blueprint/scr descriptor,
>>>>>>>>>>>>>>>>>> etc).
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> It means that your "go to market" is longer, and we should
>>>>>>>>>>>>>>>>>> provide
>>>>>>>>>>>>>>>>>> something that allows you to focus on your code.
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> Even if SCR annotations is a very good step forward, some
>>>>>>>>>>>>>>>>>> use
>>>>>>>>>>>>>>>>>> cases
>>>>>>>>>>>>>>>>>> are
>>>>>>>>>>>>>>>>>> not so easy to do (JPA, JTA for instance).
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> And anyway, you have to prepare your pom.xml with
>>>>>>>>>>>>>>>>>> different
>>>>>>>>>>>>>>>>>> plugin
>>>>>>>>>>>>>>>>>> and
>>>>>>>>>>>>>>>>>> dependency.
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> Moreover, when you have your artifacts, you have to
>>>>>>>>>>>>>>>>>> prepare
>>>>>>>>>>>>>>>>>> Karaf
>>>>>>>>>>>>>>>>>> container, and deploy those artifacts there. Even if it's
>>>>>>>>>>>>>>>>>> "container"
>>>>>>>>>>>>>>>>>> approach is the most important for me, we can give even
>>>>>>>>>>>>>>>>>> more
>>>>>>>>>>>>>>>>>> flexibility by
>>>>>>>>>>>>>>>>>> providing a way to embed and prepare Karaf in a ready to
>>>>>>>>>>>>>>>>>> execute
>>>>>>>>>>>>>>>>>> jar/artifact.
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>         What is Karaf Boot ?
>>>>>>>>>>>>>>>>>>         --------------------
>>>>>>>>>>>>>>>>>> Karaf Boot provides four components:
>>>>>>>>>>>>>>>>>> * karaf-boot-parent is the Maven parent pom that your
>>>>>>>>>>>>>>>>>> project
>>>>>>>>>>>>>>>>>> just
>>>>>>>>>>>>>>>>>> inherit: that's all ! All plugins, dependencies, etc are
>>>>>>>>>>>>>>>>>> described
>>>>>>>>>>>>>>>>>> in this
>>>>>>>>>>>>>>>>>> parent, you even don't have to define packaging as bundle,
>>>>>>>>>>>>>>>>>> standard
>>>>>>>>>>>>>>>>>> jar is
>>>>>>>>>>>>>>>>>> fine.
>>>>>>>>>>>>>>>>>> * karaf-boot (coming with karaf-boot-parent) provides
>>>>>>>>>>>>>>>>>> annotations
>>>>>>>>>>>>>>>>>> that you
>>>>>>>>>>>>>>>>>> use directly in your business code (like @Bean, @Service,
>>>>>>>>>>>>>>>>>> @Reference,
>>>>>>>>>>>>>>>>>> @Inject, etc): again, your focus on your code, karaf-boot
>>>>>>>>>>>>>>>>>> deals
>>>>>>>>>>>>>>>>>> with
>>>>>>>>>>>>>>>>>> the
>>>>>>>>>>>>>>>>>> plumbing.
>>>>>>>>>>>>>>>>>> * karaf-boot-maven-plugin (coming with karaf-boot-parent)
>>>>>>>>>>>>>>>>>> scan
>>>>>>>>>>>>>>>>>> the
>>>>>>>>>>>>>>>>>> classes
>>>>>>>>>>>>>>>>>> and generate a blueprint XML. For now, I'm using blueprint
>>>>>>>>>>>>>>>>>> generation
>>>>>>>>>>>>>>>>>> (because we can cover lot of use cases, for instance, I
>>>>>>>>>>>>>>>>>> plan
>>>>>>>>>>>>>>>>>> to
>>>>>>>>>>>>>>>>>> provide
>>>>>>>>>>>>>>>>>> @rest annotation that will generate blueprint XML with cxf
>>>>>>>>>>>>>>>>>> jaxrs
>>>>>>>>>>>>>>>>>> server,
>>>>>>>>>>>>>>>>>> etc).
>>>>>>>>>>>>>>>>>> * karaf-boot-starter is the module providing a convenient
>>>>>>>>>>>>>>>>>> way
>>>>>>>>>>>>>>>>>> to
>>>>>>>>>>>>>>>>>> embed,
>>>>>>>>>>>>>>>>>> configure and bootstrap Karaf.
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> Just to illustrate this, let's take a look on the
>>>>>>>>>>>>>>>>>> karaf-boot-sample-simple.
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> The pom.xml is really simple:
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> <?xml version="1.0" encoding="UTF-8"?>
>>>>>>>>>>>>>>>>>> <project xmlns="http://maven.apache.org/POM/4.0.0";
>>>>>>>>>>>>>>>>>> xmlns:xsi="
>>>>>>>>>>>>>>>>>> http://www.w3.org/2001/XMLSchema-instance";
>>>>>>>>>>>>>>>>>> xsi:schemaLocation="
>>>>>>>>>>>>>>>>>> http://maven.apache.org/POM/4.0.0
>>>>>>>>>>>>>>>>>> http://maven.apache.org/xsd/maven-4.0.0.xsd";>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>            <modelVersion>4.0.0</modelVersion>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>            <parent>
>>>>>>>>>>>>>>>>>> <groupId>org.apache.karaf.boot</groupId>
>>>>>>>>>>>>>>>>>> <artifactId>karaf-boot-parent</artifactId>
>>>>>>>>>>>>>>>>>>                <version>1.0.0-SNAPSHOT</version>
>>>>>>>>>>>>>>>>>>            </parent>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> <artifactId>karaf-boot-sample-simple</artifactId>
>>>>>>>>>>>>>>>>>>            <version>1.0.0-SNAPSHOT</version>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> </project>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> You can see, the only thing that the developer has to do:
>>>>>>>>>>>>>>>>>> define
>>>>>>>>>>>>>>>>>> karaf-boot-parent as parent pom. That's all.
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> Now, in the code, you have just one bean that we want to
>>>>>>>>>>>>>>>>>> run:
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> package org.apache.karaf.boot.sample.simple;
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> import org.apache.karaf.boot.Bean;
>>>>>>>>>>>>>>>>>> import org.apache.karaf.boot.Init;
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> @Bean(id = "simple-bean")
>>>>>>>>>>>>>>>>>> public class SimpleBean {
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>            @Init
>>>>>>>>>>>>>>>>>>            public void simple() {
>>>>>>>>>>>>>>>>>>                System.out.println("Hello world");
>>>>>>>>>>>>>>>>>>            }
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> }
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> You can see the @Bean and @Init karaf-boot annotations.
>>>>>>>>>>>>>>>>>> The
>>>>>>>>>>>>>>>>>> karaf-boot-maven-plugin will generate the blueprint
>>>>>>>>>>>>>>>>>> descriptor
>>>>>>>>>>>>>>>>>> using
>>>>>>>>>>>>>>>>>> this.
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>         Current Status
>>>>>>>>>>>>>>>>>>         --------------
>>>>>>>>>>>>>>>>>> I pushed Karaf Boot structure there:
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> https://github.com/jbonofre/karaf-boot
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> It's a mix of rewrapping of existing code (from aries,
>>>>>>>>>>>>>>>>>> pax-exam,
>>>>>>>>>>>>>>>>>> etc) and
>>>>>>>>>>>>>>>>>> additions.
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> I created the annotations, I'm now working on the
>>>>>>>>>>>>>>>>>> karaf-boot-maven-plugin
>>>>>>>>>>>>>>>>>> based on Christian's work in aries (I'm actually scanning
>>>>>>>>>>>>>>>>>> the
>>>>>>>>>>>>>>>>>> boot
>>>>>>>>>>>>>>>>>> annotations now, and generating the XML).
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> I will push new changes later today and tomorrow.
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>         Open Questions
>>>>>>>>>>>>>>>>>>         ---------------
>>>>>>>>>>>>>>>>>> * For now, I would prefer to be 'artifacts' and
>>>>>>>>>>>>>>>>>> 'resources'
>>>>>>>>>>>>>>>>>> generator: I
>>>>>>>>>>>>>>>>>> think it's better than to depend to a feature running in
>>>>>>>>>>>>>>>>>> Karaf,
>>>>>>>>>>>>>>>>>> but
>>>>>>>>>>>>>>>>>> it's
>>>>>>>>>>>>>>>>>> open to discussion.
>>>>>>>>>>>>>>>>>> * I'm now generating blueprint. Probably native OSGi or
>>>>>>>>>>>>>>>>>> scr
>>>>>>>>>>>>>>>>>> generation can
>>>>>>>>>>>>>>>>>> make sense.
>>>>>>>>>>>>>>>>>> * I'm generating bundles: thanks to the Karaf4 features
>>>>>>>>>>>>>>>>>> resolver,
>>>>>>>>>>>>>>>>>> as
>>>>>>>>>>>>>>>>>> the
>>>>>>>>>>>>>>>>>> bundles provide requirements/capabilities metadata, I
>>>>>>>>>>>>>>>>>> think
>>>>>>>>>>>>>>>>>> it's a
>>>>>>>>>>>>>>>>>> good
>>>>>>>>>>>>>>>>>> start. However, maybe it's worth to be able to create
>>>>>>>>>>>>>>>>>> features,
>>>>>>>>>>>>>>>>>> kar,
>>>>>>>>>>>>>>>>>> profile.
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> Thoughts ?
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> Thanks,
>>>>>>>>>>>>>>>>>> Regards
>>>>>>>>>>>>>>>>>> JB
>>>>>>>>>>>>>>>>>> --
>>>>>>>>>>>>>>>>>> Jean-Baptiste Onofré
>>>>>>>>>>>>>>>>>> [email protected]
>>>>>>>>>>>>>>>>>> http://blog.nanthrax.net
>>>>>>>>>>>>>>>>>> Talend - http://www.talend.com
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> --
>>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>> Jean-Baptiste Onofré
>>>>>>>>>>>>
>>>>>>>>>>>> [email protected]
>>>>>>>>>>> http://blog.nanthrax.net
>>>>>>>>>>> Talend - http://www.talend.com
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> --
>>>>>>>>>>
>>>>>>>>>> Jean-Baptiste Onofré
>>>>>>>>>>
>>>>>>>>> [email protected]
>>>>>>>>> http://blog.nanthrax.net
>>>>>>>>> Talend - http://www.talend.com
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>> --
>>>>>>>>
>>>>>>>> Jean-Baptiste Onofré
>>>>>>> [email protected]
>>>>>>> http://blog.nanthrax.net
>>>>>>> Talend - http://www.talend.com
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>> --
>>>>>>
>>>>> Jean-Baptiste Onofré
>>>>> [email protected]
>>>>> http://blog.nanthrax.net
>>>>> Talend - http://www.talend.com
>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>> --
>>> Jean-Baptiste Onofré
>>> [email protected]
>>> http://blog.nanthrax.net
>>> Talend - http://www.talend.com
>>>
>>>
>>
>>
>>
> --
> Jean-Baptiste Onofré
> [email protected]
> http://blog.nanthrax.net
> Talend - http://www.talend.com
>
>


-- 

Apache Member
Apache Karaf <http://karaf.apache.org/> Committer & PMC
OPS4J Pax Web <http://wiki.ops4j.org/display/paxweb/Pax+Web/> Committer &
Project Lead
blog <http://notizblog.nierbeck.de/>
Co-Author of Apache Karaf Cookbook <http://bit.ly/1ps9rkS>

Software Architect / Project Manager / Scrum Master

Reply via email to