I'm of the mind that the Service Loader Mediator spec (implemented by
SpiFly) is an excellent (if not the only reasonable one) approach to handle
exactly the case that jetty uses it for which is to allow them to remain
plain JARs while also being usable OSGi bundles. The fact that it relies on
requirements and capabilities means that resolution just works, not only at
runtime, but also at build time.

We should be so lucky if other big projects would follow jetty's lead. All
we need is to convince jetty to shift their bundle versions to the left
(drop the leading segment) and pretty much all would be well.

Sincerely,
- Ray

On Sat, Oct 20, 2018, 20:33 Eric Norman, <eric.d.nor...@gmail.com> wrote:

> David,
>
> I don't believe that the OSGi support in jetty is just an afterthought and
> those modules are used in many high profile OSGi environments, such as the
> eclipse IDE.  In fact, Jetty is hosted by the eclipse foundation who is all
> about OSGi.
>
> I think a reasonable explanation of the usage of ServiceLoader in their
> codebase is that jetty modules are not exclusively for OSGi so they are
> designed to work with or without OSGi involved.
>
> If I recall correctly, the ServiceLoader code was not used extensively in
> the jetty code.  I think usage was only in a handful of places and most had
> reasonable defaults if no ServiceLoader services were found which is why it
> hasn't been a problem until now.
>
> My experience with the jetty project is that they are reasonable people who
> are open to a patch to make it work without the spi-fly shim.
>
> But even if the jetty code is refactored and improved to no long require
> spi-fly, I still don't think a fat bundle packaging of jetty is
> appropriate.
>
> But that's just my opinion, and I am perfectly content using my own fork
> for my projects if the community isn't interested.
>
> Regards,
> -Eric
>
>
> On Sat, Oct 20, 2018 at 3:24 PM David Jencks <david.a.jen...@gmail.com>
> wrote:
>
> > Jetty may be modular, and each of their jars may include OSGI metadata so
> > they are bundles, but the use of service loader (implied I think by the
> > discussion of spi-fly; I haven’t looked at jetty myself) carries an
> > extremely strong presumption that the jetty modularity is not very
> > compatible with osgi modularity.  I’d regard the jetty modularity as very
> > compatible with osgi if they provided “service” wiring that could use
> > either the OSGI registry directly or service loader directly.  Relying on
> > service loader only has a bias towards everything being in the same class
> > loader, so it’s more likely to work correctly with a fat bundle than with
> > spi-fly.
> >
> > These are rather abstract or philosophical arguments, so they may or may
> > not match the reality of using jetty in any particular way.
> >
> > david jencks
> >
> > > On Oct 20, 2018, at 1:20 PM, Eric Norman <eric.d.nor...@gmail.com>
> > wrote:
> > >
> > > Carsten and others,
> > >
> > > Well, if the newer jetty version of the jetty artifacts causes the code
> > to
> > > not compile then perhaps that is an issue you would want to raise with
> > the
> > > jetty folks to not make incompatible changes to the public APIs without
> > > incrementing the major version numbers of their exports?
> > >
> > > For me, the claim that the new jetty version breaks something isn't a
> > > compelling reason do continue on as before as the same argument could
> be
> > > made for any third party artifact.  If the third party releases a new
> > > version that doesn't work with your bundles then it seems to me that
> the
> > > proper remedy would be to raise the issue with the third party, declare
> > the
> > > known issue in your own documentation and/or declare a more specific
> > > version range for the bundle/package imports in the affected consumer
> > > bundles that you have control over.  Perhaps, the felix http bundle
> > > documentation could have some statement that says which versions of
> jetty
> > > were tested and certified against if that would make you more
> comfortable
> > > about the de-coupling.
> > >
> > > It seems to me that the jetty project has made a lot of efforts to
> make a
> > > modular system where you can chose which parts to include and they have
> > > made sure all their modules are OSGi bundles.  Going back to jamming it
> > all
> > > the jetty code into a fat bundle for the convenience of some demo-ware
> > > seems to be the wrong direction and I'm surprised that OSGi based
> project
> > > like felix would still be promoting such things.  Also, this fat way of
> > > packaging jetty isn't tested by jetty proper, so who can say what side
> > > effects may be lurking?
> > >
> > > The eclipse equinox impl of the http service works in the "thin" way
> > like I
> > > have proposed and looks to me like a better solution.  Is there much
> > > collaboration between equinox and felix on the parts that seem to be
> > common
> > > to both?
> > >
> > > Regarding your suggestions:  I still don't see a good solution with
> your
> > > hybrid approach either since the same problems I raised in the July
> > message
> > > thread about the activation timing remain.  For example. the bundle
> > > activator where jetty is started synchronously happens before the
> spifly
> > > bundle extender makes the ServiceLoader stuff available so any
> > > ServiceLoader configuration embedded inside of the felix.http bundle
> > would
> > > not be available yet when jetty is starting up.
> > >
> > > Plus I'm not sure I like the impression that http/2 support would have
> > the
> > > appearance of being a second-class feature when wider adoption of
> http/2
> > > would be better for everyone.
> > >
> > > Regards,
> > > -Eric
> > >
> > > On Sat, Oct 20, 2018 at 5:25 AM Carsten Ziegeler <cziege...@apache.org
> >
> > > wrote:
> > >
> > >> Let's focus for a minute on having jetty as separate bundles. This
> will
> > >> potentially create a lot of problems as people will use the wrong
> jetty
> > >> version. I just recently updated from on 9.4.x version to the next
> > >> 9.4.(x+1) version and our code was not even compiling anymore.
> Therefore
> > >> ultimately our code is tied to a very specific version of Jetty.
> > >> From that PoV it's dangerous to not bundle jetty.
> > >> My suggestion is still:
> > >> - we bundle Jetty as today but add the missing service loader files.
> > >> This bundle has code to support http2 if the additional stuff is
> > installed.
> > >> - for people needing http2 they install a number of more bundles and
> > >> voila everything works.
> > >>
> > >> Unless this plan is not possible, I don't see a reason why we
> shouldn't
> > >> go there?
> > >>
> > >> Carsten
> > >>
> > >>
> > >> Am 19.10.2018 um 17:34 schrieb Raymond Auge:
> > >>>
> > >>>
> > >>> On Fri, Oct 19, 2018 at 11:11 AM Carsten Ziegeler <
> > cziege...@apache.org
> > >>> <mailto:cziege...@apache.org>> wrote:
> > >>>
> > >>>
> > >>>
> > >>>    Am 19.10.2018 um 17:06 schrieb Raymond Auge:
> > >>>> On Fri, Oct 19, 2018 at 10:55 AM Carsten Ziegeler
> > >>>    <cziege...@apache.org <mailto:cziege...@apache.org>>
> > >>>> wrote:
> > >>>>
> > >>>>> Well, you are assuming that people are using a tool which does
> > >> the
> > >>>>> resolving. Today you can simply download the Apache Felix Jetty
> > >>>    bundle,
> > >>>>> install and enjoy. No tooling required. With such a proposal
> > >> we're
> > >>>>> breaking this experience
> > >>>>>
> > >>>>
> > >>>> Can I get a vote as to how many people actually get this
> > >> experience?
> > >>>>
> > >>>> I feel this only works when you already know _exactly_ what you
> > >>>    want, which
> > >>>> I do not feel is the norm.
> > >>>
> > >>>    Not sure if I can follow here, people know that they want the
> Jetty
> > >>>    module, download it, install it and have a party. We've constantly
> > >>>    seeing people in our mailing lists saying that.
> > >>>
> > >>>
> > >>> I understand this. Perhaps we should simply offer an additional
> > >>> packaging which relies on the jetty BOM as a dependency. The benefit
> > >>> being we don't have to wait for Jetty to provide something special,
> > >>> since they already provide the BOM for exactly this purpose.
> > >>>
> > >>> I feel most people do not go to the Felix website and download jars
> > >>> except as part of experiments. It is my own experience that people
> use
> > a
> > >>> build tool which relies on dependencies stored in maven central
> (using
> > >>> maven or gradle or some other build tool).
> > >>>
> > >>> In that way, and because felix.http.jetty is a implementation, they
> > >>> don't care about how the transitive dependencies are handled or
> > >>> provided; as long as the parts they need get into their deployment.
> > >>>
> > >>> - Ray
> > >>>
> > >>>
> > >>>    While resolver based tooling is awesome, it's not the way all
> people
> > >>>    work. Whether that is good or bad, does not matter. Requiring over
> > 20
> > >>>    bundles to be installed to get a single functionality working
> seems
> > >>>    really like overkill.
> > >>>
> > >>>    Regards
> > >>>    Carsten
> > >>>
> > >>>>
> > >>>> - Ray
> > >>>>
> > >>>>
> > >>>>>
> > >>>>> Carsten
> > >>>>>
> > >>>>> Am 19.10.2018 um 16:10 schrieb Raymond Auge:
> > >>>>>> I know in the past I argued against exposing all the jetty
> > >>>    bundles. But I
> > >>>>>> feel I was probably wrong back then. I think that with the
> > >>>    jetty BOM and
> > >>>>>> the OSGi resolver, figuring out which bundles you need, and
> > >>>    then adding
> > >>>>>> additional ones to suite your case, is not so hard.
> > >>>>>>
> > >>>>>> Furthermore, Service Loader Mediator is not as painful anymore,
> > >>>    just use
> > >>>>> an
> > >>>>>> R7 framework with the SpiFly framework extension.
> > >>>>>>
> > >>>>>> - Ray
> > >>>>>>
> > >>>>>> On Fri, Oct 19, 2018 at 9:30 AM Raymond Auge
> > >>>    <raymond.a...@liferay.com <mailto:raymond.a...@liferay.com>>
> > >>>>>> wrote:
> > >>>>>>
> > >>>>>>> Why not start relying on the Jetty BOM and let people depend
> > >>>    on the
> > >>>>>>> bundles what they want, at least this way they can let the
> > >>>    resolver
> > >>>>>>> assemble the bundles they need?
> > >>>>>>>
> > >>>>>>> - Ray
> > >>>>>>>
> > >>>>>>> On Fri, Oct 19, 2018 at 3:39 AM Carsten Ziegeler
> > >>>    <cziege...@apache.org <mailto:cziege...@apache.org>>
> > >>>>>>> wrote:
> > >>>>>>>
> > >>>>>>>> The other option would be if jetty could provide us one fat
> > >>>    bundle, to
> > >>>>>>>> avoid having users to install N bundles, it would just be one
> > >>>>> additional.
> > >>>>>>>>
> > >>>>>>>> Regards
> > >>>>>>>> Carsten
> > >>>>>>>>
> > >>>>>>>> Am 19.10.2018 um 09:35 schrieb Carsten Ziegeler:
> > >>>>>>>>> Hi Eric,
> > >>>>>>>>>
> > >>>>>>>>> I would like to come back to this discussion; I somehow
> > >>>    forgot to
> > >>>>>>>> follow
> > >>>>>>>>> up on the old thread.
> > >>>>>>>>> If we go with a thin Apache Felix Jetty bundle, then you
> > >> need to
> > >>>>>>>> install
> > >>>>>>>>> a lot of other bundles even if you don't use http2. So
> > >>>    updating from a
> > >>>>>>>>> current version to this new version is not nice.
> > >>>>>>>>>
> > >>>>>>>>> How about we still include the jetty bundles inside, fix the
> > >>>    service
> > >>>>>>>>> loader configuration by including it - but do not include
> > >>>    the other
> > >>>>>>>>> things needed for http2 support. So if you're not using
> > >>>    http2, it
> > >>>>> works
> > >>>>>>>>> like today.
> > >>>>>>>>> If you use http2 you install additionally spifly and what
> > >>>    else is
> > >>>>>>>>> required to make it work.
> > >>>>>>>>>
> > >>>>>>>>> Would that work?
> > >>>>>>>>>
> > >>>>>>>>> Regards
> > >>>>>>>>> Carsten
> > >>>>>>>>>
> > >>>>>>>>> Am 18.10.2018 um 19:59 schrieb Eric Norman:
> > >>>>>>>>>> Yes, with a few changes to the felix.http code it is
> > >>>    possible to make
> > >>>>>>>> it
> > >>>>>>>>>> work.
> > >>>>>>>>>>
> > >>>>>>>>>> I stashed the code changes in my github fork at
> > >>>>>>>>>> https://github.com/enapps-enorman/felix which I think you
> > >> have
> > >>>>> already
> > >>>>>>>>>> discovered?
> > >>>>>>>>>>
> > >>>>>>>>>> I would be willing to initiate a PR from the fork, but
> > >>>    unfortunately
> > >>>>>>>> the
> > >>>>>>>>>> http/2 support doesn't work without changing how the
> > >> felix.http
> > >>>>> bundle
> > >>>>>>>> is
> > >>>>>>>>>> packaged as discussed on the felix mailing list at:
> > >>>>>>>>>>
> > >>>    https://www.mail-archive.com/users@felix.apache.org/msg18187.html
> > >>>>>>>>>>
> > >>>>>>>>>> The felix community seemed reluctant to make the packaging
> > >>>    changes to
> > >>>>>>>> the
> > >>>>>>>>>> felix.http bundle so I didn't send the PR at the time.
> > >>>>>>>>>>
> > >>>>>>>>>>
> > >>>>>>>>>> Regards,
> > >>>>>>>>>>
> > >>>>>>>>>> Eric
> > >>>>>>>>>>
> > >>>>>>>>>> On Thu, Oct 18, 2018 at 10:04 AM Naftali <nvdl...@gmail.com
> > >>>    <mailto:nvdl...@gmail.com>> wrote:
> > >>>>>>>>>>
> > >>>>>>>>>>> Hi, is there any way to enable enable HTTP/2 support in
> > >>>    the embedded
> > >>>>>>>>>>> felix
> > >>>>>>>>>>> jetty?
> > >>>>>>>>>>>
> > >>>>>>>>>>> Greetz Naftali
> > >>>>>>>>>>>
> > >>>>>>>>>>
> > >>>>>>>>>
> > >>>>>>>>
> > >>>>>>>> --
> > >>>>>>>> Carsten Ziegeler
> > >>>>>>>> Adobe Research Switzerland
> > >>>>>>>> cziege...@apache.org <mailto:cziege...@apache.org>
> > >>>>>>>>
> > >>>>>>>>
> > >>>
> > ---------------------------------------------------------------------
> > >>>>>>>> To unsubscribe, e-mail: users-unsubscr...@felix.apache.org
> > >>>    <mailto:users-unsubscr...@felix.apache.org>
> > >>>>>>>> For additional commands, e-mail: users-h...@felix.apache.org
> > >>>    <mailto:users-h...@felix.apache.org>
> > >>>>>>>>
> > >>>>>>>>
> > >>>>>>>
> > >>>>>>> --
> > >>>>>>> *Raymond Augé* <
> > >> http://www.liferay.com/web/raymond.auge/profile>
> > >>>>>>>   (@rotty3000)
> > >>>>>>> Senior Software Architect *Liferay, Inc.* <
> > >> http://www.liferay.com>
> > >>>>>>>   (@Liferay)
> > >>>>>>> Board Member & EEG Co-Chair, OSGi Alliance <http://osgi.org>
> > >>>>>>> (@OSGiAlliance)
> > >>>>>>>
> > >>>>>>
> > >>>>>>
> > >>>>>
> > >>>>> --
> > >>>>> Carsten Ziegeler
> > >>>>> Adobe Research Switzerland
> > >>>>> cziege...@apache.org <mailto:cziege...@apache.org>
> > >>>>>
> > >>>>>
> > >>>
> > ---------------------------------------------------------------------
> > >>>>> To unsubscribe, e-mail: users-unsubscr...@felix.apache.org
> > >>>    <mailto:users-unsubscr...@felix.apache.org>
> > >>>>> For additional commands, e-mail: users-h...@felix.apache.org
> > >>>    <mailto:users-h...@felix.apache.org>
> > >>>>>
> > >>>>>
> > >>>>
> > >>>
> > >>>    --
> > >>>    Carsten Ziegeler
> > >>>    Adobe Research Switzerland
> > >>>    cziege...@apache.org <mailto:cziege...@apache.org>
> > >>>
> > >>>
> > >>>
> > >>> --
> > >>> *Raymond Augé*
> > >>> <http://www.liferay.com/web/raymond.auge/profile> (@rotty3000)
> > >>> Senior Software Architect *Liferay, Inc.*
> > >>> <http://www.liferay.com> (@Liferay)
> > >>> Board Member & EEG Co-Chair, OSGi Alliance <http://osgi.org>
> > >> (@OSGiAlliance)
> > >>
> > >> --
> > >> Carsten Ziegeler
> > >> Adobe Research Switzerland
> > >> cziege...@apache.org
> > >>
> > >> ---------------------------------------------------------------------
> > >> To unsubscribe, e-mail: users-unsubscr...@felix.apache.org
> > >> For additional commands, e-mail: users-h...@felix.apache.org
> > >>
> > >>
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: users-unsubscr...@felix.apache.org
> > For additional commands, e-mail: users-h...@felix.apache.org
> >
> >
>

Reply via email to