Draft policy here:https://cwiki.apache.org/confluence/display/FELIX/Proviosional+OSGi+API+Policy
-> richard On 9/23/10 11:42, Richard S. Hall wrote:
On 9/23/10 11:40, Richard S. Hall wrote: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. ;-)Ugh. That should say:"...it is somewhat difficult to compare what we're talking about with their policy..."-> richard-> richardOn Thu, Sep 23, 2010 at 17:34, Richard S. Hall<[email protected]> wrote:On 9/23/10 11:27, Guillaume Nodet wrote: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 meI 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 grabthem from the osgi repository and add them yourself to the build tree. I know that's really annoying, but maybe we could discuss that withthe OSGi alliance.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 towhether 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. -> richardOn 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: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 thisHi, Maybe too late, but anyways.to come to consensus. Felix, this will likely impact you in odd ways if you continue toprovide 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.Actually we should do this regardless of whether we release or not, butIf you don't plan on releasing it until the spec is final, then Isuppose org.osgi namespace is fine, but we should still probably markthem the same way.maybe it would be good to release.I think whatever we have in SVN is kind of publicly available and thus II guess this last point is also worthwhile to discuss. I think ourpolicy can differentiate between what we release and what we experimentwith, 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?think we should do experiments in our own namespace even if we don't release. Regards FelixI 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. :-) -> richardRegards 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 doTom Watson (of Equinox fame) pointed out that using both is probablya release... Guillaume and I were discussing alternatives to a mandatory attribute.An alternative idea was mark all provisional API as deprecated, soclients 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 canever claim they didn't know it was provisional.2. The benefit of using deprecated tags is that it works moresmoothly 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 otherpeople think.thebest 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 toknow what you are doing to use the packages...Given the fact that I really need to get a release of Gogo trunk outthe 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 iteven 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. -> richardQuickly. :-) -> 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 notIf 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'smuch.thatI don't want to be taken to task in the future for throwing away theAPI. 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 amaintenance 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 referringto 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 Idon't really think that constitutes a breaking code change...certainly a breaking metadata change. -> richardMandatory attributes are not very common and the tooling mightnot beprepared to handle those gracefully. For example, I've just hit abigproblem with karaf integration tests that use pax-exam, because the mandatory attribute it not automatically added, so all test bundleswere failing during resolution ...I've fixed that, but an average user will be in a real trouble ifhitting 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:It sounds like we have consensus, so we can probably just moveI also favor #1. When we apply this to gogo, it will mean removing the draft RFC-147 API fromthe org.osgi.service.command namespace and moving it to a felixnamespace.We actually already did this for the gogo-0.6 release, but thenreverted the change in the trunk, as it broke many command providers who importedorg.osgi.service.command. Back then we didn't have a policy forsupportingdraft OSGi APIs, but now it seems like we've agreed on #1. Do weneed a vote?forward. -> richardDerek On 19 September 2010 17:27, Richard S. Hall<[email protected]> wrote:On 9/18/10 10:34, Felix Meschberger wrote:From my point of view we should just export the packagesHi, While I understand (and certainly don't underestimate the consequencesof) the drawbacks of option (1) I still think it is the betteroption.At the time the OSGi releases the official API, we can stillkeep ourinternal API for certain period of time thus supporting bothAPI, if we so wish.with mandatoryattributes and make it clear they will change when the API goesfinal. Forframework, I wouldn't plan to provide any ongoing support forprovisionalAPI. However, I don't think we need to mandate a global Felixpolicy forthis and subprojects can choose to support two APIs if theywant. -> richard RegardsFelix Am 17.09.2010 18:35, schrieb Richard S. Hall:For a long time, we've played a little fast and loosewith our handlingof provisional OSGi API. Starting with the OBR 1.6.0 and Gogo0.6.0releases, we've started to evolve a policy on how to handlethis, 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, provisionalpackagecontent is evolving and these changes are not always madereadilyavailable by the OSGi Alliance. Even though some of us aremembers 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 couldchoose:1. Always use the org.apache.felix package namespace forprovisional OSGi API until the spec goes final. 2. Use the org.osgi package namespace while the provisional API is indevelopment, but only expose what has been publiclymade 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. Forcompletely new development, like Gogo, this would all happenin non-OSGipackages, while changes to existing packages would need to bedone insubclasses in non-OSGi packages. One downside of (1) is thatit willalways result in a package name change at the end that willbreakexisting clients. For this reason, such experimental packagesshould beexported with mandatory attributes to warn potential clients.The benefit of (2) is that the package namespace is more consistent. Thedownside of (2) is that it is a IP/legal/etiquette gray areaas towhether or not we can do official releases of subprojectscontainingprovisional OSGi API. Even if we do not modify the API, itstill is potentially confusing to our users who are getting an "official" releasefrom us of a subproject containing these "unofficial" bytes.At a minimum we would also need to use deprecated tags and/or mandatoryattributes to warn people. Even then, it still raises issuessince wearen't at liberty to evolve the packages freely to includeOSGi internal, non-public RFC updates, nor extensions for potential feedbackinto the RFC. In those cases, we would still need to resortto puttingstuff in org.apache.felix packages and renaming later oncethe changesbecome 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 resultsin a simpler process than (2). So, I'd recommend (1). If themajorityprefers (2), then we can do that (although I think we'll haveto run the decision by the board first). Thoughts? -> richard-- Cheers, Guillaume Nodet ------------------------ Blog: http://gnodet.blogspot.com/ ------------------------ Open Source SOA http://fusesource.com
