Hi Tom,

Basically, Winegrower idea is to bring the OSGi programming model (activator, 
service, etc) with a "flat" class loader.

So, Winegrower is scanning the provided jar gathering in a single classloader.

I’m adding new examples to show use cases.

I’m open to any new ideas/features ;)

Regards
JB

> Le 17 avr. 2020 à 16:35, Thomas Watson <tjw...@gmail.com> a écrit :
> 
> 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
>>>>> 
>>>>> 
>>>> 
>> 
>> 

Reply via email to