Re: Handling of provisional OSGi API?

2014-05-19 Thread Carsten Ziegeler
+1 sounds good to me


2014-05-17 9:37 GMT+02:00 David Jencks :

> I propose we change the provisional api policy page
> http://felix.apache.org/documentation/development/provisional-osgi-api-policy.htmlto
>  this (markdown source):
>
> The OSGi Alliance exposes provisional API that may or may not become part
> of future OSGI specifications.  This policy explains how and when Felix
> subprojects may relate to such API. Provisional OSGi API refers to anything
> in the `org.osgi.*` package namespace that is not part of a final released
> specification.
>
> ## Policy
> 1. No Felix release may contain or refer to provisional OSGI API.
> 1. Provisional API may be included and used in unreleased source code,
> however the API must be part of a final released OSGI specification before
> this felix source may be released.
>
> 1. Although it is STRONGLY NOT RECOMMENDED, modified versions of
> provisional api may be released with these modifications:
>
>  1. Any provisional OSGi API must be recreated in the `org.apache.felix.*`
> package name space; this effectively makes it provisional Felix API.
>  1. All Felix provisional API must be marked as deprecated.
>  1. All Felix provisional API exported from bundles should be exported
> with a mandatory attribute of `status="provisional"`.
>
> ## Discussion
>
> The first goal of this policy is to completely avoid using provisional
> OSGi API in released Felix projects given the potential confusion and
> questions by doing so. The second goal is to make the existence of any
> released Felix provisional API completely obvious to downstream users and
> make it difficult for them to use it unknowingly. However, any such release
> is likely to involve numerous problems such as incorrect semantic
> versioning or version mismatch between the provisional and eventual osgi
> release and bundle version inflation if the felix provisional api is
> removed after the OSGI API is released.
>
> As an example, to provisionally export the
> `org.apache.felix.service.metatype` package, the
> `Export-Package` statement would look something like this:
>
> :::xml
> 
>   org.apache.felix.service.metatype; version="0.1";
> mandatory="status"; status="provisional"
> 
>
> When working with new OSGI specifications, constructing a Felix
> provisional API will likely result in parallel package structures between
> the provisional OSGi and Felix APIs. When working with existing
> specifications, it may be necessary to create extensions to existing OSGi
> interfaces in the Felix package namespace.
>
> Comments?
>
> thanks
>
> david jencks
>
> ps.  JB, Guillaume, what exactly are you +1ing?  That we keep talking?
> That the policy stay the same? Change?
>
> On May 16, 2014, at 7:56 PM, "Richard S. Hall" 
> wrote:
>
> > On 5/16/14, 20:43 , David Jencks wrote:
> >> You have a point about specs that don't get released.  And in such a
> circumstance having something released with org.osgi packages marked
> provisional would be sort of a disaster.
> >>
> >> But if a felix subproject is going to be an osgi ri, it really needs to
> be developed with the right package names.  Otherwise, for instance,
> debugging the conformance test suite will be more or less impossible, as
> well as making running the ri against the ct implausible.
> >
> > I believe we did have this issue with the Config Admin RI and somehow we
> managed.
> >
> >>
> >> So I think I'd like the policy to say (sub) projects are strongly
> discouraged from releasing anything with a non released osgi spec api no
> matter what package it's moved to and how provisional it's marked, but it's
> ok to have unreleased org.osgi packages in source as long as either the
> spec gets released before any felix release is made or they are removed
> before any felix release is made.
> >
> > I don't think we can leave policy as a recommendation, because then it
> still leaves it up to whomever to decide.
> >
> > Again, I don't have an issue with saying it is okay in source form, but
> not in a released artifact.
> >
> >
> >>
> >> My next DS commits add the DTO stuff, so unless the policy is changed
> they will have to wait on github for a while.
> >
> > So, make a modified policy proposal and put it up for comments and
> ultimately a vote.
> >
> > -> richard
> >
> >>
> >> thanks
> >> david jencks
> >>
> >>
> >>
> >> On May 16, 2014, at 2:24 PM, Richard S. Hall 
> wrote:
> >>
> >>> There was thought that went into that policy, it wasn't just pulled
> out of the air...further, from experience of working on that specs that
> didn't make the cut (original OBR and Gogo), I can say the policy does a
> good job of avoiding the confusion/complication created in those cases.
> >>>
> >>> So, working around the policy based on personal whim, doesn't seem
> like a good idea...that sort of makes it not a policy.
> >>>
> >>> However, all policies can be improved. You could argue that the policy
> should simply be modified, as David suggests, to say only "relea

Re: Handling of provisional OSGi API?

2014-05-19 Thread David Bosschaert
On 19 May 2014 10:54, Marcel Offermans  wrote:
> Hello David,
>
> On 19 May 2014, at 10:22 , David Bosschaert  
> wrote:
>
>> On 5/16/14, 20:43 , David Jencks wrote:
>>> for instance, debugging the conformance test suite will be more or less 
>>> impossible,
>>
>> Yep, if you're writing an RI in Felix and this RI needs to run as part
>> of the OSGi CT, it will only work if it uses the official OSGi API.
>> As an example take an OSGi CT that looks for a whiteboard service that
>> implements the org.osgi.service.http.runtime.HttpServiceRuntime
>> interface.
>> The CT will not find the implementation if it's renamed to
>> org.apache.felix...something. So at least to test the RI as part of
>> the CT you need the real API.
>
> You do, but as far as I know you do not need a release (in the Apache sense 
> of the word, meaning source code) for that as the OSGi CT only requires you 
> to submit a binary artifact. And that can easily be produced without doing 
> any kind of release (and should, because it’s not for public consumption 
> usually).

Yep, correct. When OSGi releases the RIs and CTs they do want to be
able to correlate an RI binary to a commit in the source code tree
(e.g. by mentioning a tag or commit ID in the manifest), but it
doesn't have to be an official release.

>> BTW I think it would be good if this policy could also apply to new
>> versions of an existing API. E.g. it should also be usable when we
>> move the Core API from 1.7 to 1.8 for Core R6. Thought anyone?
>
> This policy already applies to new versions of an existing API, right?

Great.

Cheers,

David


Re: Handling of provisional OSGi API?

2014-05-19 Thread Marcel Offermans
Hello David,

On 19 May 2014, at 10:22 , David Bosschaert  wrote:

> On 5/16/14, 20:43 , David Jencks wrote:
>> for instance, debugging the conformance test suite will be more or less 
>> impossible,
> 
> Yep, if you're writing an RI in Felix and this RI needs to run as part
> of the OSGi CT, it will only work if it uses the official OSGi API.
> As an example take an OSGi CT that looks for a whiteboard service that
> implements the org.osgi.service.http.runtime.HttpServiceRuntime
> interface.
> The CT will not find the implementation if it's renamed to
> org.apache.felix...something. So at least to test the RI as part of
> the CT you need the real API.

You do, but as far as I know you do not need a release (in the Apache sense of 
the word, meaning source code) for that as the OSGi CT only requires you to 
submit a binary artifact. And that can easily be produced without doing any 
kind of release (and should, because it’s not for public consumption usually).

> BTW I think it would be good if this policy could also apply to new
> versions of an existing API. E.g. it should also be usable when we
> move the Core API from 1.7 to 1.8 for Core R6. Thought anyone?

This policy already applies to new versions of an existing API, right?

Greetings, Marcel


> 
> Cheers,
> 
> David
> 
> On 19 May 2014 10:05, Marcel Offermans  wrote:
>> I did not read David’s proposal that way. I think he is saying:
>> 
>> YES, you can code against an API that is under development, as long as you 
>> do not do any releases (before the API is finalized).
>> 
>> So only if you want to do a release before the API is finalized do you need 
>> to package it under the Felix namespace and deprecate it (with a provisional 
>> status).
>> 
>> The only downside I see is that, from the OSGi Alliance point of view, they 
>> are getting less “real world” use of their reference implementations while 
>> they are being developed, because this policy makes it impractical to use 
>> (in production) any API that is still under development. On the other hand, 
>> it’s not too hard for someone to write a small component that publishes such 
>> an API itself and “bridges” to the artifact that our project released. I 
>> think that’s actually a reasonable compromise.
>> 
>> Personally, I could also live with a policy that only requires us to put the 
>> API in the Felix namespace (and not mark it deprecated or anything). Once an 
>> artifact has been released, it’s out there anyway. On the other hand, those 
>> extras are not in anybody’s way and they do serve as a warning, so I’m not 
>> going to make an argument that we must remove them.
>> 
>> Greetings, Marcel
>> 
>> On 19 May 2014, at 9:24 , Guillaume Nodet  wrote:
>> 
>>> The change and your proposal.  It seems to restrictive to not allow coding
>>> against API that are being developped when not planning to release the
>>> project before the API is.
>>> 
>>> 
>>> 2014-05-17 9:37 GMT+02:00 David Jencks :
>>> 
 I propose we change the provisional api policy page
 http://felix.apache.org/documentation/development/provisional-osgi-api-policy.htmlto
  this (markdown source):
 
 The OSGi Alliance exposes provisional API that may or may not become part
 of future OSGI specifications.  This policy explains how and when Felix
 subprojects may relate to such API. Provisional OSGi API refers to anything
 in the `org.osgi.*` package namespace that is not part of a final released
 specification.
 
 ## Policy
 1. No Felix release may contain or refer to provisional OSGI API.
 1. Provisional API may be included and used in unreleased source code,
 however the API must be part of a final released OSGI specification before
 this felix source may be released.
 
 1. Although it is STRONGLY NOT RECOMMENDED, modified versions of
 provisional api may be released with these modifications:
 
 1. Any provisional OSGi API must be recreated in the `org.apache.felix.*`
 package name space; this effectively makes it provisional Felix API.
 1. All Felix provisional API must be marked as deprecated.
 1. All Felix provisional API exported from bundles should be exported
 with a mandatory attribute of `status="provisional"`.
 
 ## Discussion
 
 The first goal of this policy is to completely avoid using provisional
 OSGi API in released Felix projects given the potential confusion and
 questions by doing so. The second goal is to make the existence of any
 released Felix provisional API completely obvious to downstream users and
 make it difficult for them to use it unknowingly. However, any such release
 is likely to involve numerous problems such as incorrect semantic
 versioning or version mismatch between the provisional and eventual osgi
 release and bundle version inflation if the felix provisional api is
 removed after the OSGI API is released.
 
 As an example, to provisi

Re: Handling of provisional OSGi API?

2014-05-19 Thread David Bosschaert
On 5/16/14, 20:43 , David Jencks wrote:
> for instance, debugging the conformance test suite will be more or less 
> impossible,

Yep, if you're writing an RI in Felix and this RI needs to run as part
of the OSGi CT, it will only work if it uses the official OSGi API.
As an example take an OSGi CT that looks for a whiteboard service that
implements the org.osgi.service.http.runtime.HttpServiceRuntime
interface.
The CT will not find the implementation if it's renamed to
org.apache.felix...something. So at least to test the RI as part of
the CT you need the real API.

BTW I think it would be good if this policy could also apply to new
versions of an existing API. E.g. it should also be usable when we
move the Core API from 1.7 to 1.8 for Core R6. Thought anyone?

Cheers,

David

On 19 May 2014 10:05, Marcel Offermans  wrote:
> I did not read David’s proposal that way. I think he is saying:
>
> YES, you can code against an API that is under development, as long as you do 
> not do any releases (before the API is finalized).
>
> So only if you want to do a release before the API is finalized do you need 
> to package it under the Felix namespace and deprecate it (with a provisional 
> status).
>
> The only downside I see is that, from the OSGi Alliance point of view, they 
> are getting less “real world” use of their reference implementations while 
> they are being developed, because this policy makes it impractical to use (in 
> production) any API that is still under development. On the other hand, it’s 
> not too hard for someone to write a small component that publishes such an 
> API itself and “bridges” to the artifact that our project released. I think 
> that’s actually a reasonable compromise.
>
> Personally, I could also live with a policy that only requires us to put the 
> API in the Felix namespace (and not mark it deprecated or anything). Once an 
> artifact has been released, it’s out there anyway. On the other hand, those 
> extras are not in anybody’s way and they do serve as a warning, so I’m not 
> going to make an argument that we must remove them.
>
> Greetings, Marcel
>
> On 19 May 2014, at 9:24 , Guillaume Nodet  wrote:
>
>> The change and your proposal.  It seems to restrictive to not allow coding
>> against API that are being developped when not planning to release the
>> project before the API is.
>>
>>
>> 2014-05-17 9:37 GMT+02:00 David Jencks :
>>
>>> I propose we change the provisional api policy page
>>> http://felix.apache.org/documentation/development/provisional-osgi-api-policy.htmlto
>>>  this (markdown source):
>>>
>>> The OSGi Alliance exposes provisional API that may or may not become part
>>> of future OSGI specifications.  This policy explains how and when Felix
>>> subprojects may relate to such API. Provisional OSGi API refers to anything
>>> in the `org.osgi.*` package namespace that is not part of a final released
>>> specification.
>>>
>>> ## Policy
>>> 1. No Felix release may contain or refer to provisional OSGI API.
>>> 1. Provisional API may be included and used in unreleased source code,
>>> however the API must be part of a final released OSGI specification before
>>> this felix source may be released.
>>>
>>> 1. Although it is STRONGLY NOT RECOMMENDED, modified versions of
>>> provisional api may be released with these modifications:
>>>
>>> 1. Any provisional OSGi API must be recreated in the `org.apache.felix.*`
>>> package name space; this effectively makes it provisional Felix API.
>>> 1. All Felix provisional API must be marked as deprecated.
>>> 1. All Felix provisional API exported from bundles should be exported
>>> with a mandatory attribute of `status="provisional"`.
>>>
>>> ## Discussion
>>>
>>> The first goal of this policy is to completely avoid using provisional
>>> OSGi API in released Felix projects given the potential confusion and
>>> questions by doing so. The second goal is to make the existence of any
>>> released Felix provisional API completely obvious to downstream users and
>>> make it difficult for them to use it unknowingly. However, any such release
>>> is likely to involve numerous problems such as incorrect semantic
>>> versioning or version mismatch between the provisional and eventual osgi
>>> release and bundle version inflation if the felix provisional api is
>>> removed after the OSGI API is released.
>>>
>>> As an example, to provisionally export the
>>> `org.apache.felix.service.metatype` package, the
>>> `Export-Package` statement would look something like this:
>>>
>>>:::xml
>>>
>>>  org.apache.felix.service.metatype; version="0.1";
>>> mandatory="status"; status="provisional"
>>>
>>>
>>> When working with new OSGI specifications, constructing a Felix
>>> provisional API will likely result in parallel package structures between
>>> the provisional OSGi and Felix APIs. When working with existing
>>> specifications, it may be necessary to create extensions to existing OSGi
>>> interfaces in the Felix package

Re: Handling of provisional OSGi API?

2014-05-19 Thread Marcel Offermans
I did not read David’s proposal that way. I think he is saying:

YES, you can code against an API that is under development, as long as you do 
not do any releases (before the API is finalized).

So only if you want to do a release before the API is finalized do you need to 
package it under the Felix namespace and deprecate it (with a provisional 
status).

The only downside I see is that, from the OSGi Alliance point of view, they are 
getting less “real world” use of their reference implementations while they are 
being developed, because this policy makes it impractical to use (in 
production) any API that is still under development. On the other hand, it’s 
not too hard for someone to write a small component that publishes such an API 
itself and “bridges” to the artifact that our project released. I think that’s 
actually a reasonable compromise.

Personally, I could also live with a policy that only requires us to put the 
API in the Felix namespace (and not mark it deprecated or anything). Once an 
artifact has been released, it’s out there anyway. On the other hand, those 
extras are not in anybody’s way and they do serve as a warning, so I’m not 
going to make an argument that we must remove them.

Greetings, Marcel

On 19 May 2014, at 9:24 , Guillaume Nodet  wrote:

> The change and your proposal.  It seems to restrictive to not allow coding
> against API that are being developped when not planning to release the
> project before the API is.
> 
> 
> 2014-05-17 9:37 GMT+02:00 David Jencks :
> 
>> I propose we change the provisional api policy page
>> http://felix.apache.org/documentation/development/provisional-osgi-api-policy.htmlto
>>  this (markdown source):
>> 
>> The OSGi Alliance exposes provisional API that may or may not become part
>> of future OSGI specifications.  This policy explains how and when Felix
>> subprojects may relate to such API. Provisional OSGi API refers to anything
>> in the `org.osgi.*` package namespace that is not part of a final released
>> specification.
>> 
>> ## Policy
>> 1. No Felix release may contain or refer to provisional OSGI API.
>> 1. Provisional API may be included and used in unreleased source code,
>> however the API must be part of a final released OSGI specification before
>> this felix source may be released.
>> 
>> 1. Although it is STRONGLY NOT RECOMMENDED, modified versions of
>> provisional api may be released with these modifications:
>> 
>> 1. Any provisional OSGi API must be recreated in the `org.apache.felix.*`
>> package name space; this effectively makes it provisional Felix API.
>> 1. All Felix provisional API must be marked as deprecated.
>> 1. All Felix provisional API exported from bundles should be exported
>> with a mandatory attribute of `status="provisional"`.
>> 
>> ## Discussion
>> 
>> The first goal of this policy is to completely avoid using provisional
>> OSGi API in released Felix projects given the potential confusion and
>> questions by doing so. The second goal is to make the existence of any
>> released Felix provisional API completely obvious to downstream users and
>> make it difficult for them to use it unknowingly. However, any such release
>> is likely to involve numerous problems such as incorrect semantic
>> versioning or version mismatch between the provisional and eventual osgi
>> release and bundle version inflation if the felix provisional api is
>> removed after the OSGI API is released.
>> 
>> As an example, to provisionally export the
>> `org.apache.felix.service.metatype` package, the
>> `Export-Package` statement would look something like this:
>> 
>>:::xml
>>
>>  org.apache.felix.service.metatype; version="0.1";
>> mandatory="status"; status="provisional"
>>
>> 
>> When working with new OSGI specifications, constructing a Felix
>> provisional API will likely result in parallel package structures between
>> the provisional OSGi and Felix APIs. When working with existing
>> specifications, it may be necessary to create extensions to existing OSGi
>> interfaces in the Felix package namespace.
>> 
>> Comments?
>> 
>> thanks
>> 
>> david jencks
>> 
>> ps.  JB, Guillaume, what exactly are you +1ing?  That we keep talking?
>> That the policy stay the same? Change?
>> 
>> On May 16, 2014, at 7:56 PM, "Richard S. Hall" 
>> wrote:
>> 
>>> On 5/16/14, 20:43 , David Jencks wrote:
 You have a point about specs that don't get released.  And in such a
>> circumstance having something released with org.osgi packages marked
>> provisional would be sort of a disaster.
 
 But if a felix subproject is going to be an osgi ri, it really needs to
>> be developed with the right package names.  Otherwise, for instance,
>> debugging the conformance test suite will be more or less impossible, as
>> well as making running the ri against the ct implausible.
>>> 
>>> I believe we did have this issue with the Config Admin RI and somehow we
>> managed.
>>> 
 
 So I think I'd like the policy to say (su

Re: Handling of provisional OSGi API?

2014-05-19 Thread Guillaume Nodet
The change and your proposal.  It seems to restrictive to not allow coding
against API that are being developped when not planning to release the
project before the API is.


2014-05-17 9:37 GMT+02:00 David Jencks :

> I propose we change the provisional api policy page
> http://felix.apache.org/documentation/development/provisional-osgi-api-policy.htmlto
>  this (markdown source):
>
> The OSGi Alliance exposes provisional API that may or may not become part
> of future OSGI specifications.  This policy explains how and when Felix
> subprojects may relate to such API. Provisional OSGi API refers to anything
> in the `org.osgi.*` package namespace that is not part of a final released
> specification.
>
> ## Policy
> 1. No Felix release may contain or refer to provisional OSGI API.
> 1. Provisional API may be included and used in unreleased source code,
> however the API must be part of a final released OSGI specification before
> this felix source may be released.
>
> 1. Although it is STRONGLY NOT RECOMMENDED, modified versions of
> provisional api may be released with these modifications:
>
>  1. Any provisional OSGi API must be recreated in the `org.apache.felix.*`
> package name space; this effectively makes it provisional Felix API.
>  1. All Felix provisional API must be marked as deprecated.
>  1. All Felix provisional API exported from bundles should be exported
> with a mandatory attribute of `status="provisional"`.
>
> ## Discussion
>
> The first goal of this policy is to completely avoid using provisional
> OSGi API in released Felix projects given the potential confusion and
> questions by doing so. The second goal is to make the existence of any
> released Felix provisional API completely obvious to downstream users and
> make it difficult for them to use it unknowingly. However, any such release
> is likely to involve numerous problems such as incorrect semantic
> versioning or version mismatch between the provisional and eventual osgi
> release and bundle version inflation if the felix provisional api is
> removed after the OSGI API is released.
>
> As an example, to provisionally export the
> `org.apache.felix.service.metatype` package, the
> `Export-Package` statement would look something like this:
>
> :::xml
> 
>   org.apache.felix.service.metatype; version="0.1";
> mandatory="status"; status="provisional"
> 
>
> When working with new OSGI specifications, constructing a Felix
> provisional API will likely result in parallel package structures between
> the provisional OSGi and Felix APIs. When working with existing
> specifications, it may be necessary to create extensions to existing OSGi
> interfaces in the Felix package namespace.
>
> Comments?
>
> thanks
>
> david jencks
>
> ps.  JB, Guillaume, what exactly are you +1ing?  That we keep talking?
> That the policy stay the same? Change?
>
> On May 16, 2014, at 7:56 PM, "Richard S. Hall" 
> wrote:
>
> > On 5/16/14, 20:43 , David Jencks wrote:
> >> You have a point about specs that don't get released.  And in such a
> circumstance having something released with org.osgi packages marked
> provisional would be sort of a disaster.
> >>
> >> But if a felix subproject is going to be an osgi ri, it really needs to
> be developed with the right package names.  Otherwise, for instance,
> debugging the conformance test suite will be more or less impossible, as
> well as making running the ri against the ct implausible.
> >
> > I believe we did have this issue with the Config Admin RI and somehow we
> managed.
> >
> >>
> >> So I think I'd like the policy to say (sub) projects are strongly
> discouraged from releasing anything with a non released osgi spec api no
> matter what package it's moved to and how provisional it's marked, but it's
> ok to have unreleased org.osgi packages in source as long as either the
> spec gets released before any felix release is made or they are removed
> before any felix release is made.
> >
> > I don't think we can leave policy as a recommendation, because then it
> still leaves it up to whomever to decide.
> >
> > Again, I don't have an issue with saying it is okay in source form, but
> not in a released artifact.
> >
> >
> >>
> >> My next DS commits add the DTO stuff, so unless the policy is changed
> they will have to wait on github for a while.
> >
> > So, make a modified policy proposal and put it up for comments and
> ultimately a vote.
> >
> > -> richard
> >
> >>
> >> thanks
> >> david jencks
> >>
> >>
> >>
> >> On May 16, 2014, at 2:24 PM, Richard S. Hall 
> wrote:
> >>
> >>> There was thought that went into that policy, it wasn't just pulled
> out of the air...further, from experience of working on that specs that
> didn't make the cut (original OBR and Gogo), I can say the policy does a
> good job of avoiding the confusion/complication created in those cases.
> >>>
> >>> So, working around the policy based on personal whim, doesn't seem
> like a good idea...that sort of makes it not a polic

Re: Handling of provisional OSGi API?

2014-05-17 Thread Richard S. Hall

Other than a few minor capitalization issues, it looks ok to me.

-> richard

On 5/17/14, 03:37 , David Jencks wrote:

I propose we change the provisional api policy page 
http://felix.apache.org/documentation/development/provisional-osgi-api-policy.html
 to this (markdown source):

The OSGi Alliance exposes provisional API that may or may not become part of 
future OSGI specifications.  This policy explains how and when Felix 
subprojects may relate to such API. Provisional OSGi API refers to anything in 
the `org.osgi.*` package namespace that is not part of a final released 
specification.

## Policy
1. No Felix release may contain or refer to provisional OSGI API.
1. Provisional API may be included and used in unreleased source code, however 
the API must be part of a final released OSGI specification before this felix 
source may be released.

1. Although it is STRONGLY NOT RECOMMENDED, modified versions of provisional 
api may be released with these modifications:

  1. Any provisional OSGi API must be recreated in the `org.apache.felix.*` 
package name space; this effectively makes it provisional Felix API.
  1. All Felix provisional API must be marked as deprecated.
  1. All Felix provisional API exported from bundles should be exported with a mandatory 
attribute of `status="provisional"`.

## Discussion

The first goal of this policy is to completely avoid using provisional OSGi API 
in released Felix projects given the potential confusion and questions by doing 
so. The second goal is to make the existence of any released Felix provisional 
API completely obvious to downstream users and make it difficult for them to 
use it unknowingly. However, any such release is likely to involve numerous 
problems such as incorrect semantic versioning or version mismatch between the 
provisional and eventual osgi release and bundle version inflation if the felix 
provisional api is removed after the OSGI API is released.

As an example, to provisionally export the `org.apache.felix.service.metatype` 
package, the
`Export-Package` statement would look something like this:

 :::xml
 
   org.apache.felix.service.metatype; version="0.1"; mandatory="status"; 
status="provisional"
 

When working with new OSGI specifications, constructing a Felix provisional API 
will likely result in parallel package structures between the provisional OSGi 
and Felix APIs. When working with existing specifications, it may be necessary 
to create extensions to existing OSGi interfaces in the Felix package namespace.

Comments?

thanks

david jencks

ps.  JB, Guillaume, what exactly are you +1ing?  That we keep talking? That the 
policy stay the same? Change?

On May 16, 2014, at 7:56 PM, "Richard S. Hall"  wrote:


On 5/16/14, 20:43 , David Jencks wrote:

You have a point about specs that don't get released.  And in such a 
circumstance having something released with org.osgi packages marked 
provisional would be sort of a disaster.

But if a felix subproject is going to be an osgi ri, it really needs to be 
developed with the right package names.  Otherwise, for instance, debugging the 
conformance test suite will be more or less impossible, as well as making 
running the ri against the ct implausible.

I believe we did have this issue with the Config Admin RI and somehow we 
managed.


So I think I'd like the policy to say (sub) projects are strongly discouraged 
from releasing anything with a non released osgi spec api no matter what 
package it's moved to and how provisional it's marked, but it's ok to have 
unreleased org.osgi packages in source as long as either the spec gets released 
before any felix release is made or they are removed before any felix release 
is made.

I don't think we can leave policy as a recommendation, because then it still 
leaves it up to whomever to decide.

Again, I don't have an issue with saying it is okay in source form, but not in 
a released artifact.



My next DS commits add the DTO stuff, so unless the policy is changed they will 
have to wait on github for a while.

So, make a modified policy proposal and put it up for comments and ultimately a 
vote.

-> richard


thanks
david jencks



On May 16, 2014, at 2:24 PM, Richard S. Hall  wrote:


There was thought that went into that policy, it wasn't just pulled out of the 
air...further, from experience of working on that specs that didn't make the 
cut (original OBR and Gogo), I can say the policy does a good job of avoiding 
the confusion/complication created in those cases.

So, working around the policy based on personal whim, doesn't seem like a good 
idea...that sort of makes it not a policy.

However, all policies can be improved. You could argue that the policy should simply be 
modified, as David suggests, to say only "released" subprojects must not 
contain provisional API.

I'd personally be fine with that, but such a subproject would still have to be 
fine with not having an official release until the specs are 

Re: Handling of provisional OSGi API?

2014-05-17 Thread David Jencks
I propose we change the provisional api policy page 
http://felix.apache.org/documentation/development/provisional-osgi-api-policy.html
 to this (markdown source):

The OSGi Alliance exposes provisional API that may or may not become part of 
future OSGI specifications.  This policy explains how and when Felix 
subprojects may relate to such API. Provisional OSGi API refers to anything in 
the `org.osgi.*` package namespace that is not part of a final released 
specification.

## Policy
1. No Felix release may contain or refer to provisional OSGI API.
1. Provisional API may be included and used in unreleased source code, however 
the API must be part of a final released OSGI specification before this felix 
source may be released.

1. Although it is STRONGLY NOT RECOMMENDED, modified versions of provisional 
api may be released with these modifications:

 1. Any provisional OSGi API must be recreated in the `org.apache.felix.*` 
package name space; this effectively makes it provisional Felix API.
 1. All Felix provisional API must be marked as deprecated.
 1. All Felix provisional API exported from bundles should be exported with a 
mandatory attribute of `status="provisional"`.

## Discussion

The first goal of this policy is to completely avoid using provisional OSGi API 
in released Felix projects given the potential confusion and questions by doing 
so. The second goal is to make the existence of any released Felix provisional 
API completely obvious to downstream users and make it difficult for them to 
use it unknowingly. However, any such release is likely to involve numerous 
problems such as incorrect semantic versioning or version mismatch between the 
provisional and eventual osgi release and bundle version inflation if the felix 
provisional api is removed after the OSGI API is released.

As an example, to provisionally export the `org.apache.felix.service.metatype` 
package, the
`Export-Package` statement would look something like this:

:::xml

  org.apache.felix.service.metatype; version="0.1"; mandatory="status"; 
status="provisional"


When working with new OSGI specifications, constructing a Felix provisional API 
will likely result in parallel package structures between the provisional OSGi 
and Felix APIs. When working with existing specifications, it may be necessary 
to create extensions to existing OSGi interfaces in the Felix package namespace.

Comments?

thanks

david jencks

ps.  JB, Guillaume, what exactly are you +1ing?  That we keep talking? That the 
policy stay the same? Change?

On May 16, 2014, at 7:56 PM, "Richard S. Hall"  wrote:

> On 5/16/14, 20:43 , David Jencks wrote:
>> You have a point about specs that don't get released.  And in such a 
>> circumstance having something released with org.osgi packages marked 
>> provisional would be sort of a disaster.
>> 
>> But if a felix subproject is going to be an osgi ri, it really needs to be 
>> developed with the right package names.  Otherwise, for instance, debugging 
>> the conformance test suite will be more or less impossible, as well as 
>> making running the ri against the ct implausible.
> 
> I believe we did have this issue with the Config Admin RI and somehow we 
> managed.
> 
>> 
>> So I think I'd like the policy to say (sub) projects are strongly 
>> discouraged from releasing anything with a non released osgi spec api no 
>> matter what package it's moved to and how provisional it's marked, but it's 
>> ok to have unreleased org.osgi packages in source as long as either the spec 
>> gets released before any felix release is made or they are removed before 
>> any felix release is made.
> 
> I don't think we can leave policy as a recommendation, because then it still 
> leaves it up to whomever to decide.
> 
> Again, I don't have an issue with saying it is okay in source form, but not 
> in a released artifact.
> 
> 
>> 
>> My next DS commits add the DTO stuff, so unless the policy is changed they 
>> will have to wait on github for a while.
> 
> So, make a modified policy proposal and put it up for comments and ultimately 
> a vote.
> 
> -> richard
> 
>> 
>> thanks
>> david jencks
>> 
>> 
>> 
>> On May 16, 2014, at 2:24 PM, Richard S. Hall  wrote:
>> 
>>> There was thought that went into that policy, it wasn't just pulled out of 
>>> the air...further, from experience of working on that specs that didn't 
>>> make the cut (original OBR and Gogo), I can say the policy does a good job 
>>> of avoiding the confusion/complication created in those cases.
>>> 
>>> So, working around the policy based on personal whim, doesn't seem like a 
>>> good idea...that sort of makes it not a policy.
>>> 
>>> However, all policies can be improved. You could argue that the policy 
>>> should simply be modified, as David suggests, to say only "released" 
>>> subprojects must not contain provisional API.
>>> 
>>> I'd personally be fine with that, but such a subproject would still have to 
>>> be fine with not havin

Re: Handling of provisional OSGi API?

2014-05-16 Thread Richard S. Hall

On 5/16/14, 20:43 , David Jencks wrote:

You have a point about specs that don't get released.  And in such a 
circumstance having something released with org.osgi packages marked 
provisional would be sort of a disaster.

But if a felix subproject is going to be an osgi ri, it really needs to be 
developed with the right package names.  Otherwise, for instance, debugging the 
conformance test suite will be more or less impossible, as well as making 
running the ri against the ct implausible.


I believe we did have this issue with the Config Admin RI and somehow we 
managed.




So I think I'd like the policy to say (sub) projects are strongly discouraged 
from releasing anything with a non released osgi spec api no matter what 
package it's moved to and how provisional it's marked, but it's ok to have 
unreleased org.osgi packages in source as long as either the spec gets released 
before any felix release is made or they are removed before any felix release 
is made.


I don't think we can leave policy as a recommendation, because then it 
still leaves it up to whomever to decide.


Again, I don't have an issue with saying it is okay in source form, but 
not in a released artifact.





My next DS commits add the DTO stuff, so unless the policy is changed they will 
have to wait on github for a while.


So, make a modified policy proposal and put it up for comments and 
ultimately a vote.


-> richard



thanks
david jencks



On May 16, 2014, at 2:24 PM, Richard S. Hall  wrote:


There was thought that went into that policy, it wasn't just pulled out of the 
air...further, from experience of working on that specs that didn't make the 
cut (original OBR and Gogo), I can say the policy does a good job of avoiding 
the confusion/complication created in those cases.

So, working around the policy based on personal whim, doesn't seem like a good 
idea...that sort of makes it not a policy.

However, all policies can be improved. You could argue that the policy should simply be 
modified, as David suggests, to say only "released" subprojects must not 
contain provisional API.

I'd personally be fine with that, but such a subproject would still have to be 
fine with not having an official release until the specs are final.

-> richard

On 5/16/14, 13:59 , David Jencks wrote:

Well, I pretty much disagree with the existing policy being good or nice, but I 
think I agree with your proposal.

I think that there should be very different policy for the svn tree and for 
releases.  I don't think it's a very good idea to have a release with a 
provisional osgi api, whether or not it's had its packages shaded.  However if 
we decide we need to do this I think _either_ renaming the packages _or_ 
marking the packages provisional should be sufficient, not both.

For the svn tree, I think it's fine to just copy the osgi draft source into 
some appropriate location and build it as part of the project.  The svn tree is 
not for general consumption, if you use it you are supposed to know what you 
are doing and you certainly aren't supposed to rely on it for production 
without doing your own deternimation that it is entirely suitable, since it 
comes with no assurances of anything from apache.  We just shouldn't release 
anything in this state: either the spec gets released first, or we mark the 
spec packages provisional or rename them.

I have the same problem with  the felix ds/rfc 190 work, with the new runtime 
and dto packages, and realistically for me the options are either changing the 
policy, or keeping my work visible on github until the spec is released.

I don't have time or interest to investigate, but it might be possible to use 
the maven shade plugin to rename the packages in byte code.  I imagine we'd 
have to run bnd after this step.  I don't know if the shading can be done to 
integration tests as well so the instructions to bnd don't have to be 
duplicated with and without the mangled package names so we can create an 
unshaded bundle for unshaded integration tests.

thanks for reminding me to think about this before I committed :-)

david jencks

On May 15, 2014, at 11:14 PM, Carsten Ziegeler  wrote:


Hi,

right now we have a policy for handling provisional OSGi API (API that is
currently drafted in the OSGi expert groups but not final or officially
released yet):
http://felix.apache.org/documentation/development/provisional-osgi-api-policy.html

While the policy is good and nice, it requires to rename the packages from
an OSGi namespace to an Apache one for the reasons stated in the policy.
However, this creates a burden for people using this stuff, e.g. when
writing tests as these need to be refactored later on anyway.

The reference implementation of the new Http Service (RFC 189) will be done
as part of Apache Felix and we would like to start working on this in the
open. Therefore we need to commit the current version of the API draft
somewhere. I think if we do this in the whiteboard section, i

Re: Handling of provisional OSGi API?

2014-05-16 Thread Jean-Baptiste Onofré

+1

Regards
JB

On 05/16/2014 11:24 PM, Richard S. Hall wrote:

There was thought that went into that policy, it wasn't just pulled out
of the air...further, from experience of working on that specs that
didn't make the cut (original OBR and Gogo), I can say the policy does a
good job of avoiding the confusion/complication created in those cases.

So, working around the policy based on personal whim, doesn't seem like
a good idea...that sort of makes it not a policy.

However, all policies can be improved. You could argue that the policy
should simply be modified, as David suggests, to say only "released"
subprojects must not contain provisional API.

I'd personally be fine with that, but such a subproject would still have
to be fine with not having an official release until the specs are final.

-> richard

On 5/16/14, 13:59 , David Jencks wrote:

Well, I pretty much disagree with the existing policy being good or
nice, but I think I agree with your proposal.

I think that there should be very different policy for the svn tree
and for releases.  I don't think it's a very good idea to have a
release with a provisional osgi api, whether or not it's had its
packages shaded.  However if we decide we need to do this I think
_either_ renaming the packages _or_ marking the packages provisional
should be sufficient, not both.

For the svn tree, I think it's fine to just copy the osgi draft source
into some appropriate location and build it as part of the project.
The svn tree is not for general consumption, if you use it you are
supposed to know what you are doing and you certainly aren't supposed
to rely on it for production without doing your own deternimation that
it is entirely suitable, since it comes with no assurances of anything
from apache.  We just shouldn't release anything in this state: either
the spec gets released first, or we mark the spec packages provisional
or rename them.

I have the same problem with  the felix ds/rfc 190 work, with the new
runtime and dto packages, and realistically for me the options are
either changing the policy, or keeping my work visible on github until
the spec is released.

I don't have time or interest to investigate, but it might be possible
to use the maven shade plugin to rename the packages in byte code.  I
imagine we'd have to run bnd after this step.  I don't know if the
shading can be done to integration tests as well so the instructions
to bnd don't have to be duplicated with and without the mangled
package names so we can create an unshaded bundle for unshaded
integration tests.

thanks for reminding me to think about this before I committed :-)

david jencks

On May 15, 2014, at 11:14 PM, Carsten Ziegeler 
wrote:


Hi,

right now we have a policy for handling provisional OSGi API (API
that is
currently drafted in the OSGi expert groups but not final or officially
released yet):
http://felix.apache.org/documentation/development/provisional-osgi-api-policy.html


While the policy is good and nice, it requires to rename the packages
from
an OSGi namespace to an Apache one for the reasons stated in the policy.
However, this creates a burden for people using this stuff, e.g. when
writing tests as these need to be refactored later on anyway.

The reference implementation of the new Http Service (RFC 189) will
be done
as part of Apache Felix and we would like to start working on this in
the
open. Therefore we need to commit the current version of the API draft
somewhere. I think if we do this in the whiteboard section, it should be
clear enough that the API is provisional and we don't need to rename the
packages. We can also add all kinds of disclaimers/readmes etc.
But before doing so, I would like to get the general feeling about this.

So, wdyt?

Thanks
Carsten
--
Carsten Ziegeler
cziege...@apache.org




--
Jean-Baptiste Onofré
jbono...@apache.org
http://blog.nanthrax.net
Talend - http://www.talend.com


Re: Handling of provisional OSGi API?

2014-05-16 Thread David Jencks
You have a point about specs that don't get released.  And in such a 
circumstance having something released with org.osgi packages marked 
provisional would be sort of a disaster.

But if a felix subproject is going to be an osgi ri, it really needs to be 
developed with the right package names.  Otherwise, for instance, debugging the 
conformance test suite will be more or less impossible, as well as making 
running the ri against the ct implausible.

So I think I'd like the policy to say (sub) projects are strongly discouraged 
from releasing anything with a non released osgi spec api no matter what 
package it's moved to and how provisional it's marked, but it's ok to have 
unreleased org.osgi packages in source as long as either the spec gets released 
before any felix release is made or they are removed before any felix release 
is made.

My next DS commits add the DTO stuff, so unless the policy is changed they will 
have to wait on github for a while.

thanks
david jencks



On May 16, 2014, at 2:24 PM, Richard S. Hall  wrote:

> There was thought that went into that policy, it wasn't just pulled out of 
> the air...further, from experience of working on that specs that didn't make 
> the cut (original OBR and Gogo), I can say the policy does a good job of 
> avoiding the confusion/complication created in those cases.
> 
> So, working around the policy based on personal whim, doesn't seem like a 
> good idea...that sort of makes it not a policy.
> 
> However, all policies can be improved. You could argue that the policy should 
> simply be modified, as David suggests, to say only "released" subprojects 
> must not contain provisional API.
> 
> I'd personally be fine with that, but such a subproject would still have to 
> be fine with not having an official release until the specs are final.
> 
> -> richard
> 
> On 5/16/14, 13:59 , David Jencks wrote:
>> Well, I pretty much disagree with the existing policy being good or nice, 
>> but I think I agree with your proposal.
>> 
>> I think that there should be very different policy for the svn tree and for 
>> releases.  I don't think it's a very good idea to have a release with a 
>> provisional osgi api, whether or not it's had its packages shaded.  However 
>> if we decide we need to do this I think _either_ renaming the packages _or_ 
>> marking the packages provisional should be sufficient, not both.
>> 
>> For the svn tree, I think it's fine to just copy the osgi draft source into 
>> some appropriate location and build it as part of the project.  The svn tree 
>> is not for general consumption, if you use it you are supposed to know what 
>> you are doing and you certainly aren't supposed to rely on it for production 
>> without doing your own deternimation that it is entirely suitable, since it 
>> comes with no assurances of anything from apache.  We just shouldn't release 
>> anything in this state: either the spec gets released first, or we mark the 
>> spec packages provisional or rename them.
>> 
>> I have the same problem with  the felix ds/rfc 190 work, with the new 
>> runtime and dto packages, and realistically for me the options are either 
>> changing the policy, or keeping my work visible on github until the spec is 
>> released.
>> 
>> I don't have time or interest to investigate, but it might be possible to 
>> use the maven shade plugin to rename the packages in byte code.  I imagine 
>> we'd have to run bnd after this step.  I don't know if the shading can be 
>> done to integration tests as well so the instructions to bnd don't have to 
>> be duplicated with and without the mangled package names so we can create an 
>> unshaded bundle for unshaded integration tests.
>> 
>> thanks for reminding me to think about this before I committed :-)
>> 
>> david jencks
>> 
>> On May 15, 2014, at 11:14 PM, Carsten Ziegeler  wrote:
>> 
>>> Hi,
>>> 
>>> right now we have a policy for handling provisional OSGi API (API that is
>>> currently drafted in the OSGi expert groups but not final or officially
>>> released yet):
>>> http://felix.apache.org/documentation/development/provisional-osgi-api-policy.html
>>> 
>>> While the policy is good and nice, it requires to rename the packages from
>>> an OSGi namespace to an Apache one for the reasons stated in the policy.
>>> However, this creates a burden for people using this stuff, e.g. when
>>> writing tests as these need to be refactored later on anyway.
>>> 
>>> The reference implementation of the new Http Service (RFC 189) will be done
>>> as part of Apache Felix and we would like to start working on this in the
>>> open. Therefore we need to commit the current version of the API draft
>>> somewhere. I think if we do this in the whiteboard section, it should be
>>> clear enough that the API is provisional and we don't need to rename the
>>> packages. We can also add all kinds of disclaimers/readmes etc.
>>> But before doing so, I would like to get the general feeling about this.
>>> 
>>> So, wdyt

Re: Handling of provisional OSGi API?

2014-05-16 Thread Guillaume Nodet
+1

2014-05-16 23:24 GMT+02:00 Richard S. Hall :

> There was thought that went into that policy, it wasn't just pulled out of
> the air...further, from experience of working on that specs that didn't
> make the cut (original OBR and Gogo), I can say the policy does a good job
> of avoiding the confusion/complication created in those cases.
>
> So, working around the policy based on personal whim, doesn't seem like a
> good idea...that sort of makes it not a policy.
>
> However, all policies can be improved. You could argue that the policy
> should simply be modified, as David suggests, to say only "released"
> subprojects must not contain provisional API.
>
> I'd personally be fine with that, but such a subproject would still have
> to be fine with not having an official release until the specs are final.
>
> -> richard
>
>
> On 5/16/14, 13:59 , David Jencks wrote:
>
>> Well, I pretty much disagree with the existing policy being good or nice,
>> but I think I agree with your proposal.
>>
>> I think that there should be very different policy for the svn tree and
>> for releases.  I don't think it's a very good idea to have a release with a
>> provisional osgi api, whether or not it's had its packages shaded.  However
>> if we decide we need to do this I think _either_ renaming the packages _or_
>> marking the packages provisional should be sufficient, not both.
>>
>> For the svn tree, I think it's fine to just copy the osgi draft source
>> into some appropriate location and build it as part of the project.  The
>> svn tree is not for general consumption, if you use it you are supposed to
>> know what you are doing and you certainly aren't supposed to rely on it for
>> production without doing your own deternimation that it is entirely
>> suitable, since it comes with no assurances of anything from apache.  We
>> just shouldn't release anything in this state: either the spec gets
>> released first, or we mark the spec packages provisional or rename them.
>>
>> I have the same problem with  the felix ds/rfc 190 work, with the new
>> runtime and dto packages, and realistically for me the options are either
>> changing the policy, or keeping my work visible on github until the spec is
>> released.
>>
>> I don't have time or interest to investigate, but it might be possible to
>> use the maven shade plugin to rename the packages in byte code.  I imagine
>> we'd have to run bnd after this step.  I don't know if the shading can be
>> done to integration tests as well so the instructions to bnd don't have to
>> be duplicated with and without the mangled package names so we can create
>> an unshaded bundle for unshaded integration tests.
>>
>> thanks for reminding me to think about this before I committed :-)
>>
>> david jencks
>>
>> On May 15, 2014, at 11:14 PM, Carsten Ziegeler 
>> wrote:
>>
>>  Hi,
>>>
>>> right now we have a policy for handling provisional OSGi API (API that is
>>> currently drafted in the OSGi expert groups but not final or officially
>>> released yet):
>>> http://felix.apache.org/documentation/development/
>>> provisional-osgi-api-policy.html
>>>
>>> While the policy is good and nice, it requires to rename the packages
>>> from
>>> an OSGi namespace to an Apache one for the reasons stated in the policy.
>>> However, this creates a burden for people using this stuff, e.g. when
>>> writing tests as these need to be refactored later on anyway.
>>>
>>> The reference implementation of the new Http Service (RFC 189) will be
>>> done
>>> as part of Apache Felix and we would like to start working on this in the
>>> open. Therefore we need to commit the current version of the API draft
>>> somewhere. I think if we do this in the whiteboard section, it should be
>>> clear enough that the API is provisional and we don't need to rename the
>>> packages. We can also add all kinds of disclaimers/readmes etc.
>>> But before doing so, I would like to get the general feeling about this.
>>>
>>> So, wdyt?
>>>
>>> Thanks
>>> Carsten
>>> --
>>> Carsten Ziegeler
>>> cziege...@apache.org
>>>
>>
>


Re: Handling of provisional OSGi API?

2014-05-16 Thread Richard S. Hall
There was thought that went into that policy, it wasn't just pulled out 
of the air...further, from experience of working on that specs that 
didn't make the cut (original OBR and Gogo), I can say the policy does a 
good job of avoiding the confusion/complication created in those cases.


So, working around the policy based on personal whim, doesn't seem like 
a good idea...that sort of makes it not a policy.


However, all policies can be improved. You could argue that the policy 
should simply be modified, as David suggests, to say only "released" 
subprojects must not contain provisional API.


I'd personally be fine with that, but such a subproject would still have 
to be fine with not having an official release until the specs are final.


-> richard

On 5/16/14, 13:59 , David Jencks wrote:

Well, I pretty much disagree with the existing policy being good or nice, but I 
think I agree with your proposal.

I think that there should be very different policy for the svn tree and for 
releases.  I don't think it's a very good idea to have a release with a 
provisional osgi api, whether or not it's had its packages shaded.  However if 
we decide we need to do this I think _either_ renaming the packages _or_ 
marking the packages provisional should be sufficient, not both.

For the svn tree, I think it's fine to just copy the osgi draft source into 
some appropriate location and build it as part of the project.  The svn tree is 
not for general consumption, if you use it you are supposed to know what you 
are doing and you certainly aren't supposed to rely on it for production 
without doing your own deternimation that it is entirely suitable, since it 
comes with no assurances of anything from apache.  We just shouldn't release 
anything in this state: either the spec gets released first, or we mark the 
spec packages provisional or rename them.

I have the same problem with  the felix ds/rfc 190 work, with the new runtime 
and dto packages, and realistically for me the options are either changing the 
policy, or keeping my work visible on github until the spec is released.

I don't have time or interest to investigate, but it might be possible to use 
the maven shade plugin to rename the packages in byte code.  I imagine we'd 
have to run bnd after this step.  I don't know if the shading can be done to 
integration tests as well so the instructions to bnd don't have to be 
duplicated with and without the mangled package names so we can create an 
unshaded bundle for unshaded integration tests.

thanks for reminding me to think about this before I committed :-)

david jencks

On May 15, 2014, at 11:14 PM, Carsten Ziegeler  wrote:


Hi,

right now we have a policy for handling provisional OSGi API (API that is
currently drafted in the OSGi expert groups but not final or officially
released yet):
http://felix.apache.org/documentation/development/provisional-osgi-api-policy.html

While the policy is good and nice, it requires to rename the packages from
an OSGi namespace to an Apache one for the reasons stated in the policy.
However, this creates a burden for people using this stuff, e.g. when
writing tests as these need to be refactored later on anyway.

The reference implementation of the new Http Service (RFC 189) will be done
as part of Apache Felix and we would like to start working on this in the
open. Therefore we need to commit the current version of the API draft
somewhere. I think if we do this in the whiteboard section, it should be
clear enough that the API is provisional and we don't need to rename the
packages. We can also add all kinds of disclaimers/readmes etc.
But before doing so, I would like to get the general feeling about this.

So, wdyt?

Thanks
Carsten
--
Carsten Ziegeler
cziege...@apache.org




Re: Handling of provisional OSGi API?

2014-05-16 Thread David Jencks
Well, I pretty much disagree with the existing policy being good or nice, but I 
think I agree with your proposal.

I think that there should be very different policy for the svn tree and for 
releases.  I don't think it's a very good idea to have a release with a 
provisional osgi api, whether or not it's had its packages shaded.  However if 
we decide we need to do this I think _either_ renaming the packages _or_ 
marking the packages provisional should be sufficient, not both.

For the svn tree, I think it's fine to just copy the osgi draft source into 
some appropriate location and build it as part of the project.  The svn tree is 
not for general consumption, if you use it you are supposed to know what you 
are doing and you certainly aren't supposed to rely on it for production 
without doing your own deternimation that it is entirely suitable, since it 
comes with no assurances of anything from apache.  We just shouldn't release 
anything in this state: either the spec gets released first, or we mark the 
spec packages provisional or rename them.

I have the same problem with  the felix ds/rfc 190 work, with the new runtime 
and dto packages, and realistically for me the options are either changing the 
policy, or keeping my work visible on github until the spec is released.

I don't have time or interest to investigate, but it might be possible to use 
the maven shade plugin to rename the packages in byte code.  I imagine we'd 
have to run bnd after this step.  I don't know if the shading can be done to 
integration tests as well so the instructions to bnd don't have to be 
duplicated with and without the mangled package names so we can create an 
unshaded bundle for unshaded integration tests.

thanks for reminding me to think about this before I committed :-)

david jencks

On May 15, 2014, at 11:14 PM, Carsten Ziegeler  wrote:

> Hi,
> 
> right now we have a policy for handling provisional OSGi API (API that is
> currently drafted in the OSGi expert groups but not final or officially
> released yet):
> http://felix.apache.org/documentation/development/provisional-osgi-api-policy.html
> 
> While the policy is good and nice, it requires to rename the packages from
> an OSGi namespace to an Apache one for the reasons stated in the policy.
> However, this creates a burden for people using this stuff, e.g. when
> writing tests as these need to be refactored later on anyway.
> 
> The reference implementation of the new Http Service (RFC 189) will be done
> as part of Apache Felix and we would like to start working on this in the
> open. Therefore we need to commit the current version of the API draft
> somewhere. I think if we do this in the whiteboard section, it should be
> clear enough that the API is provisional and we don't need to rename the
> packages. We can also add all kinds of disclaimers/readmes etc.
> But before doing so, I would like to get the general feeling about this.
> 
> So, wdyt?
> 
> Thanks
> Carsten
> -- 
> Carsten Ziegeler
> cziege...@apache.org



Handling of provisional OSGi API?

2014-05-16 Thread Carsten Ziegeler
Hi,

right now we have a policy for handling provisional OSGi API (API that is
currently drafted in the OSGi expert groups but not final or officially
released yet):
http://felix.apache.org/documentation/development/provisional-osgi-api-policy.html

While the policy is good and nice, it requires to rename the packages from
an OSGi namespace to an Apache one for the reasons stated in the policy.
However, this creates a burden for people using this stuff, e.g. when
writing tests as these need to be refactored later on anyway.

The reference implementation of the new Http Service (RFC 189) will be done
as part of Apache Felix and we would like to start working on this in the
open. Therefore we need to commit the current version of the API draft
somewhere. I think if we do this in the whiteboard section, it should be
clear enough that the API is provisional and we don't need to rename the
packages. We can also add all kinds of disclaimers/readmes etc.
But before doing so, I would like to get the general feeling about this.

So, wdyt?

Thanks
Carsten
-- 
Carsten Ziegeler
cziege...@apache.org


Re: Handling of provisional OSGi API

2010-09-23 Thread Richard S. Hall
 just going to push forward for now with what we have in
trunk,
which is using mandatory attributes. We can continue to refine 
our
policy and when we are done, we can do another release to 
reflect it

even if it means doing another one next week.

So, to summarize, we now have three options:

1. Just mandatory attributes.
2. Just deprecated tags.
3. Both.

After Tom's arguments, I'm probably now leaning toward #3.

->  richard


Quickly. :-)

->  richard


On 9/22/10 9:19, Richard S. Hall wrote:

   On 9/22/10 6:16, Guillaume Nodet wrote:
I'm also not convinced by the mandatory attribute.  I do 
understand
the value, but it may cause a lot of burden on our users 
for not

much.
If you have another recommendation for making it 100% clear 
to our
users that these packages will not be supported in the 
future, then
speak up. It's not that I want to use mandatory attributes, 
it's

that
I don't want to be taken to task in the future for throwing 
away the

API. In that regard, I think there is benefit to using it since
people have to go out of their way to use it.

Regarding the version number, I was using 0.6.1 because it 
is only a

maintenance release as compared to 0.6.0. The completely
incompatible
change was from 0.4.0 to 0.6.0, no? Or are you specifically
referring
to the mandatory attribute? If so, I don't have an issue 
with it
being 0.8.0 if you think the mandatory attribute warrants 
it, but I

don't really think that constitutes a breaking code
change...certainly a breaking metadata change.

->  richard

Mandatory attributes are not very common and the 
tooling might

not be
prepared to handle those gracefully.  For example, I've 
just hit a

big
problem with karaf integration tests that use pax-exam, 
because the
mandatory attribute it not automatically added, so all test 
bundles

were failing during resolution ...
I've fixed that, but an average user will be in a real 
trouble if

hitting this.

On Wed, Sep 22, 2010 at 08:29, Guillaume 
Nodet

wrote:

Do you plan to release gogo as 0.6.1 as indicated in JIRA ?
Given the change is fully incompatible, I'd at least bump the
minor
version ...

On Mon, Sep 20, 2010 at 17:50, Richard S.
Hall   wrote:

On 9/20/10 11:21, Derek Baum wrote:

I also favor #1.

When we apply this to gogo, it will mean removing the draft
RFC-147 API
from
the org.osgi.service.command namespace and moving it to 
a felix

namespace.

We actually already did this for the gogo-0.6 release, 
but then

reverted
the
change in the trunk, as it broke many command providers who
imported
org.osgi.service.command. Back then we didn't have a 
policy for

supporting
draft OSGi APIs, but now it seems like we've agreed on 
#1. Do we

need a
vote?
It sounds like we have consensus, so we can probably just 
move

forward.

->   richard


Derek



On 19 September 2010 17:27, Richard S.
Hall wrote:


On 9/18/10 10:34, Felix Meschberger wrote:


Hi,

While I understand (and certainly don't underestimate the
consequences
of) the drawbacks of option (1) I still think it is 
the better

option.

At the time the OSGi releases the official API, we can 
still

keep our
internal API for certain period of time thus 
supporting both

API, if we
so wish.

 From my point of view we should just export the 
packages

with
mandatory
attributes and make it clear they will change when the 
API goes

final.
For
framework, I wouldn't plan to provide any ongoing 
support for

provisional
API. However, I don't think we need to mandate a global 
Felix

policy for
this and subprojects can choose to support two APIs if 
they

want.

-> richard



Regards

Felix

Am 17.09.2010 18:35, schrieb Richard S. Hall:

For a long time, we've played a little fast and 
loose

with our
handling
of provisional OSGi API. Starting with the OBR 1.6.0 
and Gogo

0.6.0
releases, we've started to evolve a policy on how to 
handle

this, but
nothing has been decided concretely. This is problematic
since
it leads
different people to different decisions. Thus, its about
time we
defined
our policy on this.

So, what's the issue?

Provisional OSGi API is not official. Further, 
provisional

package
content is evolving and these changes are not always 
made

readily
available by the OSGi Alliance. Even though some of 
us are

members of
the OSGi Alliance, we are not necessarily at liberty to
disclose
changes
to internal RFCs.

So, what can we do about it?

I see two potential [reasonable] policies from which 
we could

choose:

 1. Always use the org.apache.felix package 
namespace for

provisional
OSGi API until the spec goes final.
 2. Use the org.osgi package namespace while the
provisional
API is in
development, but only expose what has been 
publicly

made
available
by the OSGi Alliance.

Both approaches have their drawbacks.

The

Re: Handling of provisional OSGi API

2010-09-23 Thread Richard S. Hall
do another release to 
reflect it

even if it means doing another one next week.

So, to summarize, we now have three options:

1. Just mandatory attributes.
2. Just deprecated tags.
3. Both.

After Tom's arguments, I'm probably now leaning toward #3.

->  richard


Quickly. :-)

->  richard


On 9/22/10 9:19, Richard S. Hall wrote:

   On 9/22/10 6:16, Guillaume Nodet wrote:
I'm also not convinced by the mandatory attribute.  I do 
understand
the value, but it may cause a lot of burden on our users for 
not

much.
If you have another recommendation for making it 100% clear 
to our
users that these packages will not be supported in the 
future, then

speak up. It's not that I want to use mandatory attributes, it's
that
I don't want to be taken to task in the future for throwing 
away the

API. In that regard, I think there is benefit to using it since
people have to go out of their way to use it.

Regarding the version number, I was using 0.6.1 because it is 
only a

maintenance release as compared to 0.6.0. The completely
incompatible
change was from 0.4.0 to 0.6.0, no? Or are you specifically
referring
to the mandatory attribute? If so, I don't have an issue with it
being 0.8.0 if you think the mandatory attribute warrants it, 
but I

don't really think that constitutes a breaking code
change...certainly a breaking metadata change.

->  richard

Mandatory attributes are not very common and the tooling 
might

not be
prepared to handle those gracefully.  For example, I've just 
hit a

big
problem with karaf integration tests that use pax-exam, 
because the
mandatory attribute it not automatically added, so all test 
bundles

were failing during resolution ...
I've fixed that, but an average user will be in a real 
trouble if

hitting this.

On Wed, Sep 22, 2010 at 08:29, Guillaume 
Nodet

wrote:

Do you plan to release gogo as 0.6.1 as indicated in JIRA ?
Given the change is fully incompatible, I'd at least bump the
minor
version ...

On Mon, Sep 20, 2010 at 17:50, Richard S.
Hall   wrote:

On 9/20/10 11:21, Derek Baum wrote:

I also favor #1.

When we apply this to gogo, it will mean removing the draft
RFC-147 API
from
the org.osgi.service.command namespace and moving it to a 
felix

namespace.

We actually already did this for the gogo-0.6 release, 
but then

reverted
the
change in the trunk, as it broke many command providers who
imported
org.osgi.service.command. Back then we didn't have a 
policy for

supporting
draft OSGi APIs, but now it seems like we've agreed on 
#1. Do we

need a
vote?
It sounds like we have consensus, so we can probably just 
move

forward.

->   richard


Derek



On 19 September 2010 17:27, Richard S.
Hall wrote:


On 9/18/10 10:34, Felix Meschberger wrote:


Hi,

While I understand (and certainly don't underestimate the
consequences
of) the drawbacks of option (1) I still think it is the 
better

option.

At the time the OSGi releases the official API, we can 
still

keep our
internal API for certain period of time thus supporting 
both

API, if we
so wish.

 From my point of view we should just export the 
packages

with
mandatory
attributes and make it clear they will change when the 
API goes

final.
For
framework, I wouldn't plan to provide any ongoing 
support for

provisional
API. However, I don't think we need to mandate a global 
Felix

policy for
this and subprojects can choose to support two APIs if they
want.

-> richard



Regards

Felix

Am 17.09.2010 18:35, schrieb Richard S. Hall:


For a long time, we've played a little fast and loose
with our
handling
of provisional OSGi API. Starting with the OBR 1.6.0 
and Gogo

0.6.0
releases, we've started to evolve a policy on how to 
handle

this, but
nothing has been decided concretely. This is problematic
since
it leads
different people to different decisions. Thus, its about
time we
defined
our policy on this.

So, what's the issue?

Provisional OSGi API is not official. Further, 
provisional

package
content is evolving and these changes are not always made
readily
available by the OSGi Alliance. Even though some of us 
are

members of
the OSGi Alliance, we are not necessarily at liberty to
disclose
changes
to internal RFCs.

So, what can we do about it?

I see two potential [reasonable] policies from which 
we could

choose:

 1. Always use the org.apache.felix package 
namespace for

provisional
OSGi API until the spec goes final.
 2. Use the org.osgi package namespace while the
provisional
API is in
development, but only expose what has been 
publicly

made
available
by the OSGi Alliance.

Both approaches have their drawbacks.

The benefit of (1) is that the legal/IP/etiquette issues
and/or
concerns
are reduced to those associated with normal open source
development.
For
completely new development, like Go

Re: Handling of provisional OSGi API

2010-09-23 Thread Guillaume Nodet
mmendation for making it 100% clear to our
>>>>>>>>>> users that these packages will not be supported in the future,
>>>>>>>>>> then
>>>>>>>>>> speak up. It's not that I want to use mandatory attributes, it's
>>>>>>>>>> that
>>>>>>>>>> I don't want to be taken to task in the future for throwing away
>>>>>>>>>> the
>>>>>>>>>> API. In that regard, I think there is benefit to using it since
>>>>>>>>>> people have to go out of their way to use it.
>>>>>>>>>>
>>>>>>>>>> Regarding the version number, I was using 0.6.1 because it is only
>>>>>>>>>> a
>>>>>>>>>> maintenance release as compared to 0.6.0. The completely
>>>>>>>>>> incompatible
>>>>>>>>>> change was from 0.4.0 to 0.6.0, no? Or are you specifically
>>>>>>>>>> referring
>>>>>>>>>> to the mandatory attribute? If so, I don't have an issue with it
>>>>>>>>>> being 0.8.0 if you think the mandatory attribute warrants it, but
>>>>>>>>>> I
>>>>>>>>>> don't really think that constitutes a breaking code
>>>>>>>>>> change...certainly a breaking metadata change.
>>>>>>>>>>
>>>>>>>>>> ->      richard
>>>>>>>>>>
>>>>>>>>>>>    Mandatory attributes are not very common and the tooling might
>>>>>>>>>>> not be
>>>>>>>>>>> prepared to handle those gracefully.  For example, I've just hit
>>>>>>>>>>> a
>>>>>>>>>>> big
>>>>>>>>>>> problem with karaf integration tests that use pax-exam, because
>>>>>>>>>>> the
>>>>>>>>>>> mandatory attribute it not automatically added, so all test
>>>>>>>>>>> bundles
>>>>>>>>>>> were failing during resolution ...
>>>>>>>>>>> I've fixed that, but an average user will be in a real trouble if
>>>>>>>>>>> hitting this.
>>>>>>>>>>>
>>>>>>>>>>> On Wed, Sep 22, 2010 at 08:29, Guillaume Nodet
>>>>>>>>>>> wrote:
>>>>>>>>>>>>
>>>>>>>>>>>> Do you plan to release gogo as 0.6.1 as indicated in JIRA ?
>>>>>>>>>>>> Given the change is fully incompatible, I'd at least bump the
>>>>>>>>>>>> minor
>>>>>>>>>>>> version ...
>>>>>>>>>>>>
>>>>>>>>>>>> On Mon, Sep 20, 2010 at 17:50, Richard S.
>>>>>>>>>>>> Hall       wrote:
>>>>>>>>>>>>>
>>>>>>>>>>>>>    On 9/20/10 11:21, Derek Baum wrote:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> I also favor #1.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> When we apply this to gogo, it will mean removing the draft
>>>>>>>>>>>>>> RFC-147 API
>>>>>>>>>>>>>> from
>>>>>>>>>>>>>> the org.osgi.service.command namespace and moving it to a
>>>>>>>>>>>>>> felix
>>>>>>>>>>>>>> namespace.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> We actually already did this for the gogo-0.6 release, but
>>>>>>>>>>>>>> then
>>>>>>>>>>>>>> reverted
>>>>>>>>>>>>>> the
>>>>>>>>>>>>>> change in the trunk, as it broke many command providers who
>>>>>>>>>>>>>> imported
>>>>>>>>>>>>>> org.osgi.service.command. Back then we didn't 

Re: Handling of provisional OSGi API

2010-09-23 Thread Richard S. Hall
uments, I'm probably now leaning toward #3.

->  richard


Quickly. :-)

->  richard


On 9/22/10 9:19, Richard S. Hall wrote:

   On 9/22/10 6:16, Guillaume Nodet wrote:

I'm also not convinced by the mandatory attribute.  I do understand
the value, but it may cause a lot of burden on our users for not
much.

If you have another recommendation for making it 100% clear to our
users that these packages will not be supported in the future, then
speak up. It's not that I want to use mandatory attributes, it's
that
I don't want to be taken to task in the future for throwing away the
API. In that regard, I think there is benefit to using it since
people have to go out of their way to use it.

Regarding the version number, I was using 0.6.1 because it is only a
maintenance release as compared to 0.6.0. The completely
incompatible
change was from 0.4.0 to 0.6.0, no? Or are you specifically
referring
to the mandatory attribute? If so, I don't have an issue with it
being 0.8.0 if you think the mandatory attribute warrants it, but I
don't really think that constitutes a breaking code
change...certainly a breaking metadata change.

->  richard


Mandatory attributes are not very common and the tooling might
not be
prepared to handle those gracefully.  For example, I've just hit a
big
problem with karaf integration tests that use pax-exam, because the
mandatory attribute it not automatically added, so all test bundles
were failing during resolution ...
I've fixed that, but an average user will be in a real trouble if
hitting this.

On Wed, Sep 22, 2010 at 08:29, Guillaume Nodet
wrote:

Do you plan to release gogo as 0.6.1 as indicated in JIRA ?
Given the change is fully incompatible, I'd at least bump the
minor
version ...

On Mon, Sep 20, 2010 at 17:50, Richard S.
Hall   wrote:

On 9/20/10 11:21, Derek Baum wrote:

I also favor #1.

When we apply this to gogo, it will mean removing the draft
RFC-147 API
from
the org.osgi.service.command namespace and moving it to a felix
namespace.

We actually already did this for the gogo-0.6 release, but then
reverted
the
change in the trunk, as it broke many command providers who
imported
org.osgi.service.command. Back then we didn't have a policy for
supporting
draft OSGi APIs, but now it seems like we've agreed on #1. Do we
need a
vote?

It sounds like we have consensus, so we can probably just move
forward.

->   richard


Derek



On 19 September 2010 17:27, Richard S.
Hall wrote:


On 9/18/10 10:34, Felix Meschberger wrote:


Hi,

While I understand (and certainly don't underestimate the
consequences
of) the drawbacks of option (1) I still think it is the better
option.

At the time the OSGi releases the official API, we can still
keep our
internal API for certain period of time thus supporting both
API, if we
so wish.


 From my point of view we should just export the packages
with
mandatory
attributes and make it clear they will change when the API goes
final.
For
framework, I wouldn't plan to provide any ongoing support for
provisional
API. However, I don't think we need to mandate a global Felix
policy for
this and subprojects can choose to support two APIs if they
want.

-> richard



Regards

Felix

Am 17.09.2010 18:35, schrieb Richard S. Hall:


For a long time, we've played a little fast and loose
with our
handling
of provisional OSGi API. Starting with the OBR 1.6.0 and Gogo
0.6.0
releases, we've started to evolve a policy on how to handle
this, but
nothing has been decided concretely. This is problematic
since
it leads
different people to different decisions. Thus, its about
time we
defined
our policy on this.

So, what's the issue?

Provisional OSGi API is not official. Further, provisional
package
content is evolving and these changes are not always made
readily
available by the OSGi Alliance. Even though some of us are
members of
the OSGi Alliance, we are not necessarily at liberty to
disclose
changes
to internal RFCs.

So, what can we do about it?

I see two potential [reasonable] policies from which we could
choose:

 1. Always use the org.apache.felix package namespace for
provisional
OSGi API until the spec goes final.
 2. Use the org.osgi package namespace while the
provisional
API is in
development, but only expose what has been publicly
made
available
by the OSGi Alliance.

Both approaches have their drawbacks.

The benefit of (1) is that the legal/IP/etiquette issues
and/or
concerns
are reduced to those associated with normal open source
development.
For
completely new development, like Gogo, this would all happen
in
non-OSGi
packages, while changes to existing packages would need to be
done in
subclasses in non-OSGi packages. One downside of (1) is that
it will
always result in a package name change at the end that will
break
existing clients. For this reason, such 

Re: Handling of provisional OSGi API

2010-09-23 Thread Guillaume Nodet
 resolution ...
>>>>>>>>> I've fixed that, but an average user will be in a real trouble if
>>>>>>>>> hitting this.
>>>>>>>>>
>>>>>>>>> On Wed, Sep 22, 2010 at 08:29, Guillaume Nodet
>>>>>>>>> wrote:
>>>>>>>>>>
>>>>>>>>>> Do you plan to release gogo as 0.6.1 as indicated in JIRA ?
>>>>>>>>>> Given the change is fully incompatible, I'd at least bump the
>>>>>>>>>> minor
>>>>>>>>>> version ...
>>>>>>>>>>
>>>>>>>>>> On Mon, Sep 20, 2010 at 17:50, Richard S.
>>>>>>>>>> Hall     wrote:
>>>>>>>>>>>
>>>>>>>>>>>    On 9/20/10 11:21, Derek Baum wrote:
>>>>>>>>>>>>
>>>>>>>>>>>> I also favor #1.
>>>>>>>>>>>>
>>>>>>>>>>>> When we apply this to gogo, it will mean removing the draft
>>>>>>>>>>>> RFC-147 API
>>>>>>>>>>>> from
>>>>>>>>>>>> the org.osgi.service.command namespace and moving it to a felix
>>>>>>>>>>>> namespace.
>>>>>>>>>>>>
>>>>>>>>>>>> We actually already did this for the gogo-0.6 release, but then
>>>>>>>>>>>> reverted
>>>>>>>>>>>> the
>>>>>>>>>>>> change in the trunk, as it broke many command providers who
>>>>>>>>>>>> imported
>>>>>>>>>>>> org.osgi.service.command. Back then we didn't have a policy for
>>>>>>>>>>>> supporting
>>>>>>>>>>>> draft OSGi APIs, but now it seems like we've agreed on #1. Do we
>>>>>>>>>>>> need a
>>>>>>>>>>>> vote?
>>>>>>>>>>>
>>>>>>>>>>> It sounds like we have consensus, so we can probably just move
>>>>>>>>>>> forward.
>>>>>>>>>>>
>>>>>>>>>>> ->     richard
>>>>>>>>>>>
>>>>>>>>>>>> Derek
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> On 19 September 2010 17:27, Richard S.
>>>>>>>>>>>> Hall       wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>>    On 9/18/10 10:34, Felix Meschberger wrote:
>>>>>>>>>>>>>
>>>>>>>>>>>>>> Hi,
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> While I understand (and certainly don't underestimate the
>>>>>>>>>>>>>> consequences
>>>>>>>>>>>>>> of) the drawbacks of option (1) I still think it is the better
>>>>>>>>>>>>>> option.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> At the time the OSGi releases the official API, we can still
>>>>>>>>>>>>>> keep our
>>>>>>>>>>>>>> internal API for certain period of time thus supporting both
>>>>>>>>>>>>>> API, if we
>>>>>>>>>>>>>> so wish.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>     From my point of view we should just export the packages
>>>>>>>>>>>>> with
>>>>>>>>>>>>> mandatory
>>>>>>>>>>>>> attributes and make it clear they will change when the API goes
>>>>>>>>>>>>> final.
>>>>>>>>>>>>> For
>>>>>>>>>>>>> framework, I wouldn't plan to provide any ongoing support for
>>>>>>>>>>

Re: Handling of provisional OSGi API

2010-09-23 Thread Richard S. Hall
e packages will not be supported in the future, then
speak up. It's not that I want to use mandatory attributes, it's that
I don't want to be taken to task in the future for throwing away the
API. In that regard, I think there is benefit to using it since
people have to go out of their way to use it.

Regarding the version number, I was using 0.6.1 because it is only a
maintenance release as compared to 0.6.0. The completely incompatible
change was from 0.4.0 to 0.6.0, no? Or are you specifically referring
to the mandatory attribute? If so, I don't have an issue with it
being 0.8.0 if you think the mandatory attribute warrants it, but I
don't really think that constitutes a breaking code
change...certainly a breaking metadata change.

->richard


Mandatory attributes are not very common and the tooling might
not be
prepared to handle those gracefully.  For example, I've just hit a
big
problem with karaf integration tests that use pax-exam, because the
mandatory attribute it not automatically added, so all test bundles
were failing during resolution ...
I've fixed that, but an average user will be in a real trouble if
hitting this.

On Wed, Sep 22, 2010 at 08:29, Guillaume Nodet
wrote:

Do you plan to release gogo as 0.6.1 as indicated in JIRA ?
Given the change is fully incompatible, I'd at least bump the minor
version ...

On Mon, Sep 20, 2010 at 17:50, Richard S.
Hall wrote:

On 9/20/10 11:21, Derek Baum wrote:

I also favor #1.

When we apply this to gogo, it will mean removing the draft
RFC-147 API
from
the org.osgi.service.command namespace and moving it to a felix
namespace.

We actually already did this for the gogo-0.6 release, but then
reverted
the
change in the trunk, as it broke many command providers who
imported
org.osgi.service.command. Back then we didn't have a policy for
supporting
draft OSGi APIs, but now it seems like we've agreed on #1. Do we
need a
vote?

It sounds like we have consensus, so we can probably just move
forward.

-> richard


Derek



On 19 September 2010 17:27, Richard S.
Hall   wrote:


On 9/18/10 10:34, Felix Meschberger wrote:


Hi,

While I understand (and certainly don't underestimate the
consequences
of) the drawbacks of option (1) I still think it is the better
option.

At the time the OSGi releases the official API, we can still
keep our
internal API for certain period of time thus supporting both
API, if we
so wish.


 From my point of view we should just export the packages with
mandatory
attributes and make it clear they will change when the API goes
final.
For
framework, I wouldn't plan to provide any ongoing support for
provisional
API. However, I don't think we need to mandate a global Felix
policy for
this and subprojects can choose to support two APIs if they want.

->   richard



Regards

Felix

Am 17.09.2010 18:35, schrieb Richard S. Hall:


For a long time, we've played a little fast and loose
with our
handling
of provisional OSGi API. Starting with the OBR 1.6.0 and Gogo
0.6.0
releases, we've started to evolve a policy on how to handle
this, but
nothing has been decided concretely. This is problematic since
it leads
different people to different decisions. Thus, its about
time we
defined
our policy on this.

So, what's the issue?

Provisional OSGi API is not official. Further, provisional
package
content is evolving and these changes are not always made
readily
available by the OSGi Alliance. Even though some of us are
members of
the OSGi Alliance, we are not necessarily at liberty to
disclose
changes
to internal RFCs.

So, what can we do about it?

I see two potential [reasonable] policies from which we could
choose:

 1. Always use the org.apache.felix package namespace for
provisional
OSGi API until the spec goes final.
 2. Use the org.osgi package namespace while the provisional
API is in
development, but only expose what has been publicly made
available
by the OSGi Alliance.

Both approaches have their drawbacks.

The benefit of (1) is that the legal/IP/etiquette issues and/or
concerns
are reduced to those associated with normal open source
development.
For
completely new development, like Gogo, this would all happen in
non-OSGi
packages, while changes to existing packages would need to be
done in
subclasses in non-OSGi packages. One downside of (1) is that
it will
always result in a package name change at the end that will
break
existing clients. For this reason, such experimental packages
should be
exported with mandatory attributes to warn potential clients.

The benefit of (2) is that the package namespace is more
consistent.
The
downside of (2) is that it is a IP/legal/etiquette gray area
as to
whether or not we can do official releases of subprojects
containing
provisional OSGi API. Even if we do not modify the API, it
still is
potentially confusing to our users who are getting a

Re: Handling of provisional OSGi API

2010-09-23 Thread Guillaume Nodet
butes.
>>>>    2. Just deprecated tags.
>>>>    3. Both.
>>>>
>>>> After Tom's arguments, I'm probably now leaning toward #3.
>>>>
>>>> ->  richard
>>>>
>>>>> Quickly. :-)
>>>>>
>>>>> ->  richard
>>>>>
>>>>>
>>>>> On 9/22/10 9:19, Richard S. Hall wrote:
>>>>>>   On 9/22/10 6:16, Guillaume Nodet wrote:
>>>>>>> I'm also not convinced by the mandatory attribute.  I do understand
>>>>>>> the value, but it may cause a lot of burden on our users for not
>>>>>>> much.
>>>>>> If you have another recommendation for making it 100% clear to our
>>>>>> users that these packages will not be supported in the future, then
>>>>>> speak up. It's not that I want to use mandatory attributes, it's that
>>>>>> I don't want to be taken to task in the future for throwing away the
>>>>>> API. In that regard, I think there is benefit to using it since
>>>>>> people have to go out of their way to use it.
>>>>>>
>>>>>> Regarding the version number, I was using 0.6.1 because it is only a
>>>>>> maintenance release as compared to 0.6.0. The completely incompatible
>>>>>> change was from 0.4.0 to 0.6.0, no? Or are you specifically referring
>>>>>> to the mandatory attribute? If so, I don't have an issue with it
>>>>>> being 0.8.0 if you think the mandatory attribute warrants it, but I
>>>>>> don't really think that constitutes a breaking code
>>>>>> change...certainly a breaking metadata change.
>>>>>>
>>>>>> ->  richard
>>>>>>
>>>>>>>    Mandatory attributes are not very common and the tooling might
>>>>>>> not be
>>>>>>> prepared to handle those gracefully.  For example, I've just hit a
>>>>>>> big
>>>>>>> problem with karaf integration tests that use pax-exam, because the
>>>>>>> mandatory attribute it not automatically added, so all test bundles
>>>>>>> were failing during resolution ...
>>>>>>> I've fixed that, but an average user will be in a real trouble if
>>>>>>> hitting this.
>>>>>>>
>>>>>>> On Wed, Sep 22, 2010 at 08:29, Guillaume Nodet
>>>>>>> wrote:
>>>>>>>> Do you plan to release gogo as 0.6.1 as indicated in JIRA ?
>>>>>>>> Given the change is fully incompatible, I'd at least bump the minor
>>>>>>>> version ...
>>>>>>>>
>>>>>>>> On Mon, Sep 20, 2010 at 17:50, Richard S.
>>>>>>>> Hall   wrote:
>>>>>>>>>    On 9/20/10 11:21, Derek Baum wrote:
>>>>>>>>>> I also favor #1.
>>>>>>>>>>
>>>>>>>>>> When we apply this to gogo, it will mean removing the draft
>>>>>>>>>> RFC-147 API
>>>>>>>>>> from
>>>>>>>>>> the org.osgi.service.command namespace and moving it to a felix
>>>>>>>>>> namespace.
>>>>>>>>>>
>>>>>>>>>> We actually already did this for the gogo-0.6 release, but then
>>>>>>>>>> reverted
>>>>>>>>>> the
>>>>>>>>>> change in the trunk, as it broke many command providers who
>>>>>>>>>> imported
>>>>>>>>>> org.osgi.service.command. Back then we didn't have a policy for
>>>>>>>>>> supporting
>>>>>>>>>> draft OSGi APIs, but now it seems like we've agreed on #1. Do we
>>>>>>>>>> need a
>>>>>>>>>> vote?
>>>>>>>>> It sounds like we have consensus, so we can probably just move
>>>>>>>>> forward.
>>>>>>>>>
>>>>>>>>> ->   richard
>>>>>>>>>
>>>>>>>>>> Derek
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>

Re: Handling of provisional OSGi API

2010-09-23 Thread Felix Meschberger
#x27;s not that I want to use mandatory attributes, it's that
>>>>> I don't want to be taken to task in the future for throwing away the
>>>>> API. In that regard, I think there is benefit to using it since
>>>>> people have to go out of their way to use it.
>>>>>
>>>>> Regarding the version number, I was using 0.6.1 because it is only a
>>>>> maintenance release as compared to 0.6.0. The completely incompatible
>>>>> change was from 0.4.0 to 0.6.0, no? Or are you specifically referring
>>>>> to the mandatory attribute? If so, I don't have an issue with it
>>>>> being 0.8.0 if you think the mandatory attribute warrants it, but I
>>>>> don't really think that constitutes a breaking code
>>>>> change...certainly a breaking metadata change.
>>>>>
>>>>> ->  richard
>>>>>
>>>>>>Mandatory attributes are not very common and the tooling might
>>>>>> not be
>>>>>> prepared to handle those gracefully.  For example, I've just hit a
>>>>>> big
>>>>>> problem with karaf integration tests that use pax-exam, because the
>>>>>> mandatory attribute it not automatically added, so all test bundles
>>>>>> were failing during resolution ...
>>>>>> I've fixed that, but an average user will be in a real trouble if
>>>>>> hitting this.
>>>>>>
>>>>>> On Wed, Sep 22, 2010 at 08:29, Guillaume Nodet
>>>>>> wrote:
>>>>>>> Do you plan to release gogo as 0.6.1 as indicated in JIRA ?
>>>>>>> Given the change is fully incompatible, I'd at least bump the minor
>>>>>>> version ...
>>>>>>>
>>>>>>> On Mon, Sep 20, 2010 at 17:50, Richard S.
>>>>>>> Hall   wrote:
>>>>>>>>On 9/20/10 11:21, Derek Baum wrote:
>>>>>>>>> I also favor #1.
>>>>>>>>>
>>>>>>>>> When we apply this to gogo, it will mean removing the draft
>>>>>>>>> RFC-147 API
>>>>>>>>> from
>>>>>>>>> the org.osgi.service.command namespace and moving it to a felix
>>>>>>>>> namespace.
>>>>>>>>>
>>>>>>>>> We actually already did this for the gogo-0.6 release, but then
>>>>>>>>> reverted
>>>>>>>>> the
>>>>>>>>> change in the trunk, as it broke many command providers who
>>>>>>>>> imported
>>>>>>>>> org.osgi.service.command. Back then we didn't have a policy for
>>>>>>>>> supporting
>>>>>>>>> draft OSGi APIs, but now it seems like we've agreed on #1. Do we
>>>>>>>>> need a
>>>>>>>>> vote?
>>>>>>>> It sounds like we have consensus, so we can probably just move
>>>>>>>> forward.
>>>>>>>>
>>>>>>>> ->   richard
>>>>>>>>
>>>>>>>>> Derek
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On 19 September 2010 17:27, Richard S.
>>>>>>>>> Hall wrote:
>>>>>>>>>
>>>>>>>>>>On 9/18/10 10:34, Felix Meschberger wrote:
>>>>>>>>>>
>>>>>>>>>>> Hi,
>>>>>>>>>>>
>>>>>>>>>>> While I understand (and certainly don't underestimate the
>>>>>>>>>>> consequences
>>>>>>>>>>> of) the drawbacks of option (1) I still think it is the better
>>>>>>>>>>> option.
>>>>>>>>>>>
>>>>>>>>>>> At the time the OSGi releases the official API, we can still
>>>>>>>>>>> keep our
>>>>>>>>>>> internal API for certain period of time thus supporting both
>>>>>>>>>>> API, if we
>>>>>>>>>>> so wish.
>>>>>>>>>>>
>>>>>>>>>> Fro

Re: Handling of provisional OSGi API

2010-09-23 Thread Richard S. Hall
l mean removing the draft
RFC-147 API
from
the org.osgi.service.command namespace and moving it to a felix
namespace.

We actually already did this for the gogo-0.6 release, but then
reverted
the
change in the trunk, as it broke many command providers who imported
org.osgi.service.command. Back then we didn't have a policy for
supporting
draft OSGi APIs, but now it seems like we've agreed on #1. Do we
need a
vote?

It sounds like we have consensus, so we can probably just move
forward.

->   richard


Derek



On 19 September 2010 17:27, Richard S.
Hall wrote:


   On 9/18/10 10:34, Felix Meschberger wrote:


Hi,

While I understand (and certainly don't underestimate the
consequences
of) the drawbacks of option (1) I still think it is the better
option.

At the time the OSGi releases the official API, we can still
keep our
internal API for certain period of time thus supporting both
API, if we
so wish.


From my point of view we should just export the packages with
mandatory
attributes and make it clear they will change when the API goes
final.
For
framework, I wouldn't plan to provide any ongoing support for
provisional
API. However, I don't think we need to mandate a global Felix
policy for
this and subprojects can choose to support two APIs if they want.

->     richard



   Regards

Felix

Am 17.09.2010 18:35, schrieb Richard S. Hall:


   For a long time, we've played a little fast and loose with our
handling
of provisional OSGi API. Starting with the OBR 1.6.0 and Gogo
0.6.0
releases, we've started to evolve a policy on how to handle
this, but
nothing has been decided concretely. This is problematic since
it leads
different people to different decisions. Thus, its about time we
defined
our policy on this.

So, what's the issue?

Provisional OSGi API is not official. Further, provisional
package
content is evolving and these changes are not always made readily
available by the OSGi Alliance. Even though some of us are
members of
the OSGi Alliance, we are not necessarily at liberty to disclose
changes
to internal RFCs.

So, what can we do about it?

I see two potential [reasonable] policies from which we could
choose:

1. Always use the org.apache.felix package namespace for
provisional
   OSGi API until the spec goes final.
2. Use the org.osgi package namespace while the provisional
API is in
   development, but only expose what has been publicly made
available
   by the OSGi Alliance.

Both approaches have their drawbacks.

The benefit of (1) is that the legal/IP/etiquette issues and/or
concerns
are reduced to those associated with normal open source
development.
For
completely new development, like Gogo, this would all happen in
non-OSGi
packages, while changes to existing packages would need to be
done in
subclasses in non-OSGi packages. One downside of (1) is that
it will
always result in a package name change at the end that will break
existing clients. For this reason, such experimental packages
should be
exported with mandatory attributes to warn potential clients.

The benefit of (2) is that the package namespace is more
consistent.
The
downside of (2) is that it is a IP/legal/etiquette gray area
as to
whether or not we can do official releases of subprojects
containing
provisional OSGi API. Even if we do not modify the API, it
still is
potentially confusing to our users who are getting an "official"
release
from us of a subproject containing these "unofficial" bytes. At a
minimum we would also need to use deprecated tags and/or
mandatory
attributes to warn people. Even then, it still raises issues
since we
aren't at liberty to evolve the packages freely to include OSGi
internal, non-public RFC updates, nor extensions for potential
feedback
into the RFC. In those cases, we would still need to resort to
putting
stuff in org.apache.felix packages and renaming later once the
changes
become public, which would also be problematic for clients.
Also, you
have to consider the case where the RFC is abandoned, in which
case if
we still find it useful, we'll be forced to change our package
names.

   From my point of view, approach (1) might not be awesome,
but it
results
in a simpler process than (2). So, I'd recommend (1). If the
majority
prefers (2), then we can do that (although I think we'll have
to run
the
decision by the board first).

Thoughts?

->  richard




--
Cheers,
Guillaume Nodet

Blog: http://gnodet.blogspot.com/

Open Source SOA
http://fusesource.com





Re: Handling of provisional OSGi API

2010-09-22 Thread Felix Meschberger
>>>>>>> RFC-147 API
>>>>>>> from
>>>>>>> the org.osgi.service.command namespace and moving it to a felix
>>>>>>> namespace.
>>>>>>>
>>>>>>> We actually already did this for the gogo-0.6 release, but then
>>>>>>> reverted
>>>>>>> the
>>>>>>> change in the trunk, as it broke many command providers who imported
>>>>>>> org.osgi.service.command. Back then we didn't have a policy for
>>>>>>> supporting
>>>>>>> draft OSGi APIs, but now it seems like we've agreed on #1. Do we
>>>>>>> need a
>>>>>>> vote?
>>>>>> It sounds like we have consensus, so we can probably just move
>>>>>> forward.
>>>>>>
>>>>>> ->  richard
>>>>>>
>>>>>>> Derek
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On 19 September 2010 17:27, Richard S.
>>>>>>> Hallwrote:
>>>>>>>
>>>>>>>>   On 9/18/10 10:34, Felix Meschberger wrote:
>>>>>>>>
>>>>>>>>> Hi,
>>>>>>>>>
>>>>>>>>> While I understand (and certainly don't underestimate the
>>>>>>>>> consequences
>>>>>>>>> of) the drawbacks of option (1) I still think it is the better
>>>>>>>>> option.
>>>>>>>>>
>>>>>>>>> At the time the OSGi releases the official API, we can still
>>>>>>>>> keep our
>>>>>>>>> internal API for certain period of time thus supporting both
>>>>>>>>> API, if we
>>>>>>>>> so wish.
>>>>>>>>>
>>>>>>>>   From my point of view we should just export the packages with
>>>>>>>> mandatory
>>>>>>>> attributes and make it clear they will change when the API goes
>>>>>>>> final.
>>>>>>>> For
>>>>>>>> framework, I wouldn't plan to provide any ongoing support for
>>>>>>>> provisional
>>>>>>>> API. However, I don't think we need to mandate a global Felix
>>>>>>>> policy for
>>>>>>>> this and subprojects can choose to support two APIs if they want.
>>>>>>>>
>>>>>>>> ->richard
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>   Regards
>>>>>>>>> Felix
>>>>>>>>>
>>>>>>>>> Am 17.09.2010 18:35, schrieb Richard S. Hall:
>>>>>>>>>
>>>>>>>>>>   For a long time, we've played a little fast and loose with our
>>>>>>>>>> handling
>>>>>>>>>> of provisional OSGi API. Starting with the OBR 1.6.0 and Gogo
>>>>>>>>>> 0.6.0
>>>>>>>>>> releases, we've started to evolve a policy on how to handle
>>>>>>>>>> this, but
>>>>>>>>>> nothing has been decided concretely. This is problematic since
>>>>>>>>>> it leads
>>>>>>>>>> different people to different decisions. Thus, its about time we
>>>>>>>>>> defined
>>>>>>>>>> our policy on this.
>>>>>>>>>>
>>>>>>>>>> So, what's the issue?
>>>>>>>>>>
>>>>>>>>>> Provisional OSGi API is not official. Further, provisional
>>>>>>>>>> package
>>>>>>>>>> content is evolving and these changes are not always made readily
>>>>>>>>>> available by the OSGi Alliance. Even though some of us are
>>>>>>>>>> members of
>>>>>>>>>> the OSGi Alliance, we are not necessarily at liberty to disclose
>>>>>>>>>> changes
>>>>>>>>>> to internal RFCs.
>>>>>>>>>>
>>>>>>>>>> So, what can we do 

Re: Handling of provisional OSGi API

2010-09-22 Thread Richard S. Hall
 for

this and subprojects can choose to support two APIs if they want.

->richard



  Regards

Felix

Am 17.09.2010 18:35, schrieb Richard S. Hall:


  For a long time, we've played a little fast and loose with our
handling
of provisional OSGi API. Starting with the OBR 1.6.0 and Gogo 
0.6.0
releases, we've started to evolve a policy on how to handle 
this, but
nothing has been decided concretely. This is problematic since 
it leads

different people to different decisions. Thus, its about time we
defined
our policy on this.

So, what's the issue?

Provisional OSGi API is not official. Further, provisional 
package

content is evolving and these changes are not always made readily
available by the OSGi Alliance. Even though some of us are 
members of

the OSGi Alliance, we are not necessarily at liberty to disclose
changes
to internal RFCs.

So, what can we do about it?

I see two potential [reasonable] policies from which we could 
choose:


   1. Always use the org.apache.felix package namespace for 
provisional

  OSGi API until the spec goes final.
   2. Use the org.osgi package namespace while the provisional 
API is in
  development, but only expose what has been publicly made 
available

  by the OSGi Alliance.

Both approaches have their drawbacks.

The benefit of (1) is that the legal/IP/etiquette issues and/or
concerns
are reduced to those associated with normal open source 
development.

For
completely new development, like Gogo, this would all happen in
non-OSGi
packages, while changes to existing packages would need to be 
done in
subclasses in non-OSGi packages. One downside of (1) is that 
it will

always result in a package name change at the end that will break
existing clients. For this reason, such experimental packages 
should be

exported with mandatory attributes to warn potential clients.

The benefit of (2) is that the package namespace is more 
consistent.

The
downside of (2) is that it is a IP/legal/etiquette gray area 
as to
whether or not we can do official releases of subprojects 
containing
provisional OSGi API. Even if we do not modify the API, it 
still is

potentially confusing to our users who are getting an "official"
release
from us of a subproject containing these "unofficial" bytes. At a
minimum we would also need to use deprecated tags and/or 
mandatory
attributes to warn people. Even then, it still raises issues 
since we

aren't at liberty to evolve the packages freely to include OSGi
internal, non-public RFC updates, nor extensions for potential 
feedback
into the RFC. In those cases, we would still need to resort to 
putting
stuff in org.apache.felix packages and renaming later once the 
changes
become public, which would also be problematic for clients. 
Also, you
have to consider the case where the RFC is abandoned, in which 
case if
we still find it useful, we'll be forced to change our package 
names.


  From my point of view, approach (1) might not be awesome, 
but it

results
in a simpler process than (2). So, I'd recommend (1). If the 
majority
prefers (2), then we can do that (although I think we'll have 
to run

the
decision by the board first).

Thoughts?

-> richard





--
Cheers,
Guillaume Nodet

Blog: http://gnodet.blogspot.com/

Open Source SOA
http://fusesource.com






Re: Handling of provisional OSGi API

2010-09-22 Thread Richard S. Hall
 Hopefully, I can get some quick feedback on this since I want to do a 
release...


Guillaume and I were discussing alternatives to a mandatory attribute. 
An alternative idea was mark all provisional API as deprecated, so 
clients get warnings. What are people's thoughts on the two approaches?


  1. The benefit of using mandatory attributes on provisional API is
 that you have to explicitly "opt in" to use it so no one can ever
 claim they didn't know it was provisional.
  2. The benefit of using deprecated tags is that it works more
 smoothly with tooling and at still does give some sort of warning
 notice, although less direct.

Personally, i still favor using mandatory attributes, because I think it 
better captures our use case. But, I'd like to hear what other people think.


Quickly. :-)

-> richard


On 9/22/10 9:19, Richard S. Hall wrote:

 On 9/22/10 6:16, Guillaume Nodet wrote:

I'm also not convinced by the mandatory attribute.  I do understand
the value, but it may cause a lot of burden on our users for not much.


If you have another recommendation for making it 100% clear to our 
users that these packages will not be supported in the future, then 
speak up. It's not that I want to use mandatory attributes, it's that 
I don't want to be taken to task in the future for throwing away the 
API. In that regard, I think there is benefit to using it since people 
have to go out of their way to use it.


Regarding the version number, I was using 0.6.1 because it is only a 
maintenance release as compared to 0.6.0. The completely incompatible 
change was from 0.4.0 to 0.6.0, no? Or are you specifically referring 
to the mandatory attribute? If so, I don't have an issue with it being 
0.8.0 if you think the mandatory attribute warrants it, but I don't 
really think that constitutes a breaking code change...certainly a 
breaking metadata change.


-> richard


  Mandatory attributes are not very common and the tooling might not be
prepared to handle those gracefully.  For example, I've just hit a big
problem with karaf integration tests that use pax-exam, because the
mandatory attribute it not automatically added, so all test bundles
were failing during resolution ...
I've fixed that, but an average user will be in a real trouble if 
hitting this.


On Wed, Sep 22, 2010 at 08:29, Guillaume Nodet  wrote:

Do you plan to release gogo as 0.6.1 as indicated in JIRA ?
Given the change is fully incompatible, I'd at least bump the minor 
version ...


On Mon, Sep 20, 2010 at 17:50, Richard S. 
Hall  wrote:

  On 9/20/10 11:21, Derek Baum wrote:

I also favor #1.

When we apply this to gogo, it will mean removing the draft 
RFC-147 API

from
the org.osgi.service.command namespace and moving it to a felix 
namespace.


We actually already did this for the gogo-0.6 release, but then 
reverted

the
change in the trunk, as it broke many command providers who imported
org.osgi.service.command. Back then we didn't have a policy for 
supporting
draft OSGi APIs, but now it seems like we've agreed on #1. Do we 
need a

vote?
It sounds like we have consensus, so we can probably just move 
forward.


->  richard


Derek



On 19 September 2010 17:27, Richard S. 
Hallwrote:



  On 9/18/10 10:34, Felix Meschberger wrote:


Hi,

While I understand (and certainly don't underestimate the 
consequences
of) the drawbacks of option (1) I still think it is the better 
option.


At the time the OSGi releases the official API, we can still 
keep our
internal API for certain period of time thus supporting both 
API, if we

so wish.

  From my point of view we should just export the packages with 
mandatory
attributes and make it clear they will change when the API goes 
final.

For
framework, I wouldn't plan to provide any ongoing support for 
provisional
API. However, I don't think we need to mandate a global Felix 
policy for

this and subprojects can choose to support two APIs if they want.

->richard



  Regards

Felix

Am 17.09.2010 18:35, schrieb Richard S. Hall:


  For a long time, we've played a little fast and loose with our
handling
of provisional OSGi API. Starting with the OBR 1.6.0 and Gogo 
0.6.0
releases, we've started to evolve a policy on how to handle 
this, but
nothing has been decided concretely. This is problematic since 
it leads

different people to different decisions. Thus, its about time we
defined
our policy on this.

So, what's the issue?

Provisional OSGi API is not official. Further, provisional package
content is evolving and these changes are not always made readily
available by the OSGi Alliance. Even though some of us are 
members of

the OSGi Alliance, we are not necessarily at liberty to disclose
changes
to internal RFCs.

So, what can we do about it?

I see two potential [reasonable] policies from which we could 
choose:


   1. Always use the org

Re: Handling of provisional OSGi API

2010-09-22 Thread Richard S. Hall

 On 9/22/10 6:16, Guillaume Nodet wrote:

I'm also not convinced by the mandatory attribute.  I do understand
the value, but it may cause a lot of burden on our users for not much.


If you have another recommendation for making it 100% clear to our users 
that these packages will not be supported in the future, then speak up. 
It's not that I want to use mandatory attributes, it's that I don't want 
to be taken to task in the future for throwing away the API. In that 
regard, I think there is benefit to using it since people have to go out 
of their way to use it.


Regarding the version number, I was using 0.6.1 because it is only a 
maintenance release as compared to 0.6.0. The completely incompatible 
change was from 0.4.0 to 0.6.0, no? Or are you specifically referring to 
the mandatory attribute? If so, I don't have an issue with it being 
0.8.0 if you think the mandatory attribute warrants it, but I don't 
really think that constitutes a breaking code change...certainly a 
breaking metadata change.


-> richard


  Mandatory attributes are not very common and the tooling might not be
prepared to handle those gracefully.  For example, I've just hit a big
problem with karaf integration tests that use pax-exam, because the
mandatory attribute it not automatically added, so all test bundles
were failing during resolution ...
I've fixed that, but an average user will be in a real trouble if hitting this.

On Wed, Sep 22, 2010 at 08:29, Guillaume Nodet  wrote:

Do you plan to release gogo as 0.6.1 as indicated in JIRA ?
Given the change is fully incompatible, I'd at least bump the minor version ...

On Mon, Sep 20, 2010 at 17:50, Richard S. Hall  wrote:

  On 9/20/10 11:21, Derek Baum wrote:

I also favor #1.

When we apply this to gogo, it will mean removing the draft RFC-147 API
from
the org.osgi.service.command namespace and moving it to a felix namespace.

We actually already did this for the gogo-0.6 release, but then reverted
the
change in the trunk, as it broke many command providers who imported
org.osgi.service.command. Back then we didn't have a policy for supporting
draft OSGi APIs, but now it seems like we've agreed on #1. Do we need a
vote?

It sounds like we have consensus, so we can probably just move forward.

->  richard


Derek



On 19 September 2010 17:27, Richard S. Hallwrote:


  On 9/18/10 10:34, Felix Meschberger wrote:


Hi,

While I understand (and certainly don't underestimate the consequences
of) the drawbacks of option (1) I still think it is the better option.

At the time the OSGi releases the official API, we can still keep our
internal API for certain period of time thus supporting both API, if we
so wish.


  From my point of view we should just export the packages with mandatory
attributes and make it clear they will change when the API goes final.
For
framework, I wouldn't plan to provide any ongoing support for provisional
API. However, I don't think we need to mandate a global Felix policy for
this and subprojects can choose to support two APIs if they want.

->richard



  Regards

Felix

Am 17.09.2010 18:35, schrieb Richard S. Hall:


  For a long time, we've played a little fast and loose with our
handling
of provisional OSGi API. Starting with the OBR 1.6.0 and Gogo 0.6.0
releases, we've started to evolve a policy on how to handle this, but
nothing has been decided concretely. This is problematic since it leads
different people to different decisions. Thus, its about time we
defined
our policy on this.

So, what's the issue?

Provisional OSGi API is not official. Further, provisional package
content is evolving and these changes are not always made readily
available by the OSGi Alliance. Even though some of us are members of
the OSGi Alliance, we are not necessarily at liberty to disclose
changes
to internal RFCs.

So, what can we do about it?

I see two potential [reasonable] policies from which we could choose:

   1. Always use the org.apache.felix package namespace for provisional
  OSGi API until the spec goes final.
   2. Use the org.osgi package namespace while the provisional API is in
  development, but only expose what has been publicly made available
  by the OSGi Alliance.

Both approaches have their drawbacks.

The benefit of (1) is that the legal/IP/etiquette issues and/or
concerns
are reduced to those associated with normal open source development.
For
completely new development, like Gogo, this would all happen in
non-OSGi
packages, while changes to existing packages would need to be done in
subclasses in non-OSGi packages. One downside of (1) is that it will
always result in a package name change at the end that will break
existing clients. For this reason, such experimental packages should be
exported with mandatory attributes to warn potential clients.

The benefit of (2) is that the package namespace is more consistent.
The
downsi

Re: Handling of provisional OSGi API

2010-09-22 Thread Guillaume Nodet
I'm also not convinced by the mandatory attribute.  I do understand
the value, but it may cause a lot of burden on our users for not much.
 Mandatory attributes are not very common and the tooling might not be
prepared to handle those gracefully.  For example, I've just hit a big
problem with karaf integration tests that use pax-exam, because the
mandatory attribute it not automatically added, so all test bundles
were failing during resolution ...
I've fixed that, but an average user will be in a real trouble if hitting this.

On Wed, Sep 22, 2010 at 08:29, Guillaume Nodet  wrote:
> Do you plan to release gogo as 0.6.1 as indicated in JIRA ?
> Given the change is fully incompatible, I'd at least bump the minor version 
> ...
>
> On Mon, Sep 20, 2010 at 17:50, Richard S. Hall  wrote:
>>  On 9/20/10 11:21, Derek Baum wrote:
>>>
>>> I also favor #1.
>>>
>>> When we apply this to gogo, it will mean removing the draft RFC-147 API
>>> from
>>> the org.osgi.service.command namespace and moving it to a felix namespace.
>>>
>>> We actually already did this for the gogo-0.6 release, but then reverted
>>> the
>>> change in the trunk, as it broke many command providers who imported
>>> org.osgi.service.command. Back then we didn't have a policy for supporting
>>> draft OSGi APIs, but now it seems like we've agreed on #1. Do we need a
>>> vote?
>>
>> It sounds like we have consensus, so we can probably just move forward.
>>
>> -> richard
>>
>>> Derek
>>>
>>>
>>>
>>> On 19 September 2010 17:27, Richard S. Hall  wrote:
>>>
>>>>  On 9/18/10 10:34, Felix Meschberger wrote:
>>>>
>>>>> Hi,
>>>>>
>>>>> While I understand (and certainly don't underestimate the consequences
>>>>> of) the drawbacks of option (1) I still think it is the better option.
>>>>>
>>>>> At the time the OSGi releases the official API, we can still keep our
>>>>> internal API for certain period of time thus supporting both API, if we
>>>>> so wish.
>>>>>
>>>>  From my point of view we should just export the packages with mandatory
>>>> attributes and make it clear they will change when the API goes final.
>>>> For
>>>> framework, I wouldn't plan to provide any ongoing support for provisional
>>>> API. However, I don't think we need to mandate a global Felix policy for
>>>> this and subprojects can choose to support two APIs if they want.
>>>>
>>>> ->  richard
>>>>
>>>>
>>>>
>>>>  Regards
>>>>>
>>>>> Felix
>>>>>
>>>>> Am 17.09.2010 18:35, schrieb Richard S. Hall:
>>>>>
>>>>>>  For a long time, we've played a little fast and loose with our
>>>>>> handling
>>>>>> of provisional OSGi API. Starting with the OBR 1.6.0 and Gogo 0.6.0
>>>>>> releases, we've started to evolve a policy on how to handle this, but
>>>>>> nothing has been decided concretely. This is problematic since it leads
>>>>>> different people to different decisions. Thus, its about time we
>>>>>> defined
>>>>>> our policy on this.
>>>>>>
>>>>>> So, what's the issue?
>>>>>>
>>>>>> Provisional OSGi API is not official. Further, provisional package
>>>>>> content is evolving and these changes are not always made readily
>>>>>> available by the OSGi Alliance. Even though some of us are members of
>>>>>> the OSGi Alliance, we are not necessarily at liberty to disclose
>>>>>> changes
>>>>>> to internal RFCs.
>>>>>>
>>>>>> So, what can we do about it?
>>>>>>
>>>>>> I see two potential [reasonable] policies from which we could choose:
>>>>>>
>>>>>>   1. Always use the org.apache.felix package namespace for provisional
>>>>>>      OSGi API until the spec goes final.
>>>>>>   2. Use the org.osgi package namespace while the provisional API is in
>>>>>>      development, but only expose what has been publicly made available
>>>>>>      by the OSGi Alliance.
>>>>>>
>>>>>> Both approaches have their drawbacks.
>>>>>>
>>

Re: Handling of provisional OSGi API

2010-09-21 Thread Guillaume Nodet
Do you plan to release gogo as 0.6.1 as indicated in JIRA ?
Given the change is fully incompatible, I'd at least bump the minor version ...

On Mon, Sep 20, 2010 at 17:50, Richard S. Hall  wrote:
>  On 9/20/10 11:21, Derek Baum wrote:
>>
>> I also favor #1.
>>
>> When we apply this to gogo, it will mean removing the draft RFC-147 API
>> from
>> the org.osgi.service.command namespace and moving it to a felix namespace.
>>
>> We actually already did this for the gogo-0.6 release, but then reverted
>> the
>> change in the trunk, as it broke many command providers who imported
>> org.osgi.service.command. Back then we didn't have a policy for supporting
>> draft OSGi APIs, but now it seems like we've agreed on #1. Do we need a
>> vote?
>
> It sounds like we have consensus, so we can probably just move forward.
>
> -> richard
>
>> Derek
>>
>>
>>
>> On 19 September 2010 17:27, Richard S. Hall  wrote:
>>
>>>  On 9/18/10 10:34, Felix Meschberger wrote:
>>>
>>>> Hi,
>>>>
>>>> While I understand (and certainly don't underestimate the consequences
>>>> of) the drawbacks of option (1) I still think it is the better option.
>>>>
>>>> At the time the OSGi releases the official API, we can still keep our
>>>> internal API for certain period of time thus supporting both API, if we
>>>> so wish.
>>>>
>>>  From my point of view we should just export the packages with mandatory
>>> attributes and make it clear they will change when the API goes final.
>>> For
>>> framework, I wouldn't plan to provide any ongoing support for provisional
>>> API. However, I don't think we need to mandate a global Felix policy for
>>> this and subprojects can choose to support two APIs if they want.
>>>
>>> ->  richard
>>>
>>>
>>>
>>>  Regards
>>>>
>>>> Felix
>>>>
>>>> Am 17.09.2010 18:35, schrieb Richard S. Hall:
>>>>
>>>>>  For a long time, we've played a little fast and loose with our
>>>>> handling
>>>>> of provisional OSGi API. Starting with the OBR 1.6.0 and Gogo 0.6.0
>>>>> releases, we've started to evolve a policy on how to handle this, but
>>>>> nothing has been decided concretely. This is problematic since it leads
>>>>> different people to different decisions. Thus, its about time we
>>>>> defined
>>>>> our policy on this.
>>>>>
>>>>> So, what's the issue?
>>>>>
>>>>> Provisional OSGi API is not official. Further, provisional package
>>>>> content is evolving and these changes are not always made readily
>>>>> available by the OSGi Alliance. Even though some of us are members of
>>>>> the OSGi Alliance, we are not necessarily at liberty to disclose
>>>>> changes
>>>>> to internal RFCs.
>>>>>
>>>>> So, what can we do about it?
>>>>>
>>>>> I see two potential [reasonable] policies from which we could choose:
>>>>>
>>>>>   1. Always use the org.apache.felix package namespace for provisional
>>>>>      OSGi API until the spec goes final.
>>>>>   2. Use the org.osgi package namespace while the provisional API is in
>>>>>      development, but only expose what has been publicly made available
>>>>>      by the OSGi Alliance.
>>>>>
>>>>> Both approaches have their drawbacks.
>>>>>
>>>>> The benefit of (1) is that the legal/IP/etiquette issues and/or
>>>>> concerns
>>>>> are reduced to those associated with normal open source development.
>>>>> For
>>>>> completely new development, like Gogo, this would all happen in
>>>>> non-OSGi
>>>>> packages, while changes to existing packages would need to be done in
>>>>> subclasses in non-OSGi packages. One downside of (1) is that it will
>>>>> always result in a package name change at the end that will break
>>>>> existing clients. For this reason, such experimental packages should be
>>>>> exported with mandatory attributes to warn potential clients.
>>>>>
>>>>> The benefit of (2) is that the package namespace is more consistent.
>>>>> The
>>>>> downside of (2) is 

Re: Handling of provisional OSGi API

2010-09-20 Thread Richard S. Hall

 On 9/20/10 11:21, Derek Baum wrote:

I also favor #1.

When we apply this to gogo, it will mean removing the draft RFC-147 API from
the org.osgi.service.command namespace and moving it to a felix namespace.

We actually already did this for the gogo-0.6 release, but then reverted the
change in the trunk, as it broke many command providers who imported
org.osgi.service.command. Back then we didn't have a policy for supporting
draft OSGi APIs, but now it seems like we've agreed on #1. Do we need a
vote?


It sounds like we have consensus, so we can probably just move forward.

-> richard


Derek



On 19 September 2010 17:27, Richard S. Hall  wrote:


  On 9/18/10 10:34, Felix Meschberger wrote:


Hi,

While I understand (and certainly don't underestimate the consequences
of) the drawbacks of option (1) I still think it is the better option.

At the time the OSGi releases the official API, we can still keep our
internal API for certain period of time thus supporting both API, if we
so wish.


 From my point of view we should just export the packages with mandatory
attributes and make it clear they will change when the API goes final. For
framework, I wouldn't plan to provide any ongoing support for provisional
API. However, I don't think we need to mandate a global Felix policy for
this and subprojects can choose to support two APIs if they want.

->  richard



  Regards

Felix

Am 17.09.2010 18:35, schrieb Richard S. Hall:


  For a long time, we've played a little fast and loose with our handling
of provisional OSGi API. Starting with the OBR 1.6.0 and Gogo 0.6.0
releases, we've started to evolve a policy on how to handle this, but
nothing has been decided concretely. This is problematic since it leads
different people to different decisions. Thus, its about time we defined
our policy on this.

So, what's the issue?

Provisional OSGi API is not official. Further, provisional package
content is evolving and these changes are not always made readily
available by the OSGi Alliance. Even though some of us are members of
the OSGi Alliance, we are not necessarily at liberty to disclose changes
to internal RFCs.

So, what can we do about it?

I see two potential [reasonable] policies from which we could choose:

   1. Always use the org.apache.felix package namespace for provisional
  OSGi API until the spec goes final.
   2. Use the org.osgi package namespace while the provisional API is in
  development, but only expose what has been publicly made available
  by the OSGi Alliance.

Both approaches have their drawbacks.

The benefit of (1) is that the legal/IP/etiquette issues and/or concerns
are reduced to those associated with normal open source development. For
completely new development, like Gogo, this would all happen in non-OSGi
packages, while changes to existing packages would need to be done in
subclasses in non-OSGi packages. One downside of (1) is that it will
always result in a package name change at the end that will break
existing clients. For this reason, such experimental packages should be
exported with mandatory attributes to warn potential clients.

The benefit of (2) is that the package namespace is more consistent. The
downside of (2) is that it is a IP/legal/etiquette gray area as to
whether or not we can do official releases of subprojects containing
provisional OSGi API. Even if we do not modify the API, it still is
potentially confusing to our users who are getting an "official" release
from us of a subproject containing these "unofficial" bytes. At a
minimum we would also need to use deprecated tags and/or mandatory
attributes to warn people. Even then, it still raises issues since we
aren't at liberty to evolve the packages freely to include OSGi
internal, non-public RFC updates, nor extensions for potential feedback
into the RFC. In those cases, we would still need to resort to putting
stuff in org.apache.felix packages and renaming later once the changes
become public, which would also be problematic for clients. Also, you
have to consider the case where the RFC is abandoned, in which case if
we still find it useful, we'll be forced to change our package names.

  From my point of view, approach (1) might not be awesome, but it results
in a simpler process than (2). So, I'd recommend (1). If the majority
prefers (2), then we can do that (although I think we'll have to run the
decision by the board first).

Thoughts?

->   richard




Re: Handling of provisional OSGi API

2010-09-20 Thread Derek Baum
I also favor #1.

When we apply this to gogo, it will mean removing the draft RFC-147 API from
the org.osgi.service.command namespace and moving it to a felix namespace.

We actually already did this for the gogo-0.6 release, but then reverted the
change in the trunk, as it broke many command providers who imported
org.osgi.service.command. Back then we didn't have a policy for supporting
draft OSGi APIs, but now it seems like we've agreed on #1. Do we need a
vote?

Derek



On 19 September 2010 17:27, Richard S. Hall  wrote:

>  On 9/18/10 10:34, Felix Meschberger wrote:
>
>> Hi,
>>
>> While I understand (and certainly don't underestimate the consequences
>> of) the drawbacks of option (1) I still think it is the better option.
>>
>> At the time the OSGi releases the official API, we can still keep our
>> internal API for certain period of time thus supporting both API, if we
>> so wish.
>>
>
> From my point of view we should just export the packages with mandatory
> attributes and make it clear they will change when the API goes final. For
> framework, I wouldn't plan to provide any ongoing support for provisional
> API. However, I don't think we need to mandate a global Felix policy for
> this and subprojects can choose to support two APIs if they want.
>
> -> richard
>
>
>
>  Regards
>> Felix
>>
>> Am 17.09.2010 18:35, schrieb Richard S. Hall:
>>
>>>  For a long time, we've played a little fast and loose with our handling
>>> of provisional OSGi API. Starting with the OBR 1.6.0 and Gogo 0.6.0
>>> releases, we've started to evolve a policy on how to handle this, but
>>> nothing has been decided concretely. This is problematic since it leads
>>> different people to different decisions. Thus, its about time we defined
>>> our policy on this.
>>>
>>> So, what's the issue?
>>>
>>> Provisional OSGi API is not official. Further, provisional package
>>> content is evolving and these changes are not always made readily
>>> available by the OSGi Alliance. Even though some of us are members of
>>> the OSGi Alliance, we are not necessarily at liberty to disclose changes
>>> to internal RFCs.
>>>
>>> So, what can we do about it?
>>>
>>> I see two potential [reasonable] policies from which we could choose:
>>>
>>>   1. Always use the org.apache.felix package namespace for provisional
>>>  OSGi API until the spec goes final.
>>>   2. Use the org.osgi package namespace while the provisional API is in
>>>  development, but only expose what has been publicly made available
>>>  by the OSGi Alliance.
>>>
>>> Both approaches have their drawbacks.
>>>
>>> The benefit of (1) is that the legal/IP/etiquette issues and/or concerns
>>> are reduced to those associated with normal open source development. For
>>> completely new development, like Gogo, this would all happen in non-OSGi
>>> packages, while changes to existing packages would need to be done in
>>> subclasses in non-OSGi packages. One downside of (1) is that it will
>>> always result in a package name change at the end that will break
>>> existing clients. For this reason, such experimental packages should be
>>> exported with mandatory attributes to warn potential clients.
>>>
>>> The benefit of (2) is that the package namespace is more consistent. The
>>> downside of (2) is that it is a IP/legal/etiquette gray area as to
>>> whether or not we can do official releases of subprojects containing
>>> provisional OSGi API. Even if we do not modify the API, it still is
>>> potentially confusing to our users who are getting an "official" release
>>> from us of a subproject containing these "unofficial" bytes. At a
>>> minimum we would also need to use deprecated tags and/or mandatory
>>> attributes to warn people. Even then, it still raises issues since we
>>> aren't at liberty to evolve the packages freely to include OSGi
>>> internal, non-public RFC updates, nor extensions for potential feedback
>>> into the RFC. In those cases, we would still need to resort to putting
>>> stuff in org.apache.felix packages and renaming later once the changes
>>> become public, which would also be problematic for clients. Also, you
>>> have to consider the case where the RFC is abandoned, in which case if
>>> we still find it useful, we'll be forced to change our package names.
>>>
>>>  From my point of view, approach (1) might not be awesome, but it results
>>> in a simpler process than (2). So, I'd recommend (1). If the majority
>>> prefers (2), then we can do that (although I think we'll have to run the
>>> decision by the board first).
>>>
>>> Thoughts?
>>>
>>> ->  richard
>>>
>>>


Re: Handling of provisional OSGi API

2010-09-19 Thread Karl Pauls
+1 for #1

regards,

Karl

On Sun, Sep 19, 2010 at 6:27 PM, Richard S. Hall  wrote:
>  On 9/18/10 10:34, Felix Meschberger wrote:
>>
>> Hi,
>>
>> While I understand (and certainly don't underestimate the consequences
>> of) the drawbacks of option (1) I still think it is the better option.
>>
>> At the time the OSGi releases the official API, we can still keep our
>> internal API for certain period of time thus supporting both API, if we
>> so wish.
>
> From my point of view we should just export the packages with mandatory
> attributes and make it clear they will change when the API goes final. For
> framework, I wouldn't plan to provide any ongoing support for provisional
> API. However, I don't think we need to mandate a global Felix policy for
> this and subprojects can choose to support two APIs if they want.
>
> -> richard
>
>
>> Regards
>> Felix
>>
>> Am 17.09.2010 18:35, schrieb Richard S. Hall:
>>>
>>>  For a long time, we've played a little fast and loose with our handling
>>> of provisional OSGi API. Starting with the OBR 1.6.0 and Gogo 0.6.0
>>> releases, we've started to evolve a policy on how to handle this, but
>>> nothing has been decided concretely. This is problematic since it leads
>>> different people to different decisions. Thus, its about time we defined
>>> our policy on this.
>>>
>>> So, what's the issue?
>>>
>>> Provisional OSGi API is not official. Further, provisional package
>>> content is evolving and these changes are not always made readily
>>> available by the OSGi Alliance. Even though some of us are members of
>>> the OSGi Alliance, we are not necessarily at liberty to disclose changes
>>> to internal RFCs.
>>>
>>> So, what can we do about it?
>>>
>>> I see two potential [reasonable] policies from which we could choose:
>>>
>>>   1. Always use the org.apache.felix package namespace for provisional
>>>      OSGi API until the spec goes final.
>>>   2. Use the org.osgi package namespace while the provisional API is in
>>>      development, but only expose what has been publicly made available
>>>      by the OSGi Alliance.
>>>
>>> Both approaches have their drawbacks.
>>>
>>> The benefit of (1) is that the legal/IP/etiquette issues and/or concerns
>>> are reduced to those associated with normal open source development. For
>>> completely new development, like Gogo, this would all happen in non-OSGi
>>> packages, while changes to existing packages would need to be done in
>>> subclasses in non-OSGi packages. One downside of (1) is that it will
>>> always result in a package name change at the end that will break
>>> existing clients. For this reason, such experimental packages should be
>>> exported with mandatory attributes to warn potential clients.
>>>
>>> The benefit of (2) is that the package namespace is more consistent. The
>>> downside of (2) is that it is a IP/legal/etiquette gray area as to
>>> whether or not we can do official releases of subprojects containing
>>> provisional OSGi API. Even if we do not modify the API, it still is
>>> potentially confusing to our users who are getting an "official" release
>>> from us of a subproject containing these "unofficial" bytes. At a
>>> minimum we would also need to use deprecated tags and/or mandatory
>>> attributes to warn people. Even then, it still raises issues since we
>>> aren't at liberty to evolve the packages freely to include OSGi
>>> internal, non-public RFC updates, nor extensions for potential feedback
>>> into the RFC. In those cases, we would still need to resort to putting
>>> stuff in org.apache.felix packages and renaming later once the changes
>>> become public, which would also be problematic for clients. Also, you
>>> have to consider the case where the RFC is abandoned, in which case if
>>> we still find it useful, we'll be forced to change our package names.
>>>
>>>  From my point of view, approach (1) might not be awesome, but it results
>>> in a simpler process than (2). So, I'd recommend (1). If the majority
>>> prefers (2), then we can do that (although I think we'll have to run the
>>> decision by the board first).
>>>
>>> Thoughts?
>>>
>>> ->  richard
>>>
>



-- 
Karl Pauls
karlpa...@gmail.com


Re: Handling of provisional OSGi API

2010-09-19 Thread Richard S. Hall

 On 9/18/10 10:34, Felix Meschberger wrote:

Hi,

While I understand (and certainly don't underestimate the consequences
of) the drawbacks of option (1) I still think it is the better option.

At the time the OSGi releases the official API, we can still keep our
internal API for certain period of time thus supporting both API, if we
so wish.


From my point of view we should just export the packages with mandatory 
attributes and make it clear they will change when the API goes final. 
For framework, I wouldn't plan to provide any ongoing support for 
provisional API. However, I don't think we need to mandate a global 
Felix policy for this and subprojects can choose to support two APIs if 
they want.


-> richard



Regards
Felix

Am 17.09.2010 18:35, schrieb Richard S. Hall:

  For a long time, we've played a little fast and loose with our handling
of provisional OSGi API. Starting with the OBR 1.6.0 and Gogo 0.6.0
releases, we've started to evolve a policy on how to handle this, but
nothing has been decided concretely. This is problematic since it leads
different people to different decisions. Thus, its about time we defined
our policy on this.

So, what's the issue?

Provisional OSGi API is not official. Further, provisional package
content is evolving and these changes are not always made readily
available by the OSGi Alliance. Even though some of us are members of
the OSGi Alliance, we are not necessarily at liberty to disclose changes
to internal RFCs.

So, what can we do about it?

I see two potential [reasonable] policies from which we could choose:

   1. Always use the org.apache.felix package namespace for provisional
  OSGi API until the spec goes final.
   2. Use the org.osgi package namespace while the provisional API is in
  development, but only expose what has been publicly made available
  by the OSGi Alliance.

Both approaches have their drawbacks.

The benefit of (1) is that the legal/IP/etiquette issues and/or concerns
are reduced to those associated with normal open source development. For
completely new development, like Gogo, this would all happen in non-OSGi
packages, while changes to existing packages would need to be done in
subclasses in non-OSGi packages. One downside of (1) is that it will
always result in a package name change at the end that will break
existing clients. For this reason, such experimental packages should be
exported with mandatory attributes to warn potential clients.

The benefit of (2) is that the package namespace is more consistent. The
downside of (2) is that it is a IP/legal/etiquette gray area as to
whether or not we can do official releases of subprojects containing
provisional OSGi API. Even if we do not modify the API, it still is
potentially confusing to our users who are getting an "official" release
from us of a subproject containing these "unofficial" bytes. At a
minimum we would also need to use deprecated tags and/or mandatory
attributes to warn people. Even then, it still raises issues since we
aren't at liberty to evolve the packages freely to include OSGi
internal, non-public RFC updates, nor extensions for potential feedback
into the RFC. In those cases, we would still need to resort to putting
stuff in org.apache.felix packages and renaming later once the changes
become public, which would also be problematic for clients. Also, you
have to consider the case where the RFC is abandoned, in which case if
we still find it useful, we'll be forced to change our package names.

 From my point of view, approach (1) might not be awesome, but it results
in a simpler process than (2). So, I'd recommend (1). If the majority
prefers (2), then we can do that (although I think we'll have to run the
decision by the board first).

Thoughts?

->  richard



Re: Handling of provisional OSGi API

2010-09-19 Thread Richard S. Hall

 On 9/18/10 11:20, Guillaume Nodet wrote:

I'd go for #1 too because it gives us more flexibility without any risks.

I suppose #1 could also contain cases where enhancements to an
existing api are done by creating interfaces in the org.apache.felix
namespace inheriting the org.osgi ones ... provided that we don't
touch the osgi ones (meaning that they are officialy published apis).


Yes, that was my thinking as well.

-> richard


On Sat, Sep 18, 2010 at 19:34, Felix Meschberger  wrote:

Hi,

While I understand (and certainly don't underestimate the consequences
of) the drawbacks of option (1) I still think it is the better option.

At the time the OSGi releases the official API, we can still keep our
internal API for certain period of time thus supporting both API, if we
so wish.

Regards
Felix

Am 17.09.2010 18:35, schrieb Richard S. Hall:

  For a long time, we've played a little fast and loose with our handling
of provisional OSGi API. Starting with the OBR 1.6.0 and Gogo 0.6.0
releases, we've started to evolve a policy on how to handle this, but
nothing has been decided concretely. This is problematic since it leads
different people to different decisions. Thus, its about time we defined
our policy on this.

So, what's the issue?

Provisional OSGi API is not official. Further, provisional package
content is evolving and these changes are not always made readily
available by the OSGi Alliance. Even though some of us are members of
the OSGi Alliance, we are not necessarily at liberty to disclose changes
to internal RFCs.

So, what can we do about it?

I see two potential [reasonable] policies from which we could choose:

   1. Always use the org.apache.felix package namespace for provisional
  OSGi API until the spec goes final.
   2. Use the org.osgi package namespace while the provisional API is in
  development, but only expose what has been publicly made available
  by the OSGi Alliance.

Both approaches have their drawbacks.

The benefit of (1) is that the legal/IP/etiquette issues and/or concerns
are reduced to those associated with normal open source development. For
completely new development, like Gogo, this would all happen in non-OSGi
packages, while changes to existing packages would need to be done in
subclasses in non-OSGi packages. One downside of (1) is that it will
always result in a package name change at the end that will break
existing clients. For this reason, such experimental packages should be
exported with mandatory attributes to warn potential clients.

The benefit of (2) is that the package namespace is more consistent. The
downside of (2) is that it is a IP/legal/etiquette gray area as to
whether or not we can do official releases of subprojects containing
provisional OSGi API. Even if we do not modify the API, it still is
potentially confusing to our users who are getting an "official" release
from us of a subproject containing these "unofficial" bytes. At a
minimum we would also need to use deprecated tags and/or mandatory
attributes to warn people. Even then, it still raises issues since we
aren't at liberty to evolve the packages freely to include OSGi
internal, non-public RFC updates, nor extensions for potential feedback
into the RFC. In those cases, we would still need to resort to putting
stuff in org.apache.felix packages and renaming later once the changes
become public, which would also be problematic for clients. Also, you
have to consider the case where the RFC is abandoned, in which case if
we still find it useful, we'll be forced to change our package names.

 From my point of view, approach (1) might not be awesome, but it results
in a simpler process than (2). So, I'd recommend (1). If the majority
prefers (2), then we can do that (although I think we'll have to run the
decision by the board first).

Thoughts?

->  richard






Re: Handling of provisional OSGi API

2010-09-18 Thread Guillaume Nodet
I'd go for #1 too because it gives us more flexibility without any risks.

I suppose #1 could also contain cases where enhancements to an
existing api are done by creating interfaces in the org.apache.felix
namespace inheriting the org.osgi ones ... provided that we don't
touch the osgi ones (meaning that they are officialy published apis).

On Sat, Sep 18, 2010 at 19:34, Felix Meschberger  wrote:
> Hi,
>
> While I understand (and certainly don't underestimate the consequences
> of) the drawbacks of option (1) I still think it is the better option.
>
> At the time the OSGi releases the official API, we can still keep our
> internal API for certain period of time thus supporting both API, if we
> so wish.
>
> Regards
> Felix
>
> Am 17.09.2010 18:35, schrieb Richard S. Hall:
>>  For a long time, we've played a little fast and loose with our handling
>> of provisional OSGi API. Starting with the OBR 1.6.0 and Gogo 0.6.0
>> releases, we've started to evolve a policy on how to handle this, but
>> nothing has been decided concretely. This is problematic since it leads
>> different people to different decisions. Thus, its about time we defined
>> our policy on this.
>>
>> So, what's the issue?
>>
>> Provisional OSGi API is not official. Further, provisional package
>> content is evolving and these changes are not always made readily
>> available by the OSGi Alliance. Even though some of us are members of
>> the OSGi Alliance, we are not necessarily at liberty to disclose changes
>> to internal RFCs.
>>
>> So, what can we do about it?
>>
>> I see two potential [reasonable] policies from which we could choose:
>>
>>   1. Always use the org.apache.felix package namespace for provisional
>>      OSGi API until the spec goes final.
>>   2. Use the org.osgi package namespace while the provisional API is in
>>      development, but only expose what has been publicly made available
>>      by the OSGi Alliance.
>>
>> Both approaches have their drawbacks.
>>
>> The benefit of (1) is that the legal/IP/etiquette issues and/or concerns
>> are reduced to those associated with normal open source development. For
>> completely new development, like Gogo, this would all happen in non-OSGi
>> packages, while changes to existing packages would need to be done in
>> subclasses in non-OSGi packages. One downside of (1) is that it will
>> always result in a package name change at the end that will break
>> existing clients. For this reason, such experimental packages should be
>> exported with mandatory attributes to warn potential clients.
>>
>> The benefit of (2) is that the package namespace is more consistent. The
>> downside of (2) is that it is a IP/legal/etiquette gray area as to
>> whether or not we can do official releases of subprojects containing
>> provisional OSGi API. Even if we do not modify the API, it still is
>> potentially confusing to our users who are getting an "official" release
>> from us of a subproject containing these "unofficial" bytes. At a
>> minimum we would also need to use deprecated tags and/or mandatory
>> attributes to warn people. Even then, it still raises issues since we
>> aren't at liberty to evolve the packages freely to include OSGi
>> internal, non-public RFC updates, nor extensions for potential feedback
>> into the RFC. In those cases, we would still need to resort to putting
>> stuff in org.apache.felix packages and renaming later once the changes
>> become public, which would also be problematic for clients. Also, you
>> have to consider the case where the RFC is abandoned, in which case if
>> we still find it useful, we'll be forced to change our package names.
>>
>> From my point of view, approach (1) might not be awesome, but it results
>> in a simpler process than (2). So, I'd recommend (1). If the majority
>> prefers (2), then we can do that (although I think we'll have to run the
>> decision by the board first).
>>
>> Thoughts?
>>
>> -> richard
>>
>



-- 
Cheers,
Guillaume Nodet

Blog: http://gnodet.blogspot.com/

Open Source SOA
http://fusesource.com


Re: Handling of provisional OSGi API

2010-09-18 Thread Felix Meschberger
Hi,

While I understand (and certainly don't underestimate the consequences
of) the drawbacks of option (1) I still think it is the better option.

At the time the OSGi releases the official API, we can still keep our
internal API for certain period of time thus supporting both API, if we
so wish.

Regards
Felix

Am 17.09.2010 18:35, schrieb Richard S. Hall:
>  For a long time, we've played a little fast and loose with our handling
> of provisional OSGi API. Starting with the OBR 1.6.0 and Gogo 0.6.0
> releases, we've started to evolve a policy on how to handle this, but
> nothing has been decided concretely. This is problematic since it leads
> different people to different decisions. Thus, its about time we defined
> our policy on this.
> 
> So, what's the issue?
> 
> Provisional OSGi API is not official. Further, provisional package
> content is evolving and these changes are not always made readily
> available by the OSGi Alliance. Even though some of us are members of
> the OSGi Alliance, we are not necessarily at liberty to disclose changes
> to internal RFCs.
> 
> So, what can we do about it?
> 
> I see two potential [reasonable] policies from which we could choose:
> 
>   1. Always use the org.apache.felix package namespace for provisional
>  OSGi API until the spec goes final.
>   2. Use the org.osgi package namespace while the provisional API is in
>  development, but only expose what has been publicly made available
>  by the OSGi Alliance.
> 
> Both approaches have their drawbacks.
> 
> The benefit of (1) is that the legal/IP/etiquette issues and/or concerns
> are reduced to those associated with normal open source development. For
> completely new development, like Gogo, this would all happen in non-OSGi
> packages, while changes to existing packages would need to be done in
> subclasses in non-OSGi packages. One downside of (1) is that it will
> always result in a package name change at the end that will break
> existing clients. For this reason, such experimental packages should be
> exported with mandatory attributes to warn potential clients.
> 
> The benefit of (2) is that the package namespace is more consistent. The
> downside of (2) is that it is a IP/legal/etiquette gray area as to
> whether or not we can do official releases of subprojects containing
> provisional OSGi API. Even if we do not modify the API, it still is
> potentially confusing to our users who are getting an "official" release
> from us of a subproject containing these "unofficial" bytes. At a
> minimum we would also need to use deprecated tags and/or mandatory
> attributes to warn people. Even then, it still raises issues since we
> aren't at liberty to evolve the packages freely to include OSGi
> internal, non-public RFC updates, nor extensions for potential feedback
> into the RFC. In those cases, we would still need to resort to putting
> stuff in org.apache.felix packages and renaming later once the changes
> become public, which would also be problematic for clients. Also, you
> have to consider the case where the RFC is abandoned, in which case if
> we still find it useful, we'll be forced to change our package names.
> 
> From my point of view, approach (1) might not be awesome, but it results
> in a simpler process than (2). So, I'd recommend (1). If the majority
> prefers (2), then we can do that (although I think we'll have to run the
> decision by the board first).
> 
> Thoughts?
> 
> -> richard
> 


Re: Handling of provisional OSGi API

2010-09-17 Thread Richard S. Hall

 On 9/17/10 13:41, Marcel Offermans wrote:

On 17 Sep 2010, at 22:27 , Richard S. Hall wrote:

On 9/17/10 12:54, Marcel Offermans wrote:

On 17 Sep 2010, at 21:12 , Richard S. Hall wrote:

On 9/17/10 12:11, Richard S. Hall wrote:

On 9/17/10 11:36, Marcel Offermans wrote:

On 17 Sep 2010, at 18:35 , Richard S. Hall wrote:


 From my point of view, approach (1) might not be awesome, but it results in a 
simpler process than (2). So, I'd recommend (1). If the majority prefers (2), 
then we can do that (although I think we'll have to run the decision by the 
board first).

I prefer (1) too.

I could see us combine (1) with (2), releasing implementations with both our own 
APIs which gives us the freedom to experiment with a new API whilst still 
"supporting what's provided by public releases of draft specs.

However, this doesn't avoid the IP grey of releasing "unofficial" APIs in our 
"official" releases.

Does the OSGi alliance disallow the inclusion of these "unofficial" APIs?


Effectively, option (2) is a hybrid approach, since we couldn't make 
modifications in the provisional API unless it were available in a public spec 
snapshot, so any modifications would have to be done in felix package 
namespace. Which sort of makes (2) the worst of both worlds.

Well, if the snapshots are so outdated that it does not make sense to implement 
them, then we should not even try. In that case, just stick to (1).

Sometimes it is not an issue of being out of date. If we want to implement a 
feature for potential inclusion into an RFC, then we run into the same issue if 
we add the feature to an existing OSGi API (whether it is provisional or not).

I think that the versioning policy that the OSGi Alliance uses leaves us little 
room here, so again we should probably go to (1).

I mean, let's say that spec 1.6 is the latest stable release and there is a 
draft for 1.7 then there is no number in between that we could use to indicate 
we're past 1.6 but not yet at 1.7.


Nor do we have the authority to say what that version should be even if 
there was a number in between.



I guess the other point would be for the OSGi Alliance to just develop new RFCs 
out in the open, but as long as they're not, it's probably safer to ignore them 
if it could cause problems otherwise.

Well, we don't want to ignore them since we want to implement the provisional 
specs and get experience with them. It is just difficult since our downstream 
users have no way of knowing what is official OSGi API and what isn't if we 
ship with provisional and/or modified org.osgi packages.

We can always simply not release experimental code / provisional specs, keep 
them in an experimental branch if we want to still maintain an existing stable 
release.


Yes, that is another approach, but one that I wouldn't favor since it 
creates an extra burden on us to maintain a separate branch and then 
later figure out how to merge them.



Even following option (1), it's still a tricky balancing act, especially in 
cases where we might actually provide the RI, such as Gogo or CM. But this is 
more difficult for us since we release early and often as opposed to Eclipse 
which releases yearly.

As long as we release in our own namespace, I don't see the problem. Let's say we do an 
experimental release of CM. We would release it as a bundle exporting 
org.apache.felix.service.cm. The only "tricky" part is that consumer bundles 
would have to use the packages in our namespace, so it would probably mean they'd have to 
be written specifically for our implementation. But that's probably the best way to 
experiment safely anyway.



Agreed.

-> richard


Greetings, Marcel



Re: Handling of provisional OSGi API

2010-09-17 Thread Marcel Offermans
On 17 Sep 2010, at 22:27 , Richard S. Hall wrote:
> On 9/17/10 12:54, Marcel Offermans wrote:
>> On 17 Sep 2010, at 21:12 , Richard S. Hall wrote:
>>> On 9/17/10 12:11, Richard S. Hall wrote:
 On 9/17/10 11:36, Marcel Offermans wrote:
> On 17 Sep 2010, at 18:35 , Richard S. Hall wrote:
> 
>> From my point of view, approach (1) might not be awesome, but it results 
>> in a simpler process than (2). So, I'd recommend (1). If the majority 
>> prefers (2), then we can do that (although I think we'll have to run the 
>> decision by the board first).
> I prefer (1) too.
> 
> I could see us combine (1) with (2), releasing implementations with both 
> our own APIs which gives us the freedom to experiment with a new API 
> whilst still "supporting what's provided by public releases of draft 
> specs.
 However, this doesn't avoid the IP grey of releasing "unofficial" APIs in 
 our "official" releases.
>> Does the OSGi alliance disallow the inclusion of these "unofficial" APIs?
>> 
 Effectively, option (2) is a hybrid approach, since we couldn't make 
 modifications in the provisional API unless it were available in a public 
 spec snapshot, so any modifications would have to be done in felix package 
 namespace. Which sort of makes (2) the worst of both worlds.
>> 
>> Well, if the snapshots are so outdated that it does not make sense to 
>> implement them, then we should not even try. In that case, just stick to (1).
> 
> Sometimes it is not an issue of being out of date. If we want to implement a 
> feature for potential inclusion into an RFC, then we run into the same issue 
> if we add the feature to an existing OSGi API (whether it is provisional or 
> not).

I think that the versioning policy that the OSGi Alliance uses leaves us little 
room here, so again we should probably go to (1).

I mean, let's say that spec 1.6 is the latest stable release and there is a 
draft for 1.7 then there is no number in between that we could use to indicate 
we're past 1.6 but not yet at 1.7.

>> I guess the other point would be for the OSGi Alliance to just develop new 
>> RFCs out in the open, but as long as they're not, it's probably safer to 
>> ignore them if it could cause problems otherwise.
> 
> Well, we don't want to ignore them since we want to implement the provisional 
> specs and get experience with them. It is just difficult since our downstream 
> users have no way of knowing what is official OSGi API and what isn't if we 
> ship with provisional and/or modified org.osgi packages.

We can always simply not release experimental code / provisional specs, keep 
them in an experimental branch if we want to still maintain an existing stable 
release.

> Even following option (1), it's still a tricky balancing act, especially in 
> cases where we might actually provide the RI, such as Gogo or CM. But this is 
> more difficult for us since we release early and often as opposed to Eclipse 
> which releases yearly.

As long as we release in our own namespace, I don't see the problem. Let's say 
we do an experimental release of CM. We would release it as a bundle exporting 
org.apache.felix.service.cm. The only "tricky" part is that consumer bundles 
would have to use the packages in our namespace, so it would probably mean 
they'd have to be written specifically for our implementation. But that's 
probably the best way to experiment safely anyway.

Greetings, Marcel



Re: Handling of provisional OSGi API

2010-09-17 Thread Richard S. Hall

 On 9/17/10 12:54, Marcel Offermans wrote:

On 17 Sep 2010, at 21:12 , Richard S. Hall wrote:

On 9/17/10 12:11, Richard S. Hall wrote:

On 9/17/10 11:36, Marcel Offermans wrote:

On 17 Sep 2010, at 18:35 , Richard S. Hall wrote:


 From my point of view, approach (1) might not be awesome, but it results in a 
simpler process than (2). So, I'd recommend (1). If the majority prefers (2), 
then we can do that (although I think we'll have to run the decision by the 
board first).

I prefer (1) too.

I could see us combine (1) with (2), releasing implementations with both our own 
APIs which gives us the freedom to experiment with a new API whilst still 
"supporting what's provided by public releases of draft specs.

However, this doesn't avoid the IP grey of releasing "unofficial" APIs in our 
"official" releases.

Does the OSGi alliance disallow the inclusion of these "unofficial" APIs?


Effectively, option (2) is a hybrid approach, since we couldn't make 
modifications in the provisional API unless it were available in a public spec 
snapshot, so any modifications would have to be done in felix package 
namespace. Which sort of makes (2) the worst of both worlds.


Well, if the snapshots are so outdated that it does not make sense to implement 
them, then we should not even try. In that case, just stick to (1).


Sometimes it is not an issue of being out of date. If we want to 
implement a feature for potential inclusion into an RFC, then we run 
into the same issue if we add the feature to an existing OSGi API 
(whether it is provisional or not).



I guess the other point would be for the OSGi Alliance to just develop new RFCs 
out in the open, but as long as they're not, it's probably safer to ignore them 
if it could cause problems otherwise.


Well, we don't want to ignore them since we want to implement the 
provisional specs and get experience with them. It is just difficult 
since our downstream users have no way of knowing what is official OSGi 
API and what isn't if we ship with provisional and/or modified org.osgi 
packages.


Even following option (1), it's still a tricky balancing act, especially 
in cases where we might actually provide the RI, such as Gogo or CM. But 
this is more difficult for us since we release early and often as 
opposed to Eclipse which releases yearly.


-> richard


Re: Handling of provisional OSGi API

2010-09-17 Thread Marcel Offermans
On 17 Sep 2010, at 21:12 , Richard S. Hall wrote:
> On 9/17/10 12:11, Richard S. Hall wrote:
>> On 9/17/10 11:36, Marcel Offermans wrote:
>>> On 17 Sep 2010, at 18:35 , Richard S. Hall wrote:
>>> 
 From my point of view, approach (1) might not be awesome, but it results 
 in a simpler process than (2). So, I'd recommend (1). If the majority 
 prefers (2), then we can do that (although I think we'll have to run the 
 decision by the board first).
>>> I prefer (1) too.
>>> 
>>> I could see us combine (1) with (2), releasing implementations with both 
>>> our own APIs which gives us the freedom to experiment with a new API whilst 
>>> still "supporting what's provided by public releases of draft specs.
>> 
>> However, this doesn't avoid the IP grey of releasing "unofficial" APIs in 
>> our "official" releases.

Does the OSGi alliance disallow the inclusion of these "unofficial" APIs?

>> Effectively, option (2) is a hybrid approach, since we couldn't make 
>> modifications in the provisional API unless it were available in a public 
>> spec snapshot, so any modifications would have to be done in felix package 
>> namespace. Which sort of makes (2) the worst of both worlds.


Well, if the snapshots are so outdated that it does not make sense to implement 
them, then we should not even try. In that case, just stick to (1).

I guess the other point would be for the OSGi Alliance to just develop new RFCs 
out in the open, but as long as they're not, it's probably safer to ignore them 
if it could cause problems otherwise.

Greetings, Marcel



Re: Handling of provisional OSGi API

2010-09-17 Thread Richard S. Hall

 On 9/17/10 12:11, Richard S. Hall wrote:

 On 9/17/10 11:36, Marcel Offermans wrote:

On 17 Sep 2010, at 18:35 , Richard S. Hall wrote:

 From my point of view, approach (1) might not be awesome, but it 
results in a simpler process than (2). So, I'd recommend (1). If the 
majority prefers (2), then we can do that (although I think we'll 
have to run the decision by the board first).

I prefer (1) too.

I could see us combine (1) with (2), releasing implementations with 
both our own APIs which gives us the freedom to experiment with a new 
API whilst still "supporting what's provided by public releases of 
draft specs.


However, this doesn't avoid the IP grey of releasing "unofficial" APIs 
in our "official" releases. Effectively, option (2) is a hybrid 
approach, since we couldn't make modifications in the provisional API 
unless it were available in a public spec snapshot, so any 
modifications would have to be done in felix package namespace. Which 
sort of makes (2) the worst of both worlds.


I should have been clearer, the two points I raise above are 
unrelated...they should have been in separate paragraphs.


-> richard



-> richard

In the end, we are an open source project, so we should stick to 
what's available out in the open.


Greetings, Marcel



Re: Handling of provisional OSGi API

2010-09-17 Thread Richard S. Hall

 On 9/17/10 11:36, Marcel Offermans wrote:

On 17 Sep 2010, at 18:35 , Richard S. Hall wrote:


 From my point of view, approach (1) might not be awesome, but it results in a 
simpler process than (2). So, I'd recommend (1). If the majority prefers (2), 
then we can do that (although I think we'll have to run the decision by the 
board first).

I prefer (1) too.

I could see us combine (1) with (2), releasing implementations with both our own 
APIs which gives us the freedom to experiment with a new API whilst still 
"supporting what's provided by public releases of draft specs.


However, this doesn't avoid the IP grey of releasing "unofficial" APIs 
in our "official" releases. Effectively, option (2) is a hybrid 
approach, since we couldn't make modifications in the provisional API 
unless it were available in a public spec snapshot, so any modifications 
would have to be done in felix package namespace. Which sort of makes 
(2) the worst of both worlds.


-> richard


In the end, we are an open source project, so we should stick to what's 
available out in the open.

Greetings, Marcel



Re: Handling of provisional OSGi API

2010-09-17 Thread Marcel Offermans
On 17 Sep 2010, at 18:35 , Richard S. Hall wrote:

> From my point of view, approach (1) might not be awesome, but it results in a 
> simpler process than (2). So, I'd recommend (1). If the majority prefers (2), 
> then we can do that (although I think we'll have to run the decision by the 
> board first).

I prefer (1) too.

I could see us combine (1) with (2), releasing implementations with both our 
own APIs which gives us the freedom to experiment with a new API whilst still 
"supporting what's provided by public releases of draft specs.

In the end, we are an open source project, so we should stick to what's 
available out in the open.

Greetings, Marcel



Handling of provisional OSGi API

2010-09-17 Thread Richard S. Hall
 For a long time, we've played a little fast and loose with our 
handling of provisional OSGi API. Starting with the OBR 1.6.0 and Gogo 
0.6.0 releases, we've started to evolve a policy on how to handle this, 
but nothing has been decided concretely. This is problematic since it 
leads different people to different decisions. Thus, its about time we 
defined our policy on this.


So, what's the issue?

Provisional OSGi API is not official. Further, provisional package 
content is evolving and these changes are not always made readily 
available by the OSGi Alliance. Even though some of us are members of 
the OSGi Alliance, we are not necessarily at liberty to disclose changes 
to internal RFCs.


So, what can we do about it?

I see two potential [reasonable] policies from which we could choose:

  1. Always use the org.apache.felix package namespace for provisional
 OSGi API until the spec goes final.
  2. Use the org.osgi package namespace while the provisional API is in
 development, but only expose what has been publicly made available
 by the OSGi Alliance.

Both approaches have their drawbacks.

The benefit of (1) is that the legal/IP/etiquette issues and/or concerns 
are reduced to those associated with normal open source development. For 
completely new development, like Gogo, this would all happen in non-OSGi 
packages, while changes to existing packages would need to be done in 
subclasses in non-OSGi packages. One downside of (1) is that it will 
always result in a package name change at the end that will break 
existing clients. For this reason, such experimental packages should be 
exported with mandatory attributes to warn potential clients.


The benefit of (2) is that the package namespace is more consistent. The 
downside of (2) is that it is a IP/legal/etiquette gray area as to 
whether or not we can do official releases of subprojects containing 
provisional OSGi API. Even if we do not modify the API, it still is 
potentially confusing to our users who are getting an "official" release 
from us of a subproject containing these "unofficial" bytes. At a 
minimum we would also need to use deprecated tags and/or mandatory 
attributes to warn people. Even then, it still raises issues since we 
aren't at liberty to evolve the packages freely to include OSGi 
internal, non-public RFC updates, nor extensions for potential feedback 
into the RFC. In those cases, we would still need to resort to putting 
stuff in org.apache.felix packages and renaming later once the changes 
become public, which would also be problematic for clients. Also, you 
have to consider the case where the RFC is abandoned, in which case if 
we still find it useful, we'll be forced to change our package names.


From my point of view, approach (1) might not be awesome, but it 
results in a simpler process than (2). So, I'd recommend (1). If the 
majority prefers (2), then we can do that (although I think we'll have 
to run the decision by the board first).


Thoughts?

-> richard