On 9/23/10 11:36, Guillaume Nodet wrote:
Yeah, once there has been a draft published.  Before that, you had to
do what i described.

IC.

Well, it is somewhat difficult to compare with were talking about with their policy, since they use the OSGi package namespace and we aren't going to use it. I think our policy is better. ;-)

-> richard

On Thu, Sep 23, 2010 at 17:34, Richard S. Hall<[email protected]>  wrote:
  On 9/23/10 11:27, Guillaume Nodet wrote:
I don't want to be the devil's advocate, but i think if the spec
aren't published, we can't even make then available to the public in
any form.
I know that because the equinox guys, when working on a prototype for
rfc 138 did not even include it it the svn tree.  So you had to grab
them from the osgi repository and add them yourself to the build tree.
   I know that's really annoying, but maybe we could discuss that with
the OSGi alliance.
This is not what I understand. They've made 138 available already, I believe
WebSphere depends on a prior prototype of 138. What both BJ and Tom told me
is that they mark everything as deprecated.

The main thing I think we should avoid is including provisional OSGi API in
our "official" releases, because this can clearly lead to confusion as to
whether or not the OSGi API is also official.

However, I'm fine with Felix' view that we should always use our own
namespace until the spec is final.

->  richard

On Thu, Sep 23, 2010 at 16:13, Felix Meschberger<[email protected]>
  wrote:
Hi,

Am 23.09.2010 16:05, schrieb Richard S. Hall:
  On 9/23/10 2:49, Felix Meschberger wrote:
Hi,

Maybe too late, but anyways.
No, it's not too late, since we still need to define our policy with
respect to provisional OSGi APIs...so we need everyone's opinion on this
to come to consensus.

Felix, this will likely impact you in odd ways if you continue to
provide the Config Admin RI. For example, if you implement the future
spec changes, if you plan to release it so people can play with it then
you'll need to put the changed API in org.apache.felix.cm namespace.
Hmm, yes.

Unless OSGi decides otherwise I am fine with continuing supplying the RI.

If you don't plan on releasing it until the spec is final, then I
suppose org.osgi namespace is fine, but we should still probably mark
them the same way.
Actually we should do this regardless of whether we release or not, but
maybe it would be good to release.

I guess this last point is also worthwhile to discuss. I think our
policy can differentiate between what we release and what we experiment
with, right? The policy for releases should be "no provisional OSGi
API", while for playing around in trunk or a sandbox is different,
right? Or no?
I think whatever we have in SVN is kind of publicly available and thus I
think we should do experiments in our own namespace even if we don't
release.

Regards
Felix

I am probably fine with #3.

I particularly like the key argument for using mandatory attributes:
"clearly state that you know what you are doing".
Ok, that's two for #3. :-)

->    richard

Regards
Felix

Am 22.09.2010 21:48, schrieb Richard S. Hall:
   On 9/22/10 14:44, Richard S. Hall wrote:
   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.
Tom Watson (of Equinox fame) pointed out that using both is probably
the
best option because only using mandatory attributes doesn't address
Require-Bundle, which could use the packages freely without opting in.
Otherwise, he feels the same way I do, that mandatory attributes are a
good idea (just like for split packages), because you really need to
know what you are doing to use the packages...

Given the fact that I really need to get a release of Gogo trunk out
the
door, I'm 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<[email protected]>
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<[email protected]>       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<[email protected]>         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




Reply via email to