I think that could make a lot of sense. So winegrower could focus on the
additional aspects like application assembly and producing docker
containers.

Christian

Am Fr., 17. Apr. 2020 um 16:35 Uhr schrieb Thomas Watson <tjw...@gmail.com>:

> Hi JB
>
> Changing subject to start new thread ...
>
> I have taken a look at Winegrower, but have not played around with it yet.
> I am curious if something like Winegrower would be interested in using OSGi
> Connect to back it with an OSGi R8 framework implementation or perhaps use
> Atomos for bundle discovery?
>
> Tom
>
> On Fri, Apr 17, 2020 at 9:15 AM Jean-Baptiste Onofre <j...@nanthrax.net>
> wrote:
>
> > Hi Thomas,
> >
> > Did you take a look on Winegrower ? (Just curious):
> >
> > https://github.com/apache/karaf-winegrower <
> > https://github.com/apache/karaf-winegrower>
> >
> > Regards
> > JB
> >
> > > Le 17 avr. 2020 à 15:47, Thomas Watson <tjw...@gmail.com> a écrit :
> > >
> > > I just want to clarify a bit on Atomos and OSGi Connect.  While OSGi
> > > Connect does allow some more flexibility in the Module Layer of OSGi,
> it
> > is
> > > not entirely getting rid of it.  There is still a resolution, there are
> > > still bundle wirings and the powerful requirement/capability model,
> there
> > > are still bundle events and so on.  What it does allow is loading of
> > > bundles from alternative formats/sources to allow the usage of OSGi
> > > technology in environments not previously possible (such as Graal
> > > native-image).  If you have issues today getting resolution to work
> for a
> > > particular deployment of OSGi bundles then these same resolution issues
> > > will be present when using Atomos.  On the other hand, if you find
> value
> > in
> > > the OSGi development model then you can continue to develop your
> bundles
> > as
> > > you do today but then have the flexibility to deploy your bundles in
> > > environments not previously possible.  The fact that we continue to do
> a
> > > resolution of connect bundles is an effort to make sure all the things
> > your
> > > bundle needs to be functional is available and accessible from your
> > connect
> > > bundle.
> > >
> > > Tom
> > >
> > > On Wed, Apr 15, 2020 at 1:11 AM Grzegorz Grzybek <gr.grzy...@gmail.com
> >
> > > wrote:
> > >
> > >> Hello
> > >>
> > >> First, I'm not good at telling what should be done or providing
> visions
> > for
> > >> something new and revolutionary. I'm experienced with checking what
> > SHOULD
> > >> NOT be done and how to polish/stabilize/cleanup existing things,
> > created by
> > >> much clever people than me.
> > >>
> > >> [...] such as graalvm or quarkus. (I know so little about this that I
> > could
> > >>> be wrong about what these are).
> > >>>
> > >>
> > >> I can provide a little explanation, but I'm not core Quarkus dev. When
> > >> talking about "cloud", the above are very important.
> > >>
> > >> GraalVM is based on HotSpot with these (roughly) differences:
> > >> - through JVMCI interface (https://openjdk.java.net/jeps/243) the
> > normal
> > >> _compiler_ of hotspot (the bytecode -> native code compiler, not the
> > source
> > >> -> bytecode one) is replaced by Graal compiler
> > >> - Graal compiler is written in Java, so it's JITted itself
> > >> - Graal claims to create better native code
> > >> - *Graal allows ahead-of-time compilation*
> > >> - SubstrateVM being part of Graal has `native-image` tool, so you can
> > get
> > >> ELF binary from a Jar
> > >>
> > >> Quarkus leverages the above, and brings many dev-friendly aspects to
> it
> > >> (it's developed by Red Hat and it's kind of similar situation as with
> > >> Kubernetes - OpenShift) - mind that I'm not much experienced with it
> yet
> > >> - brings new tools to the dev toolkit (mostly maven plugins)
> > >> - brings an API to expose the ahead-of-time aspects of Graal -
> > generally,
> > >> you can mark methods/classes of your code (through annotations) as
> > "running
> > >> in build phase"
> > >> - "build phase" is executed before even starting the VM. Imagine
> > >> HIbernate. When you create Hibernate based µservice and you start it,
> > lots
> > >> of time is spent reading XML/annotations and building SessionFactory.
> > With
> > >> Quarkus, this *all can be done at build phase* and you end up with
> > bytecode
> > >> (or in native case - premade memory pages that can simply be mapped to
> > your
> > >> process). Then when your main() starts, you don't have to create
> > >> SessionFactory - you *have it*
> > >>
> > >> Mind that the above is not precise, but should not miss the picture
> (I'm
> > >> for example not sure about the premade memory pages).
> > >>
> > >> OK. Now what should be avoided. In Red Hat Fuse 6 was based only on
> > Karaf.
> > >> Fuse 7 though has more forms and there's a lot about OpenShift. The
> > >> problematic thing was - how to put Karaf into OpenShift.
> > >>
> > >> Think about what is important in "cloud" - you need your pod/container
> > >> start as fast as possible because of all this scaling-to-demand thing.
> > >> Imagine lambda-functions (or whatever it's called nowadays). If a
> > µservice
> > >> would spend 95% of the time building SessionFactory and 5% inserting
> the
> > >> record into database, it'd be crazy.
> > >>
> > >> With OSGi, lots of warmup comes from bundle resolution. I know the
> > >> resolution state can be persisted. But still.
> > >>
> > >> I don't have clear answers or even clear feedback to this thread. I
> feel
> > >> one thing - there are 2 critical and fundamental OSGi aspects:
> > >> - module layer (bundles, manifests, caps-reqs)
> > >> - service layer (service registry)
> > >>
> > >> And while the service layer (supported by e.g., SCR
> > annotations/runtime) is
> > >> *the synonym of µservices* (see blog from 2010 when no one talked
> about
> > it
> > >> yet: https://blog.osgi.org/2010/03/services.html), the module layer
> is
> > >> what
> > >> may be a problem here.
> > >>
> > >> All the effort with felix-connect, Atomos (which I've just checked
> > covers
> > >> SubstrateVM scenarios - I wasn't aware of this) is about making
> > >> module-layer more cloud friendly.
> > >>
> > >> I feel a little confused. Having worked 100% with OSGi for >6 years I
> > found
> > >> the original module layer the most important thing - because of the
> > bundle
> > >> resolution, cap-req matching, versioning, bundle revisions and
> wirings.
> > The
> > >> API and programming model aspect of OSGi was not that important which
> > has
> > >> two consequences:
> > >> 1) I just got used to it that I have access to BundleContext,
> > >> BundleRevision and other API interfaces and e.g., blueprint.xml format
> > >> 2) If not the module layer of OSGi, nothing would keep me using the
> > above
> > >> API
> > >>
> > >> CDI and Spring (annotations, XML) are other, widely used programming
> > (and
> > >> code-architecting) models and I somehow feel that when module layer is
> > >> gone, these models are simply better, more flexible and less
> > constraining
> > >> than SCR or Blueprint.
> > >>
> > >> So when OSGi "adopts" the module layer to the "cloud", turning it into
> > >> flat-classpath deployment, what's the reason to call it OSGi at all?
> > >>
> > >> Please don't get me wrong - I'm not going to sabotage any effort, I
> > want to
> > >> avoid the confusion.
> > >>
> > >> Imagine this
> > >> - we turn module layer into flat classpath
> > >> - we use aries-cdi to allow programming beans/services using CDI
> > >> annotations (JavaEE)
> > >> - we use aries-jaxrs to create WS/REST endpoints using Jax-RS
> > annotations
> > >> (JavaEE)
> > >> - we hide BundleContext.getServiceReference()/getService() APi
> > >>
> > >> Where's the OSGi then?
> > >>
> > >> I don't have answers. As I've noted at the beginning, I'm experienced
> > with
> > >> imagining what could go wrong (though I'm never 100% right) and with
> > making
> > >> things maintainable (pax-logging refactoring and now pax-web
> > refactoring).
> > >>
> > >> From my experience, the biggest problem with OSGi is that when you
> > install
> > >> a lot of feature into Karaf (or in my case Fuse-Karaf) you end up with
> > lots
> > >> of conflicts, double OSGi chains and guava version. One of my
> reactions
> > to
> > >> this problem was etc/org.apache.karaf.features.xml and "new
> blacklisting
> > >> and override mechanism" for Karaf.
> > >> But generally I know the pain and the percentage of real problem cases
> > >> related to bad OSGi resolution.
> > >>
> > >> I think (sorry for the email becoming too long) I want to highlight
> the
> > >> problem - if we focus on µservices too much, imagining it's "set of
> ~20
> > >> bundles" running on flat classpath with aries-cdi + aries-jaxrs then
> > again
> > >> - where's the OSGi? Could you answer a stack overflow question like
> > that?
> > >> And explain why it's better than e.g., Spring Boot?
> > >>
> > >> I hope you didn't get me wrong - I'm not against OSGi, because I like
> > it ;)
> > >>
> > >> regards
> > >> Grzegorz Grzybek
> > >>
> > >> pon., 13 kwi 2020 o 00:45 David Jencks <david.a.jen...@gmail.com>
> > >> napisał(a):
> > >>
> > >>> Inline...
> > >>>
> > >>>> On Apr 12, 2020, at 3:23 PM, Christian Schneider <
> > >>> ch...@die-schneider.net> wrote:
> > >>>>
> > >>>> Hi David,
> > >>>>
> > >>>> actually I did not think about Aries but you are right, it could
> also
> > >> fit
> > >>>> there. If the Felix community thinks Aries is the better place I
> will
> > >>>> propose it there too.
> > >>>> I think for marketing purposes Felix is a lot more known than Aries.
> > >>>> The main purpose I want to achieve is that people consider doing
> > >>>> microservices with OSGi. So I wanted to leverage a well known brand
> > >> that
> > >>>> people associate with OSGi.
> > >>>> Apart from that the only Aries project I use in my experiments is
> > Aries
> > >>>> JAX-RS whiteboard but I use lots of felix bundles.
> > >>>
> > >>> That seems like a conceptual circular dependency with which I am not
> > >>> entirely comfortable.  However, it wouldn’t be blocking for me.
> > >>>
> > >>>>
> > >>>> I agree about the naming. Blueprint was a bad choice. What do you
> > think
> > >>>> about "felix cloud native starter”.
> > >>>
> > >>> Names are hard…. ’native’ to me suggests you will be targeting one
> (or
> > >>> more) of the nontraditional javas (that I am only vaguely acquainted
> > with
> > >>> from watching the Camel list) such as graalvm or quarkus. (I know so
> > >> little
> > >>> about this that I could be wrong about what these are).
> > >>>
> > >>> I do think that this initiative is a great idea! Maybe you could
> start
> > it
> > >>> at GitHub while the location/name/description is hammered out?
> > >>>
> > >>> Thanks,
> > >>> David Jencks
> > >>>
> > >>>>
> > >>>> Christian
> > >>>>
> > >>>>
> > >>>> Am Mo., 13. Apr. 2020 um 00:05 Uhr schrieb David Jencks <
> > >>>> david.a.jen...@gmail.com>:
> > >>>>
> > >>>>> Hi Christian,
> > >>>>>
> > >>>>> I’d like to know why felix is a better location for this than
> aries.
> > >>>>>
> > >>>>> I also think that you should find a description or name other than
> > >>>>> “blueprint” as that term has unfortunately been taken by the osgi
> > >>> blueprint
> > >>>>> spec.  Seeing your subject line I wondered why a blueprint (as in
> > >> spring
> > >>>>> for osgi) project would fit in felix.
> > >>>>>
> > >>>>> Thanks
> > >>>>> David Jencks
> > >>>>>
> > >>>>>> On Apr 12, 2020, at 2:05 PM, Karl Pauls <karlpa...@gmail.com>
> > wrote:
> > >>>>>>
> > >>>>>> Hi Christian,
> > >>>>>>
> > >>>>>> I don't think we are at that point just yet. Given that this is a
> > >>>>>> holiday surrounded weekend for a lot of us (due to the easter
> break)
> > >> I
> > >>>>>> would say we should at least give it a couple of more days to see
> > >>>>>> where the discussion is going.
> > >>>>>>
> > >>>>>> That said, I personally would like to see a little bit more about
> > >> what
> > >>>>>> you had in mind. Is there already some existing body of work or
> are
> > >>>>>> you planning to create something from scratch?
> > >>>>>>
> > >>>>>> regards,
> > >>>>>>
> > >>>>>> Karl
> > >>>>>>
> > >>>>>> On Sun, Apr 12, 2020 at 9:32 PM Christian Schneider
> > >>>>>> <ch...@die-schneider.net> wrote:
> > >>>>>>>
> > >>>>>>> There seems to be some interest in having such a blueprint or
> even
> > >>> more
> > >>>>>>> than one variant at felix.
> > >>>>>>>
> > >>>>>>> Should I start in felix-dev or use a new repo?
> > >>>>>>> I would prefer a new repo as the code will be a multi module
> maven
> > >>>>> project.
> > >>>>>>> I propose a repo name "felix-cloud-native-starter".
> > >>>>>>> We could have and have different blueprints (e.g. CDI and DS)
> > >> inside.
> > >>>>>>> I thought about but disliked to have "blueprint" in the name as
> > >> people
> > >>>>>>> might confuse it with the blueprint dependency injection.
> > >>>>>>>
> > >>>>>>> Christian
> > >>>>>>>
> > >>>>>>> Am So., 12. Apr. 2020 um 11:58 Uhr schrieb Christian Schneider <
> > >>>>>>> ch...@die-schneider.net>:
> > >>>>>>>
> > >>>>>>>> In recent years we saw a big trend towards micro services and
> > >> cloud.
> > >>>>>>>> Lately people discovered though that such services are often
> made
> > >> too
> > >>>>> fine
> > >>>>>>>> grained.
> > >>>>>>>> The newest trend goes to building bigger micro services on the
> > >> level
> > >>> of
> > >>>>>>>> domain driven design bounded contexts.
> > >>>>>>>>
> > >>>>>>>> Especially for these services OSGi is a very interesting
> platform
> > >> as
> > >>>>> they
> > >>>>>>>> need more internal structure than the more fine grained
> services.
> > >>>>>>>> Unfortunately it is quite hard to build a cloud native service
> in
> > >>> OSGi
> > >>>>>>>> from scratch.
> > >>>>>>>>
> > >>>>>>>> So I would like to offer a blueprint for cloud native micro
> > >> services
> > >>>>>>>> inside the felix community. The goal is to provide all parts of
> a
> > >>> cloud
> > >>>>>>>> native
> > >>>>>>>> system that are usually needed, like:
> > >>>>>>>>
> > >>>>>>>> * Declarative services as dependency injection
> > >>>>>>>> * Aries Jaxrs Whiteboard for REST
> > >>>>>>>> * Dropwizard metrics exported as Prometheus metrics
> > >>>>>>>> * Swagger
> > >>>>>>>> * Halbrowser
> > >>>>>>>> * Felix healthchecks
> > >>>>>>>> * Configuration using OSGi configurator + Environment variables
> > >>> plugin
> > >>>>>>>> * Logging to console
> > >>>>>>>> * Final application is provided as a runnable jar
> > >>>>>>>> * Example docker build files
> > >>>>>>>> * Example kubernetes yaml
> > >>>>>>>>
> > >>>>>>>> What do you think?
> > >>>>>>>>
> > >>>>>>>> Christian
> > >>>>>>>>
> > >>>>>>>> --
> > >>>>>>>> --
> > >>>>>>>> Christian Schneider
> > >>>>>>>> http://www.liquid-reality.de
> > >>>>>>>>
> > >>>>>>>> Computer Scientist
> > >>>>>>>> http://www.adobe.com
> > >>>>>>>>
> > >>>>>>>>
> > >>>>>>>
> > >>>>>>> --
> > >>>>>>> --
> > >>>>>>> Christian Schneider
> > >>>>>>> http://www.liquid-reality.de
> > >>>>>>>
> > >>>>>>> Computer Scientist
> > >>>>>>> http://www.adobe.com
> > >>>>>>
> > >>>>>>
> > >>>>>>
> > >>>>>> --
> > >>>>>> Karl Pauls
> > >>>>>> karlpa...@gmail.com
> > >>>>>
> > >>>>>
> > >>>>
> > >>>> --
> > >>>> --
> > >>>> Christian Schneider
> > >>>> http://www.liquid-reality.de
> > >>>>
> > >>>> Computer Scientist
> > >>>> http://www.adobe.com
> > >>>
> > >>>
> > >>
> >
> >
>


-- 
-- 
Christian Schneider
http://www.liquid-reality.de

Computer Scientist
http://www.adobe.com

Reply via email to