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 >>> >>> >>