Hi,

As an outcome of the discussion, I created two issues in Jira:

https://issues.apache.org/jira/browse/FELIX-5089
https://issues.apache.org/jira/browse/FELIX-5090

Regards,
*Balázs **Zsoldos*


On Tue, Oct 27, 2015 at 11:51 PM, Richard S. Hall <he...@ungoverned.org>
wrote:

>
> > On Oct 27, 2015, at 18:45, Balázs Zsoldos <balazs.zsol...@everit.biz>
> wrote:
> >
> >>
> >> As an application developer, you don’t need to import anything from
> >> extender bundles.
> >> I would estimate that 90% of my bundles do not import anything from the
> >> core OSGi framework, and I almost *never* write a BundleActivator.
> >
> >
> > Probably "Import" was not the right word. As an application developer,
> you
> > either have to implement BundleActivator, or use some technology that
> > implements the extender pattern. That technology must either implement
> > BundleActivator or use another technology that implements another
> extender
> > pattern. And so on...
> >
> > If org.osgi.framework is not part of the system packages, at least one of
> > the bundles will not be able to resolve (the one that implements
> > BundleActivator). As a result, no code will be executed in any of the
> > bundles. (It can be executed if someone starts the framework
> > programmatically than gets a class type from one of the bundles than
> > instantiates it with reflection... I do not think anybody wants to do
> this).
> >
> > In other words: The org.osgi.framework must ALWAYS export the
> > org.osgi.framework package, otherwise no business logic will be executed.
>
> This portion of the conversation has definitely gotten off track and I am
> to blame since I was splitting hairs that shouldn’t have been split…
>
> Having said that, though, I did once create a custom launcher that simply
> probed installed JAR files for some metadata and kicked started the
> application from the outside (effectively, it was the extender pattern
> implemented directly in a framework launcher). This work really nicely,
> because it allowed the installed JAR files to benefit from module metadata,
> encapsulate, and dependency resolution, but there was no code in the
> application with any OSGi awareness. So, technically, in that case, the
> system bundle needn’t have exported any OSGi packages at all, since the
> launcher got access to them via the class path.
>
> See what kind of fun stuff you can do? :-)
>
> -> richard
>
> >
> >
> > On Tue, Oct 27, 2015 at 11:18 PM, Neil Bartlett <njbartl...@gmail.com>
> > wrote:
> >
> >>
> >>> On 27 Oct 2015, at 17:33, Balázs Zsoldos <balazs.zsol...@everit.biz>
> >> wrote:
> >>>
> >>>>
> >>>> As an application developer, I don't need to implement the extender
> >>>> pattern since framework developers have done that for me. It's all
> about
> >>>> layers and perspective.
> >>>
> >>>
> >>> As a technology developer, how would you implement an extender pattern
> >>> without the framework packages? You could not. If those packages are
> not
> >>> exported by the system bundle, you cannot implement the extender
> pattern.
> >>> As an application developer, you could not import a bundle that
> >> implements
> >>> the extender pattern, as the bundle would not resolve.
> >>
> >>
> >> As an application developer, you don’t need to import anything from
> >> extender bundles.
> >>
> >> I would estimate that 90% of my bundles do not import anything from the
> >> core OSGi framework, and I almost *never* write a BundleActivator.
> >>
> >> Regards,
> >> Neil
> >>
> >>
> >>>
> >>> You mean that the Framework developers should implement technologies
> like
> >>> Declarative Services and include it into the Framework?
> >>>
> >>>
> >>> On Tue, Oct 27, 2015 at 6:27 PM, Richard S. Hall <he...@ungoverned.org
> >
> >>> wrote:
> >>>
> >>>> On 10/27/15 13:14 , Balázs Zsoldos wrote:
> >>>>
> >>>>> That is not my interpretation. System packages are those packages
> >> provided
> >>>>>> by the system bundle. From a wiring perspective, all of the JRE
> >> packages
> >>>>>> look like they are coming from the system bundle just like the OSGi
> >> core
> >>>>>> packages, so your distinction doesn't really make sense to me.
> >>>>>>
> >>>>>
> >>>>> Seems that we are different :). I interpret rules based on
> use-cases. I
> >>>>> cannot find any use-case where I wanted to handle framework packages
> >> like
> >>>>> JDK packages. On the other hand, I see use-cases where I want to
> handle
> >>>>> them separately.
> >>>>>
> >>>>
> >>>> It is much more consistent to defines system.packages like,
> >>>> "system.packages represents all packages that will be exported by the
> >>>> system bundle", instead of something like "system.packages represents
> >> all
> >>>> packages exported by the system bundle plus some additional packages
> >> that
> >>>> will tacked on but may vary by framework implementation".
> >>>>
> >>>>
> >>>>> Wrong. The extender pattern is based almost wholly around such an
> >>>>> approach.
> >>>>>
> >>>>>
> >>>>> How would you implement the extender pattern without the framework
> >>>>> packages?
> >>>>>
> >>>>
> >>>> As an application developer, I don't need to implement the extender
> >>>> pattern since framework developers have done that for me. It's all
> about
> >>>> layers and perspective.
> >>>>
> >>>> -> richard
> >>>>
> >>>>
> >>>>
> >>>>>
> >>>>>
> >>>>> On Tue, Oct 27, 2015 at 6:04 PM, Richard S. Hall <
> he...@ungoverned.org
> >>>
> >>>>> wrote:
> >>>>>
> >>>>> On 10/27/15 11:27 , Balázs Zsoldos wrote:
> >>>>>>
> >>>>>> @David:
> >>>>>>>
> >>>>>>> I know about the *org.osgi.framework.system.**packages.extra*
> >> property,
> >>>>>>> but
> >>>>>>> that is about another use-case.
> >>>>>>>
> >>>>>>> *org.osgi.framework.system.**packages.extra *can be used to extend
> >> the
> >>>>>>> list
> >>>>>>> of system packages.
> >>>>>>> *org.osgi.framework.system.**packages* can be used to reduce the
> >> list of
> >>>>>>> the system packages.
> >>>>>>>
> >>>>>>> I want to reduce the list of system packages as some packages are
> >> coming
> >>>>>>> from bundles. More specifically, I want to list only those packages
> >>>>>>> that I
> >>>>>>> actually need from the JDK. Reason: Many packages are incomplete or
> >>>>>>> buggy
> >>>>>>> in the JDK: javax.transaction.*, javax.xml.*...
> >>>>>>>
> >>>>>>> @Andy:
> >>>>>>>
> >>>>>>> The text at
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>
> https://osgi.org/javadoc/r5/core/org/osgi/framework/Constants.html#FRAMEWORK_SYSTEMPACKAGES
> >>>>>>>  says:* Framework launching property identifying packages which the
> >>>>>>> system
> >>>>>>> bundle must export.*
> >>>>>>>
> >>>>>>> "Must" does not mean that only those packages should be exported by
> >> the
> >>>>>>> system bundle.
> >>>>>>>
> >>>>>>> @Everyone:
> >>>>>>>
> >>>>>>> Questions:
> >>>>>>>
> >>>>>>>    - What is the exact meaning of system packages from the
> >>>>>>> perspective of
> >>>>>>>    this setting? In my opinion, the list of packages that are
> coming
> >>>>>>> outside
> >>>>>>>    the OSGi container.
> >>>>>>>
> >>>>>>> That is not my interpretation. System packages are those packages
> >>>>>> provided
> >>>>>> by the system bundle. From a wiring perspective, all of the JRE
> >> packages
> >>>>>> look like they are coming from the system bundle just like the OSGi
> >> core
> >>>>>> packages, so your distinction doesn't really make sense to me.
> >>>>>>
> >>>>>>
> >>>>>> org.osgi.* packages do not come outside from the OSGi
> >>>>>>
> >>>>>>>    container.
> >>>>>>>    - Could the org.osgi.* packages come from custom bundles? I
> >> think,
> >>>>>>> no.
> >>>>>>>    - Can you write an application that does not need any of the
> >>>>>>> org.osgi.*
> >>>>>>>    package? I think you cannot.At least one bundle has to implement
> >> an
> >>>>>>>    Activator to have any kind of functionality in the system.
> >>>>>>> Otherwise
> >>>>>>> the
> >>>>>>>    bundles will be resolved, but they will do nothing (not even a
> >>>>>>> static
> >>>>>>> block
> >>>>>>>    will be called).
> >>>>>>>
> >>>>>>> Wrong. The extender pattern is based almost wholly around such an
> >>>>>> approach.
> >>>>>>
> >>>>>> -> richard
> >>>>>>
> >>>>>>    - Can you imagine any use-case where exporting org.osgi.*
> packages
> >>>>>> by
> >>>>>>
> >>>>>>>    the system bundle could cause any issue? I cannot.
> >>>>>>>    - Is it an extra work that org.osgi.* packages have to be
> >> appended
> >>>>>>> if
> >>>>>>>    system.packages are overridden? Yes, always.
> >>>>>>>
> >>>>>>> If we answer these questions, we will come to the conclusion (at
> >> least I
> >>>>>>> :)
> >>>>>>> ) that org.osgi.* packages should always be exported by the system
> >>>>>>> bundle.
> >>>>>>> They are not in the scope of the meaning of system.packages
> setting.
> >>>>>>>
> >>>>>>>
> >>>>>>> Kind regards,
> >>>>>>> *Balázs **Zsoldos*
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>> On Tue, Oct 27, 2015 at 3:21 PM, David Bosschaert <
> >>>>>>> david.bosscha...@gmail.com> wrote:
> >>>>>>>
> >>>>>>> Yes, that's precisely what the
> >>>>>>>
> >>>>>>>> org.osgi.framework.system.packages.extra was designed for. That
> way
> >>>>>>>> you don't need to remember what the framework puts on
> >>>>>>>> org.osgi.framework.system.packages in order to augment it.
> >>>>>>>>
> >>>>>>>> Best regards,
> >>>>>>>>
> >>>>>>>> David
> >>>>>>>>
> >>>>>>>> On 27 October 2015 at 14:18, Andy Lee <thelees.a...@gmail.com>
> >> wrote:
> >>>>>>>>
> >>>>>>>> If you are trying to extend the set of packages exported by the
> >> system
> >>>>>>>>> bundle, you should use org.osgi.framework.system.packages.extra.
> >> By
> >>>>>>>>> specifying org.osgi.framework.system.packages you are overriding
> >> the
> >>>>>>>>> default value used by the framework, and hence must include the
> >>>>>>>>> packaged
> >>>>>>>>> that are expected to be supplied by the framework.
> >>>>>>>>>
> >>>>>>>>> See
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>
> >>
> https://osgi.org/javadoc/r5/core/org/osgi/framework/Constants.html#FRAMEWORK_SYSTEMPACKAGES
> >>>>>>>>
> >>>>>>>> --Andy
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>> On Tue, Oct 27, 2015 at 10:00 AM, Balázs Zsoldos <
> >>>>>>>>>
> >>>>>>>>> balazs.zsol...@everit.biz>
> >>>>>>>>
> >>>>>>>> wrote:
> >>>>>>>>>
> >>>>>>>>> Hi,
> >>>>>>>>>
> >>>>>>>>>> I asked this 1-2 years ago, but I think it is worthy to  ask it
> >>>>>>>>>> again.
> >>>>>>>>>>
> >>>>>>>>>> Are you sure that the set of system packages should include the
> >> OSGi
> >>>>>>>>>>
> >>>>>>>>>> core
> >>>>>>>>> packages?
> >>>>>>>>>
> >>>>>>>>>> In my understanding:
> >>>>>>>>>>
> >>>>>>>>>>    - system packages are the ones coming from outside of the
> OSGi
> >>>>>>>>>>
> >>>>>>>>>> container
> >>>>>>>>>    - osgi core packages are offered by the framework bundle, but
> >>>>>>>>> they
> >>>>>>>>> are
> >>>>>>>>>    not system packages
> >>>>>>>>>
> >>>>>>>>>> In practice:
> >>>>>>>>>>
> >>>>>>>>>>    - If I specify org.osgi.system.packages property for equinox,
> >> I
> >>>>>>>>>> do
> >>>>>>>>>>
> >>>>>>>>>> not
> >>>>>>>>>    have to define the packages implemented by the framework
> >>>>>>>>>
> >>>>>>>>>>    - If I specify the same property for felix, I must copy-paste
> >>>>>>>>>> the
> >>>>>>>>>>    packages of osgi.core always
> >>>>>>>>>>
> >>>>>>>>>> Do you think there is a use-case when osgi.core packages offered
> >> by
> >>>>>>>>>> the
> >>>>>>>>>> framework should be excluded from the exported packages of the
> >> system
> >>>>>>>>>> bundle? I think Equinox has the right behavior here.
> >>>>>>>>>>
> >>>>>>>>>> Do you see any chance to change this behavior in the future?
> >>>>>>>>>>
> >>>>>>>>>> Kind regards,
> >>>>>>>>>> *Balázs **Zsoldos*
> >>>>>>>>>>
> >>>>>>>>>>
> >> ---------------------------------------------------------------------
> >>>>>>>>>>
> >>>>>>>>> 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
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>
> >>>> ---------------------------------------------------------------------
> >>>> 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
> >>
> >>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@felix.apache.org
> For additional commands, e-mail: users-h...@felix.apache.org
>
>

Reply via email to