That's true, and that's why it's opinionated :) The purpose is really to match 90% of the use cases. I think some features are interesting but require a lot of effort/maintenance for only a limited use.
Regards JB On Thu, Jun 20, 2024 at 9:47 AM Grzegorz Grzybek <gr.grzy...@gmail.com> wrote: > > Thanks for clarification JB! > > Just one more comment about: > > Tomcat for the Karaf Web service yes (not strong opinion here, it > > would be Jetty). And as state earlier, only Servlet/Filter service > > registration package will be supported. > > > That's quite arbitrary distinction TBH :) You know - we rarely write > servlets these days and rather have some kind of dispatcher servlet (yes, > this is spring...) which delegates to different views/controllers/handlers > etc. > However the point is that even if you DO write servlets, then: > > - servlets have access to ServletContext > - ServletContext gives you access to context attributes > - context attributes are either taken from web.xml (<context-param>) or > are setup in ServletContextListeners > - ServletContextListeners are 3rd "big thing" (next to servlets and > filters) that constitute web applications > - so you have to allow them too > - but ServletContextListeners allow you to dynamically register > additional servlets (that's what most SCIs do too - JSF, JSP, ...) > dynamically with dynamic mapping > - also servlets and filters may be protected - in web.xml you can have > <login-config> and <security-constraint> elements... > > I could continue (I've already mentioned JSPs, SCIs, ...) getting closer > and closer to full Servlet API specification... > > The point is that if you want servlets + filters only, you'd need full > implementation based on particular runtime (whether Tomcat, Jetty or > Undertow) to deal with its specifics (like Jetty's ServletContextHandler, > Tomcat's StandardContext or Undertow's DeploymentInfo). You also have to > deal with contexts (implementations of jakarta.servlet.ServletContext > interface) to separate servlets. Though Felix-Http has one "dispatcher > servlet" registered in single context and moves "context" concept from the > runtime to this servlet... > > Anyway - a lot of work ;) > > regards > Grzegorz Grzybek > > czw., 20 cze 2024 o 08:51 Jean-Baptiste Onofré <j...@nanthrax.net> napisał(a): > > > Hi Grzegorz > > > > Thanks for your message, it's highly appreciated. > > > > See my comments inline: > > > > > 1. What exactly are "Karaf services"? Are these OSGi services? > > (registered > > > with BundleContext.registerService(iface, object, properties)?) If not > > then > > > what are the aspects that make them "services" - discoverability, > > > interface, registration method (through annotations and build time > > > processing? /META-INF/services? other?)? > > > > It's OSGi services. > > > > > > > > 2. Removing Pax + hiding OSGi seems complementary, but is OSGi going to > > be > > > implementation detail of Karaf 5? or just deployment method (Minho / > > Felix > > > Atomos?) If you say that pax-web will still be available, it means it > > needs > > > full OSGi runtime (Felix, Equinox) underneath. Mind that the biggest > > > obstacle when refactoring Pax Web 7 into Pax Web 8 was this entire > > > "discoverability" mechanism, which allows you to scan > > > bundles/fragments/wires looking for annotated web elements, SCIs and > > > web-fragment.xml files... So if you hide OSGi under "Karaf services" and > > at > > > the same time keep OSGi for those who want it, it'd be (sorry for > > analogy) > > > like hiding an elephant under a napkin... :) > > > > Fair comment. The purpose of Karaf Services is to simplify and focus > > only on what matters for the users in the Karaf context. > > For instance, why not just supporting Servlet OSGi services listening, > > not need to support annotation web elements or web-fragments.xml. > > If a user wants these features, then it will use Pax Web. > > But, if the user just need a simple webcontainer for servlet and Karaf > > webconsole, then Karaf Web service would be enough. > > > > > > > > 3. Pax URL and Pax Web accept configuration via ConfigAdmin. So again - > > you > > > can't remove, you have to hide it (see #2). > > > > I'm not too concerned about ConfigAdmin: it will stay there. > > > > > > > > 4. Also for Pax Web - it required a lot of effort to make it > > "restartable". > > > I mean even Tomcat/Jetty/Undertow itself keep each webapp in separate > > > classloader, so you can kind of get rid of the webapp (undeploy) if you > > > like. Pax Web pushes this to the extreme with whiteboard, where you can > > > have filters from different bundles filtering access to servlets from > > > different bundles and sending events to listeners from yet different > > > bundles and everything is (should be) classloader-safe. Hinding it under > > > non-hierarchical classloader may not be possible... > > > > Same here: restartable could be Pax Web feature. > > > > > > > > 5. You've mentioned "main focus on Tomcat", but roughly speaking, Tomcat > > > operates on entire webapps. It's only Pax Web (or Felix HTTP with Jetty) > > > that make it possible to operate on the level of single > > > servlet/filter/listener/SCI/... - how could such "Karaf web service for > > > Tomcat" look like if you, say, wanted to register a servlet + filter? How > > > would you package and register such servlet + filter? > > > > Tomcat for the Karaf Web service yes (not strong opinion here, it > > would be Jetty). And as state earlier, only Servlet/Filter service > > registration package will be supported. > > > > The purpose is not to remove Pax * projects, it's more to have very > > simple "native" Karaf services. > > > > Regards > > JB > > > > > > > > Not that I don't approve the plans (I like how you think about the > > future), > > > or maybe simply my mind went numb after working for few weeks with > > > rollup.js and typescript, but I don't feel like I can provide any > > > constructive feedback besides asking for clarification... > > > > > > kind regards > > > Grzegorz Grzybek > > > > > > wt., 11 cze 2024 o 16:20 Matt Pavlovich <mattr...@gmail.com> napisał(a): > > > > > > > Hi JB- > > > > > > > > Makes sense, I figured I’d make the pitch for the pax-* merger in that > > > > there is a lot of good use cases, stability and performance scenarios > > > > already handled there. > > > > > > > > I look forward to assisting with the new karaf-* services. > > > > > > > > Thanks, > > > > Matt Pavlovich > > > > > > > > > On Jun 11, 2024, at 3:45 AM, Jean-Baptiste Onofré <j...@nanthrax.net> > > > > wrote: > > > > > > > > > > Hi all, > > > > > > > > > > I would like to clarify the PAX * questions. It would be still > > > > > possible to use PAX * projects in Karaf 5.x, via the features (as > > > > > today), but optional (not boot features anymore). > > > > > > > > > > As an alternative, we will have opinionated Karaf services features. > > > > > > > > > > For instance, pax-web will still be available (if people want to use > > > > > it), but Karaf will provide a web feature (as alternative). > > > > > > > > > > For URL and logging, Karaf will provide simplified mvn and wrap url > > > > > handlers, and opinionated Karaf logging service (only supporting > > slf4j > > > > > and log4j2). If users still want to use Pax URL and Pax Logging, they > > > > > will still be able to do so via custom distribution. > > > > > > > > > > The reasons to provide Karaf opinionated services are: > > > > > 1. Karaf services are governed by the ASF rule, as Karaf, which is > > not > > > > > the case for Pax > > > > > 2. Pax * projects are great as "generic" OSGi services. On the other > > > > > hand, it brings some complexity to be abstract enough for OSGi use > > > > > cases and compliant with the OSGi specs. Karaf services will really > > be > > > > > Karaf centric, not necessarily respecting the OSGi specs, but > > focusing > > > > > on users' needs. > > > > > 3. Facilitate Karaf tooling around to improve the developer > > experience. > > > > > > > > > > Regards > > > > > JB > > > > > > > > > > On Tue, Jun 11, 2024 at 8:48 AM Francois Papon > > > > > <francois.pa...@openobject.fr> wrote: > > > > >> > > > > >> Hi Serge, > > > > >> > > > > >> You can already build a static Karaf custom definition ready to > > start > > > > >> without downloading all the dependencies at startup and create a > > docker > > > > >> image with that. > > > > >> > > > > >> The most complex part with GraalVM in our case is all the 3rd party > > > > >> dependencies and the OSGi framework. I'm afraid that it will not be > > > > >> possible to be GraalVM compatible. > > > > >> > > > > >> I'm not sure to understand your thoughts about "full OSGi for dev", > > what > > > > >> to you mean? > > > > >> > > > > >> regards, > > > > >> > > > > >> François > > > > >> > > > > >> On 08/06/2024 08:31, Serge Huber wrote: > > > > >>> Hi François, > > > > >>> > > > > >>> I understand not everything has to be native, but for example for > > > > Apache > > > > >>> Unomi the default deployment is now mostly in containers, and > > > > extensions > > > > >>> are usually deployed mostly in development environments and then > > > > statically > > > > >>> packaged for production deployments. > > > > >>> > > > > >>> Having the option to then use Karaf 5 to leverage the benefits of > > > > GraalVM > > > > >>> Native Image would be very interesting I believe. I think other > > > > >>> applications might be interested in these types of scenarios: full > > > > OSGi for > > > > >>> development, maybe pre-production and testing, and possibility to > > have > > > > a > > > > >>> more « static » deployment for production that could be compatible > > with > > > > >>> native image. > > > > >>> > > > > >>> WDYT ? > > > > >>> > > > > >>> Regards, > > > > >>> Serge… > > > > >>> > > > > >>> Le jeu. 6 juin 2024 à 11:09, Francois Papon < > > > > francois.pa...@openobject.fr> > > > > >>> a écrit : > > > > >>> > > > > >>>> Hi Serge, > > > > >>>> > > > > >>>> I don't think there is a benefit about GraalVM for long running > > > > process > > > > >>>> like Karaf. All java things doesn't need to be GraalVM native :) > > > > >>>> > > > > >>>> Another problem is that the community edition of GraalVM doesn't > > bring > > > > >>>> all the improvement as the commercial one (GC, PGO...) > > > > >>>> > > > > >>>> regards, > > > > >>>> > > > > >>>> François > > > > >>>> > > > > >>>> On 05/06/2024 15:13, Serge Huber wrote: > > > > >>>>> Hi JB thanks for the proposal, > > > > >>>>> > > > > >>>>> Sounds great to me. For me Karaf 5 should really be a natural > > fit for > > > > >>>>> containerized deployments, making it super easy to package > > > > applications > > > > >>>>> that can then easily be scaled up (and down), so making it more > > > > >>>> predictable > > > > >>>>> and possibly more static can be a good thing. > > > > >>>>> > > > > >>>>> Is a goal also to make it compatible with GraalVM Native Image ? > > > > >>>>> > > > > >>>>> Best regards, > > > > >>>>> Serge. > > > > >>>>> > > > > >>>>> On Tue, Jun 4, 2024 at 11:18 AM Jean-Baptiste Onofré < > > > > j...@nanthrax.net> > > > > >>>>> wrote: > > > > >>>>> > > > > >>>>>> Hi folks, > > > > >>>>>> > > > > >>>>>> I think it's time to prepare a new milestone for the project :) > > > > >>>>>> > > > > >>>>>> Short term (and first step) is to prepare the coming release: > > > > >>>>>> > > > > >>>>>> 1. Apache Karaf 4.4.7 will be submitted to vote next week. It > > will > > > > >>>> include: > > > > >>>>>> * Improvement on the spring features repository (providing > > both > > > > >>>>>> Spring 5 and Spring 6 features) > > > > >>>>>> * Dependencies updates and minor fixes found on the 4.4.6 > > > > release > > > > >>>>>> > > > > >>>>>> 2. Apache Karaf 4.5.0 will be submitted to vote by the end of > > the > > > > >>>>>> month. It will include (mainly): > > > > >>>>>> * New spec features repository with Jakarta specs > > > > >>>>>> * Bigger fixes for 4.5.0 > > > > >>>>>> > > > > >>>>>> 3. Apache Karaf 5.0.0 > > > > >>>>>> That's the big milestone, and I propose to have big and > > > > opinionated > > > > >>>>>> changes here. OSGi is an implementation detail of the runtime, > > still > > > > >>>>>> exposed to the experimented users. > > > > >>>>>> Be opinionated means that I propose to remove PAX * > > dependencies, > > > > >>>>>> and provide Karaf services instead, very simple and opinionated > > (for > > > > >>>>>> instance, instead of PAX Web, a simple Tomcat based service, > > instead > > > > >>>>>> of PAX Logging, a simple slf4j/log4j only service, Pax Exam > > replaced > > > > >>>>>> by JUnit 5 simple extensions, etc). > > > > >>>>>> Another goal of Karaf 5 is to bring new tooling to improve > > dev > > > > >>>>>> experience (annotation based distributions generation, etc). > > > > >>>>>> Also, users will be able to smoothly deploy Spring powered or > > > > >>>>>> Servlet applications without knowing/leveraging OSGi > > (especially the > > > > >>>>>> import/export pattern). > > > > >>>>>> > > > > >>>>>> Thoughts ? > > > > >>>>>> > > > > >>>>>> Regards > > > > >>>>>> JB > > > > >>>>>> > > > > > > > > > >