felix-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From conflue...@apache.org
Subject [CONF] Apache Felix > Proviosional OSGi API Policy
Date Thu, 23 Sep 2010 19:55:00 GMT
    <base href="https://cwiki.apache.org/confluence">
            <link rel="stylesheet" href="/confluence/s/1810/9/1/_/styles/combined.css?spaceKey=FELIX&amp;forWysiwyg=true"
<body style="background: white;" bgcolor="white" class="email-body">
<div id="pageContent">
<div id="notificationFormat">
<div class="wiki-content">
<div class="email">
    <h2><a href="https://cwiki.apache.org/confluence/display/FELIX/Proviosional+OSGi+API+Policy">Proviosional
OSGi API Policy</a></h2>
    <h4>Page  <b>added</b> by             <a href="https://cwiki.apache.org/confluence/display/~heavy@ungoverned.org">Richard
S. Hall</a>
    <div class="notificationGreySide">
         <h1><a name="ProviosionalOSGiAPIPolicy-ProvisionalOSGiAPIpolicy"></a>Provisional
OSGi API policy</h1>

<h2><a name="ProviosionalOSGiAPIPolicy-Overview"></a>Overview</h2>

<p>The OSGi Alliance exposes provisional API through draft specification releases. Additionally,
some Felix contributors work for OSGi Alliance member companies and have access to provisional
OSGi API. Often, Felix subprojects want to experiment with and/or implement provisional OSGi
API. In some cases, Felix subprojects may actually be the reference implementation for the
specification in question. This creates potentially confusing or questionable situations.</p>

<p>For example, if a Felix subproject is released with provisional OSGi API, downstream
users may not be aware that the contained API is not final OSGi API. They may mistakenly confer
"official" status on it, since it is contained in an "official" Apache release. Further, the
ability to implement OSGi specifications is based on creating compliant implementations. Since
it is not really possible to be compliant with a provisional specification, the status of
such implementations is sort of a gray area.</p>

<p>To deal with these situations, this document describes the policy for handling provisional
OSGi API in Felix subprojects.</p>

<h2><a name="ProviosionalOSGiAPIPolicy-Policysummary"></a>Policy summary</h2>

<p>To make the policy as simple and consistent as possible, Felix subprojects must not
contain nor depend on provisional OSGi API. Provisional OSGi API refers to anything in the
<tt>org.osgi.*</tt> package namespace that is not part of a final released specification.</p>

<h2><a name="ProviosionalOSGiAPIPolicy-Policyinpractice"></a>Policy in practice</h2>

<p>Since subprojects will still want to implement and experiment with provisional OSGi
specifications, this must still be possible. The following steps should be taken when working
on or with provisional OSGi specifications:</p>

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

<p>When working with new specifications, this 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

<h2><a name="ProviosionalOSGiAPIPolicy-Policyrationale"></a>Policy rationale</h2>

<p>The first goal of this policy is to completely avoid using provisional OSGi API given
the potential confusion and questions by doing so. The second goal is to make the existence
of any Felix provisional API completely obvious to downstream users and make it difficult
for them to use it unknowingly. This latter goal gives us the ability to still "release early
and often", but without being required to maintain backward compatibility on provisional APIs.</p>
    <div id="commentsSection" class="wiki-content pageSection">
       <div style="float: right;">
            <a href="https://cwiki.apache.org/confluence/users/viewnotifications.action"
class="grey">Change Notification Preferences</a>
       <a href="https://cwiki.apache.org/confluence/display/FELIX/Proviosional+OSGi+API+Policy">View
       <a href="https://cwiki.apache.org/confluence/display/FELIX/Proviosional+OSGi+API+Policy?showComments=true&amp;showCommentArea=true#addcomment">Add

View raw message