A little bit of good news on this topic.

For R6 you will find that the OSGi Alliance will release (including to
Maven Central) complete (code, source, javadoc, pom), individually
packaged, usable at runtime, companion code bundles for every single spec
(including everything not modified during this last development cycle, i.e.
every latest version of every spec).

I hope that with this the question about the super companion code bundles
will be much less of an issue.

Everyone will be encouraged to (and will likely gravitate toward) use these
new bundles! :)

You can thank BJ Hargrave and the BND team (mostly BJ) for all the hard
work they did to make that possible, particular w.r.t. the maven stuff ;)

Sincerely,
- Ray

On Wed, May 20, 2015 at 9:56 AM, Richard Hall <he...@ungoverned.org> wrote:

> On 5/20/15 05:15 , Milen Dyankov wrote:
>
> >
> > Thanks for your answer Richard!
> >
> > I am aware if the FAQ however what it basically tells you is "it depends"
> > ;) Thus I was hoping for some more insides so I can better understand the
> > intentions and the situation with service APIs from OSGi specs as of
> today.
> > So, if I understand your answer correctly the conclusions are:
> >
> > - Never use compendium bundle at runtime because it is not a proper
> bundle
> > (whatever that means).
>
>
> Bundles (i.e., modules) are supposed to be cohesive and loosely coupled.
> The compendium is just a bunch of APIs thrown into a JAR file, so that
> hardly is cohesive and certainly wouldn't lead to low coupling. Understand?
>
> >  I agree with you that this should be in FAQ at
> > least. It would be even better if there is some more official statement
> > (may be there is and I just couldn't find it) that also explains why!
> >
> > - There are no proper/official separate API bundles for the service APIs
> > defined in the specs. Vendors are free to choose if they (1) package the
> > API in the implementation bundle, (2) provide the implementation only or
> > (3) provide separate bundles for API and implementation. Felix has chosen
> > the first approach to avoid maintaining too many bundles.
>
>
> No choice has been made at Apache Felix
>
> >
> >  IMHO
> > and according to the FAQ it seems the third approach makes more sense:
> "*This
> > situation would be different if the service API were package in a
> separate
> > bundle. In this situation, all consumer bundles would be wired to the API
> > bundle, not to the provider bundle. Thus, if the provider were updated or
> > uninstalled and then refreshed, the consumer bundles would only be
> > minimally impacted (i.e., they would either switch to the new version of
> > the provider or to a different provider).*"  but I respect your
> decisions.
> >
> > - There is no issue with split packages
> > <http://wiki.osgi.org/wiki/Split_Packages>
> <http://wiki.osgi.org/wiki/Split_Packages> because regardless of the
> > provider and the way APIs they are packaged/exported the API package(s)
> > *should* always be both complete and limited to what what OSGi alliance
> has
> > specified. IMHO this should be a bit more strict than just expecting
> > vendors to "do it right". Then perhaps consumers can feel a bit more safe
> > from such issues when choosing an implementation (without the need to
> > examine it's internals). But I'm not going to argue about it.
> >
> > Once again thanks for your answers. Please correct me if
> > I misunderstood something.
> >
> > Regards,
> > Milen
> >
> >
> >
> >
> >
> > On Sun, May 17, 2015 at 8:01 PM, Richard S. Hall <he...@ungoverned.org>
> <he...@ungoverned.org>
> > wrote:
> >
>
> >> On 5/17/15 12:57 , Milen Dyankov wrote:
> >>
>
>  >>> Hi,
> >>>
> >>> I recently stumbled upon something that makes me wonder about OSGI
> specs
> >>> APIs. As Metatype was the one API that made me start thinking about the
> >>> issue, I'll use it as an example but the question is about APIs in
> >>> general.
> >>>
> >>> So while attempting to replace Felix's Metatype with Equinox one,  I
> >>> realized Felix implementation jar provides also the API while Equinox
> does
> >>> not. So my first thought was that there should be another jar with the
> API
> >>> alone but I couldn't find one. Second thought was to install
> osgi.cmpn.jar
> >>> (it's  a bundle after all) but I was told I should never do that and
> that
> >>> those jars are provided to be only used as compile time dependencies.
> >>>
> >>> So here comes the question - who should provide the APIs at runtime for
> a
> >>> OSGI specs?
> >>>
>
>  >>
> >> See the FAQ:
> >>
> >>
> >>
>
> http://felix.apache.org/documentation/tutorials-examples-and-presentations/apache-felix-osgi-faq.html#should-a-service-providerconsumer-bundle-be-packaged-with-its-service-api-packages
> <
> http://felix.apache.org/documentation/tutorials-examples-and-presentations/apache-felix-osgi-faq.html#should-a-service-providerconsumer-bundle-be-packaged-with-its-service-api-packages
> >
> >>
> >>  I would actually split the question into a few:
>
>  >>>
> >>> - is it really forbidden/nor recommended to use osgi.cmpn.jar at
> runtime?
> >>> If so can someone please elaborate?
> >>>
>
>  >>
> >> This should probably be in the FAQ too. The compendium only happens to
> be
> >> packaged as a bundle because that is how it is built, not because it
> >> actually is a proper bundle. It is not cohesive, since it is just a
> >> collection of API, and pulls in unnecessary dependencies. The OSGi
> Alliance
> >> should probably quit publishing it as a bundle. Over the years, we seen
> >> lots of users run into difficulties when using it as a bundle.
> >>
> >>  - shouldn't there be independent  (perhaps released by OSGI alliance)
> API
>
>  >>>
> >>> bundles? If there should be but they are missing at the moment then why
> >>> Felix does not provide APIs in a separate bundles instead of packaging
> >>> them
> >>> with the implementation?
> >>>
>
>  >>
> >> It's not really the purpose of the OSGi Alliance, but I suppose they
> >> could. At Apache Felix, we have enough bundles to maintain, without
> >> creating more.
> >>
> >>  - finally if the expectation is that each implementation provides also
> the
>
>  >>>
> >>> API isn't this leading to split package condition? I'm aware for most
> >>> specs
> >>> it probably makes no sense to have 2 different implementations at the
> same
> >>> time but still ...
> >>>
>
>  >>
> >> No. How would they be split? Packages are self contained in OSGi bundles
> >> unless you explicitly make them split. If done properly, there is little
> >> harm in having multiple providers of a package. However, having a single
> >> provider does provide some benefits too. As the FAQ says, it just
> depends
> >> on your situation.
> >>
> >> If you really are dealing with composing a system out of third-party
> >> bundles, though, you cannot really always have it your way so you have
> to
> >> deal with the realities on the ground.
> >>
> >> -> richard
> >>
> >>
>
>  >>> I would appreciate if someone can throw more light on the subject.
> >>>
> >>> Regards,
> >>> Milen
> >>>
> >>>
>
>  >>
> >> ---------------------------------------------------------------------
> >> To unsubscribe, e-mail: users-unsubscr...@felix.apache.org
> >> For additional commands, e-mail: 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)

Reply via email to