<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>Project Plan - rt.equinox</title><meta name="author" content="Bjorn Freeman-Benson" />
<meta name="keywords" content="" /><link rel="stylesheet" type="text/css" href="http://www.eclipse.org/eclipse.org-common/themes/Phoenix/css/small.css" title="small" /><link rel="alternate stylesheet" type="text/css" href="http://www.eclipse.org/eclipse.org-common/themes/Phoenix/css/large.css" title="large" /><link rel="stylesheet" type="text/css" href="http://www.eclipse.org/eclipse.org-common/themes/Phoenix/css/visual.css" media="screen" /><link rel="stylesheet" type="text/css" href="http://www.eclipse.org/eclipse.org-common/themes/Phoenix/css/layout.css" media="screen" />
<!--[if IE]> 	<link rel="stylesheet" type="text/css" href="http://www.eclipse.org/eclipse.org-common/themes/Phoenix/css/ie_style.css" media="screen"/> <![endif]-->
<!--[if IE 6]> 	<link rel="stylesheet" type="text/css" href="http://www.eclipse.org/eclipse.org-common/themes/Phoenix/css/ie6_style.css" media="screen"/> <![endif]-->
<link rel="stylesheet" type="text/css" href="http://www.eclipse.org/eclipse.org-common/themes/Phoenix/css/print.css" media="print" />
<link rel="stylesheet" type="text/css" href="http://www.eclipse.org/eclipse.org-common/themes/Phoenix/css/header.css" media="screen" />
<script type="text/javascript" src="http://www.eclipse.org/eclipse.org-common/themes/Phoenix/styleswitcher.js"></script>
</head>
<body>
<div id="header">
	<div id="header-graphic" class="eclipse-main">
		<a href="http://www.eclipse.org/"><img src="http://www.eclipse.org/eclipse.org-common/themes/Phoenix/images/eclipse_home_header.jpg" alt="" /></a><h1>Eclipse</h1>	
	</div>
	<div id="header-global-holder" class="eclipse-main-global">
		<div id="header-global-links"><ul>
<li><a href="http://www.eclipse.org/org/foundation/contact.php" class="first_one">Contact</a></li><li><a href="http://www.eclipse.org/legal/">Legal</a></li>
			</ul>
		</div>
		<div id="header-icons">
<a href="http://www.youtube.com/user/EclipseFdn" target="_blank"><img src="/eclipse.org-common/themes/Phoenix/images/Icon_Live.png" width="28" height="28" alt="Eclipse YouTube Channel" title="Eclipse YouTube Channel" /></a>
<a href="http://www.eclipseplugincentral.com"><img src="http://www.eclipse.org/eclipse.org-common/themes/Phoenix/images/Icon_plugin.png" width="28" height="28" alt="Eclipse Plugin Central" title="Eclipse Plugin Central" /></a>
<a href="http://www.planeteclipse.org"><img src="http://www.eclipse.org/eclipse.org-common/themes/Phoenix/images/Icon_planet.png" width="28" height="28" alt="Planet Eclipse" title="Planet Eclipse" /></a>
		</div>
	</div></div><div id="header-menu"><div id="header-nav">
		<ul>
		<li><a class="first_one" href="http://www.eclipse.org/" target="_self">Home</a></li> 
				<li><a  href="http://www.eclipse.org/users/" target="_self">Users</a></li> 
				<li><a  href="http://www.eclipse.org/membership/" target="_self">Members</a></li> 
				<li><a  href="http://www.eclipse.org/committers/" target="_self">Committers</a></li> 
				<li><a  href="http://www.eclipse.org/downloads/" target="_self">Downloads</a></li> 
				<li><a  href="http://www.eclipse.org/resources/" target="_self">Resources</a></li> 
				<li><a  href="http://www.eclipse.org/projects/" target="_self">Projects</a></li> 
				<li><a  href="http://www.eclipse.org/org/" target="_self">About Us</a></li> 
				</ul>
	</div>
	<div id="header-utils">
		<form action="http://www.google.com/cse" id="searchbox_017941334893793413703:sqfrdtd112s">
	 	<input type="hidden" name="cx" value="017941334893793413703:sqfrdtd112s" />
  		<input type="text" name="q" size="25" />
  		<input type="submit" name="sa" value="Search" />
		</form>
		<script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=searchbox_017941334893793413703%3Asqfrdtd112s&lang=en"></script>		<ul>
						<li class="text_size"><a class="smallText" title="Small Text" href="#" onclick="setActiveStyleSheet('small');return false;">A</a> <a class="largeText" title="Large Text" href="#" onclick="setActiveStyleSheet('large');return false;">A</a></li>
		</ul>
	</div></div><div id="leftcol">
<ul id="leftnav">
<li style="background-image: url(/eclipse.org-common/themes/Phoenix/images/leftnav_fade.jpg); background-repeat: repeat-x; border-style: none;"><br /><br /><br /><br /><br /><br /><br /><br />
</li>
</ul>

</div>
<div id="container"><style>
h2 {
	border-bottom: 2px solid gray;
}
h3 {
	border-bottom: 1px dotted gray;
}
</style>
<div xmlns="http://www.w3.org/1999/xhtml" id="rendered-plan">
  <div id="maincontent">
    <div id="midcolumn"><h1><span style="font-size: 140%">Project Plan For
                        <a href="http://www.eclipse.org/projects/project_summary.php?projectid=rt.equinox">Equinox</a></span>, version Galileo</h1><div id="toc"><p><a name="toc"><strong>Table of Contents</strong></a></p><ul><li><a href="#introduction">Introduction</a></li><li><a href="#release_deliverables">
                       Release Deliverables
                    </a></li><li><a href="#release_milestones">
                       Release Milestones
                    </a></li><li><a href="#target_environments">
                        Target Environments
                    </a></li><li><a href="#compatibility">
                        Compatibility with Previous Releases
                    </a></li><li><a href="#themes_and_priorities">
                        Themes and Priorities
                    </a></li><li><a href="#appendix">
                        Appendix
                    </a></li></ul></div><h2><a name="introduction">Introduction</a></h2><div>
<hr/>

<p>
The goal of the Equinox project is to be a first class OSGi community and foster the vision of Eclipse 
as a landscape of bundles. As part of this, it is responsible for developing and delivering the OSGi 
framework implementation used for all of Eclipse.
</p><p>
 This plan is for Equinox as part of the 
Galileo release in 2009 and attempts to balance the evolution of the technology with the increased 
need for testing and robustness.
</p><p>
This release of Equinox tackles a number of challenges.  As OSGi gains more visibility and Equinox 
more use, new use-cases and drivers come to the fore -- people 
are pushing the technology and implementation in new directions.  2009 will also see the release of a new 
OSGi spec revision. Equinox will implement this spec and several of the new services.  Equinox will also 
deliver runtime technologies including the p2 provisioning platform, the extension registry, integrated security 
support as well as support for OSGi on on the server.
</p>

  </div><h2><a name="release_deliverables">Release Deliverables</a></h2><div>
<ul>
	<li><b>Equinox source code release</b>, available as versions tagged "R3_5" in the project's
		<ul>
			<li><a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.equinox/?root=RT_Project">Equinox CVS Repository</a></li>
		</ul>
	</li>
	<li><b>Framework:</b>
		<ul>
		   <li>An OSGi R4.2 Core Framework implementation</li>
		   <li>Native launcher and splash screen support</li>
    	</ul>
    </li>
	<li><b>Compendium Services:</b>
		<ul>
		   <li>Application Container - An implementation of the OSGi R4.2 MEG Application Container service.</li>
		   <li>Config Admin - An implementation of the OSGi R4.2 Configuration Admin service.</li>
		   <li>Device Access Service - An implementation of the OSGi R4.2 Device Access service.</li>
		   <li>Declarative Services - An implementation of the OSGi R4.2 Declarative Services specification.</li>
		   <li>Event Admin Service - An implementation of the OSGi R4.2 Event Admin Service.</li>
		   <li>HTTP Service - An implementation of the OSGi R4.2 HTTP service.</li>
		   <li>HTTP Servlet - Generic support for exposing another servlet facility (e.g., an underlying application server) as an OSGi HTTP service.</li>
		   <li>IO Connector Service - An implementation of the OSGi R4.2 IO Connector Service.</li>
		   <li>Initial Provisioning - An implementation of the OSGi R4.2 Initial Provisioning.</li>
		   <li>Log Service - An implementation of the OSGi R4.2 Log service.</li>
		   <li>Metatype Service - An implementation of the OSGi R4.2 Metatype service.</li>
		   <li>Preferences Service - The Eclipse preference service is an extension of the standard OSGi preference service that adds listeners and the notion of preference scopes.</li>
		   <li>User Admin Service - An implementation of the OSGi R4.2 User Admin Service.</li>
		   <li>Wire Admin Service - An implementation of the OSGi R4.2 Wire Admin Service.</li>
    	</ul>
    </li>
    <li><b>p2</b>
		<ul>
			<li>Command line application to mirror repositories.</li>
			<li>Command line application to manage (install / uninstall / update) an eclipse install.</li> 
			<li>UI to manage an eclipse installation from within eclipse.</li>
			<li>API to programmatically interact with p2.</li>
		</ul>
	</li>
    <li><b>Component model</b>
    	<ul>
    		<li>Eclipse Extension Registry - The Eclipse extension registry allows bundles to communicate and cooperate using declarative markup and lazy instantiation.</li>
    		<li>Equinox Transforms - A framework to provide transformations of bundle resources.</li>
    	</ul>
    </li>
    <li><b>Security</b>
    	<ul>
    		<li>Equinox Secure Storage</li>
    		<li>Certificate Trust Engine - API for to managing trusted certificates</li>
    	</ul>
    </li>
    <li><b>Server Side</b>
    	<ul>
    		<li>HTTP Registry - Support for registering servlets, resources and JSPs via the Eclipse extension registry rather than using the code based OSGi registration mechanisms.</li>
			<li>JSP Registry - Provides a JSP Factory that allows JSP usage with the HTTP Registry.</li>
    		<li>Servlet Bridge - Low level hook servlet installed in an existing traditional application server. This servlet launches an embedded Equinox and enables it to handle incoming HTTP requests originally sent to the underlying server.</li>
    		<li>HTTP Jetty - A thin layer that exposes an embedded Jetty server as a compliant OSGi HTTP service.</li>
    	</ul>
    </li>
</ul>

  </div><p><a href="#toc">Table of Contents</a></p><h2><a name="release_milestones">Release Milestones</a></h2><p>      
Release milestones will be occurring at roughly 6 week intervals, and will be aligned with the
<a href="http://wiki.eclipse.org/Galileo_Simultaneous_Release">
Galileo Simultaneous Release</a> train.
    </p><table border="1" align="center"><tr><td><b>M1</b></td><td>08/08/2008</td><td><div>3.5M1</div></td></tr><tr><td><b>M2</b></td><td>09/19/2008</td><td><div>3.5M2</div></td></tr><tr><td><b>M3</b></td><td>10/31/2008</td><td><div>3.5M3</div></td></tr><tr><td><b>M4</b></td><td>12/12/2008</td><td><div>3.5M4</div></td></tr><tr><td><b>M5</b></td><td>01/30/2009</td><td><div>3.5M5</div></td></tr><tr><td><b>M6</b></td><td>03/13/2009</td><td><div>3.5M6 (API Freeze)</div></td></tr><tr><td><b>M7</b></td><td>05/01/2009</td><td><div>3.5M7 (Feature Freeze)</div></td></tr><tr><td><b>RC1</b></td><td>05/15/2009</td><td><div>3.5RC1</div></td></tr><tr><td><b>RC2</b></td><td>05/22/2009</td><td><div>3.5RC2</div></td></tr><tr><td><b>RC3</b></td><td>05/29/2009</td><td><div>3.5RC3</div></td></tr><tr><td><b>RC4</b></td><td>06/5/2009</td><td><div>3.5RC4</div></td></tr><tr><td><b>RC5</b></td><td>06/12/2009</td><td><div>3.5RC5</div></td></tr></table><div>
	A detailed view of the Equinox 3.5 milestone plans towards the release are available at the following links.
	<ul>
	<li><a href="http://wiki.eclipse.org/Equinox/Plan/Galileo/Framework">Framework</a></li>
	<li><a href="http://wiki.eclipse.org/Equinox/p2/Plan">p2</a></li>
	<li><a href="http://wiki.eclipse.org/Equinox/Plan/Galileo/Security">Security</a></li>
	</ul>
<p>
The target date for availability of Equinox 3.5 is:</p>
<ul>
	<li>Friday June 26, 2009 - Equinox 3.5 Release date (with Galileo)</li>
</ul>
    </div><p><a href="#toc">Table of Contents</a></p><h2><a name="target_environments">Target Environments</a></h2><div>
<p>In order to remain current, each Equinox release targets reasonably current
  operating environments. </p>
<p>Most of Equinox is "pure" Java code and has no direct dependence
  on the underlying operating system. The chief dependence is therefore on the
  Java Platform itself. Portions of Equinox are targeted to specific classes of operating
  environments, requiring their source code to only reference facilities available
  in particular class libraries (e.g. J2ME Foundation 1.0, J2SE 1.3 and 1.4,
  etc.). </p>
<p> In general, the 3.5 release of Equinox is developed for a mix
  of J2ME Foundation 1.0 and 1.1 JREs. Certain bundles do however use facilities in more
  recent JRE versions.  In such cases, the associated capabilities are available when
  running on the required JRE. </p>
<p> <a href="#Appendix1">Appendix 1</a> contains a table that indicates the class
  library level required for each bundle. </p>

<p>There are many different implementations of the Java Platform running atop
  a variety of operating systems. We focus Equinox testing on a handful of
  popular combinations of operating system and Java Platform; these are our <em>reference
  platforms</em>. Equinox undoubtedly runs fine in many operating environments
  beyond the reference platforms we test, including those using Java6 VMs. However,
  since we do not systematically test them we cannot vouch for them. Problems
  encountered when running Equinox on a non-reference platform that cannot be
  recreated on any reference platform will be given lower priority than problems
  with running Equinox on a reference platform.</p>
<p> Equinox 3.5 is tested and validated on the following reference platforms
(<img src="new.gif" alt="(new)" border="0" height="12" width="12"/> multiple updates)
  (this list is updated over the course of the release cycle):</p>

  <table border="1" cellpadding="2" cellspacing="2" width="80%" summary="Equinox Reference Platforms">
    
      <tr align="center">
        <td><b>Reference Platforms</b></td>

      </tr>
      <tr>
        <td><b>Microsoft Windows Vista, x86-32, Win32</b> running (any of):
          <ul>
            <li>Sun Java 2 Standard Edition 5.0 Update 14 for Microsoft Windows</li>
            <li>IBM 32-bit SDK for Windows, Java 2 Technology Edition 5.0, SR6b</li>
            <li>BEA JRockit 27.4.0, for Microsoft Windows</li>

          </ul></td>
      </tr>
      <tr>
        <td><b>Microsoft Windows XP, x86-32, Win32</b> running (any of):
          <ul>
            <li>Sun Java 2 Standard Edition 6.0 Update 4 for Microsoft Windows</li>
            <li>Sun Java 2 Standard Edition 5.0 Update 14 for Microsoft Windows</li>

            <li>IBM 32-bit SDK for Windows, Java 2 Technology Edition 5.0, SR6b</li>
            <li>BEA JRockit 27.4.0, for Microsoft Windows</li>
            <li>Sun Java 2 Standard Edition 1.4.2_16 for Microsoft Windows</li>
            <li>IBM 32-bit SDK for Windows, Java 2 Technology Edition 1.4.2 SR10</li>
          </ul></td>
      </tr>
      <tr>

        <td><b>Red Hat Enterprise Linux 5.0, x86-32, GTK</b> running (any of):
          <ul>
            <li>Sun Java 2 Standard Edition 5.0 Update 14 for Linux x86</li>
            <li>IBM 32-bit SDK for Linux on Intel architecture, Java 2 Technology Edition 5.0, SR6b</li>
            <li>BEA JRockit 27.4.0, for Linux x86</li>
            <li>Sun Java 2 Standard Edition 1.4.2_16 for Linux x86</li>

            <li>IBM 32-bit SDK for Linux on Intel architecture, Java 2 Technology Edition 1.4.2 SR10</li>
          </ul></td>
      </tr>
      <tr>
        <td><b>SUSE Linux Enterprise Server 10, x86-32, GTK</b> running (any
          of):
          <ul>
            <li>Sun Java 2 Standard Edition 5.0 Update 14 for Linux x86</li>

            <li>IBM 32-bit SDK for Linux on Intel architecture, Java 2 Technology Edition 5.0, SR6b</li>
          </ul></td>
      </tr>
      <tr>
        <td><b>Microsoft Windows Vista, x86-64, Win32</b> running (any of):
          <ul>
            <li>Sun Java 2 Standard Edition 5.0 Update 14 for Microsoft Windows (AMD64/EM64T)</li>

            <li>IBM 64-bit SDK for Windows, Java 2 Technology Edition 5.0, SR6b</li>
          </ul></td>
      </tr>
      <tr>
        <td><b>Microsoft Windows XP Professional x64 Edition, x86-64, Win32</b> running (any of):
          <ul>
            <li>Sun Java 2 Standard Edition 5.0 Update 14 for Microsoft Windows (AMD64/EM64T)</li>

            <li>IBM 64-bit SDK for Windows, Java 2 Technology Edition 5.0, SR6b</li>
          </ul></td>
      </tr>
      <tr>
        <td><b>Red Hat Enterprise Linux 4.0 update 2, x86-64, GTK</b> running:
          <ul>
            <li>Sun Java 2 Standard Edition 5.0 Update 14 for Linux x86_64</li>

          </ul></td>
      </tr>
      <tr>
        <td><b>Sun Solaris 10, SPARC, GTK</b> running:
          <ul>
            <li>Sun Java 2 Standard Edition 5.0 Update 14 for Solaris SPARC</li>
          </ul></td>
      </tr>

      <tr>
        <td><b>HP-UX 11i v2, ia64, Motif 2.1, GTK</b> running:
          <ul>
            <li>HP-UX Java 2 Standard Edition 5.0 Update 7 for Itanium</li>
          </ul></td>
      </tr>
      <tr>
        <td><b>IBM AIX 5.3, Power, Motif 2.1</b> running:
          <ul>

            <li>IBM 32-bit SDK, Java 2 Technology Edition 5.0, SR6b</li>
          </ul></td>
      </tr>
      <tr>
        <td><b>Red Hat Enterprise Linux 5.0, Power, GTK</b> running:
          <ul>
            <li>IBM 32-bit SDK for Linux on pSeries architecture, Java 2 Technology Edition 5.0, SR6b</li>

          </ul></td>
      </tr>
      <tr>
        <td><b>SUSE Linux Enterprise Server 10, Power, GTK</b> running:
          <ul>
            <li>IBM 32-bit SDK for Linux on pSeries architecture, Java 2 Technology Edition 5.0, SR6b</li>
          </ul></td>
      </tr>

      <tr>
        <td><b>Apple Mac OS X 10.5, Universal, Carbon</b> running:
          <ul>
            <li>Apple Java 2 Platform Standard Edition (J2SE) 5, service release 4</li>
          </ul></td>
      </tr>
    
  </table>


<p>Because Java 1.4.2 and Java5 based platforms are used for most Eclipse development,
  those platforms are listed here. Although there are teams doing some Java 6
  based development we have not included specific Java6 VMs, since they have
  not yet received the general level of testing we require. <i>We expect that
  Equinox works fine on other current Java VMs and OSes but we cannot flag these as reference 
  platforms without significant community support for testing them. Especially in areas such as 
  the launcher and OS security integration.</i></p>
 <p>As Equinox is largely headless, there are very few dependencies on window systems.
 Where there are UI elements (e.g., in the p2 UI), these elements will work on any configuration 
 supported by SWT.</p>

  </div><h3>Internationalization</h3>
<p>Equinox is designed as the basis for internationalized products. The
  user interface elements provided by Equinox components, including dialogs
  and error messages, are externalized. The English strings are provided as the
  default resource bundles.</p>
<p>Latin-1 and DBCS locales are supported by Equinox on all reference platforms;
  BIDI locales are supported by Equinox everywhere but on Motif.</p>
<p>Equinox supports GB 18030 (level 1), the Chinese code page standard,
  on Windows XP and 2000, Linux/GTK and the Macintosh.</p>
<p>German and Japanese locales are tested.</p>
    <p><a href="#toc">Table of Contents</a></p><h2><a name="compatibility">Compatibility with Previous Releases</a></h2><div>
<p>Equinox 3.5 will be backward compatible with Equinox 3.4 (and, hence, with 3.3, 3.2, 3.1
  and 3.0).</p>
<p> <strong>API Contract Compatibility:</strong> Equinox 3.5 will be upwards
  contract-compatible with Equinox 3.4 except in those areas noted in the <a href="http://wiki.eclipse.org/Equinox_Galileo_Porting_Guide" target="_top"> <em>Equinox
  3.5 Migration Guide</em></a>. Programs that use affected APIs and extension
  points will need to be ported to Equinox 3.5 APIs. Downward contract compatibility
  is not supported. There is no guarantee that compliance with Equinox 3.5
  APIs would ensure compliance with Equinox 3.4 APIs. Refer to <a href="http://wiki.eclipse.org/index.php/Evolving_Java-based_APIs"> <em>Evolving
  Java-based APIs</em> </a> for a discussion of the kinds of API changes that
  maintain contract compatibility. </p>
<p><strong>Binary (bundle) Compatibility:</strong> Equinox 3.5 will be upwards
  binary-compatible with Equinox 3.4 except in those areas noted in the <a href="http://wiki.eclipse.org/Equinox_Galileo_Porting_Guide" target="_top"> <em>Equinox
  3.5 Migration Guide</em></a>. Downward bundle compatibility is not
  supported. Bundles for Equinox 3.5 will not in general be usable in Equinox 3.4.
  Refer to <a href="http://wiki.eclipse.org/index.php/Evolving_Java-based_APIs"> <em>Evolving
  Java-based APIs</em> </a> for a discussion of the kinds of API changes that
  maintain binary compatibility. </p>
<p><strong>Source Compatibility:</strong> Equinox 3.5 will be upwards source-compatible
  with Equinox 3.4 except in the areas noted in the <a href="http://wiki.eclipse.org/Equinox_Galileo_Porting_Guide" target="_top"> <em>Equinox
  3.5 Migration Guide</em></a>. This means that source files written
  to use Equinox 3.4 APIs might successfully compile and run against Equinox
  3.5 APIs, although this is not guaranteed. Downward source compatibility
  is not supported. If source files use new Equinox APIs, they will not be
  usable with an earlier version of Equinox. </p>
<p><strong>Non-compliant usage of API's</strong>: All non-API methods and classes,
  and certainly everything in a package with "internal" in its name or those
  packages marked with "x-internal=true" or with "x-friends" annotations,
  are considered implementation details which may vary between operating environment
  and are subject to change without notice. Client bundles that directly depend
  on anything other than what is specified in the Equinox API are inherently
  unsupportable and receive no guarantees about compatibility within a single
  release much less with earlier releases. Refer to <a href="http://www.eclipse.org/articles/Article-API%20use/eclipse-api-usage-rules.html"> <em>How
  to Use the Eclipse API</em> </a> for information about how to write compliant
  bundles. </p>
</div><p><a href="#toc">Table of Contents</a></p><h2><a name="themes_and_priorities">Themes and Priorities</a></h2><div>
<p>Plan items listed below were defined according to
 contributor requirements and the Eclipse <a href="http://wiki.eclipse.org/RequirementsCouncilThemesAndPriorities">
Themes and Priorities</a>
set forth by the Eclipse Requirements Council.
Each plan item covers a feature or API that is to be added to the 
Equinox deliverables, or some aspect of the Equinox Project that is to be improved. Each plan item has its 
own entry in the Eclipse bugzilla database, with a title and a 
concise summary (usually a single paragraph) that explains the 
work item at a suitably high enough level so that everyone can 
readily understand what the work item is without having to understand
the nitty-gritty detail. 
</p>
<p>Not all plan items represent the same amount of work; some may be quite
large, others, quite small. Although some plan items are for work that is 
more pressing than others, the plan items appear in no particular order.
See the corresponding bugzilla items for up-to-date status information on
ongoing work and planned delivery milestones.
</p>
<p>The current status of each plan item is noted:
</p>
<ul>
  <li><b>Committed</b> plan item - A committed plan item is one that we have
    decided to address for the release. In bugzilla, this is reflected by
    having a concrete target milestone assigned.</li>
  <li><b>Proposed</b> plan item - A proposed plan item is one that we are
    considering addressing for the release. Although we are actively
    investigating it, we are not yet in a position to commit to it, or to say
    that we won't be able to address it. After due consideration, a proposal
    will either be committed or deferred. In bugzilla, such items are reflected
    by having a target milestone "3.5" or "---" assigned.</li>
  <li><b>Deferred</b> plan item - A reasonable proposal that will not make it in
    to this release for some reason is marked as deferred with a brief note as
    to why it was deferred. Deferred plan items may resurface as committed plan
    items at a later point. In bugzilla, such items are reflected by having
    a target milestone "Future" assigned.</li>
</ul>
    </div><h3>Scalability and Performance</h3><p>
      	New usage scenarios for Equinox require it to be faster, smaller, bigger, ...  
      	The technology needs to scale up or down to allow Equinox to scale down to small embedded environments as well 
      	as scaling up to large server environments.
      	Monitor overall performance and memory consumption which includes the addition of new performance tests for new features. 
      </p><ul><li><b>Committed</b><ul>
	  	<li><strong>Framework</strong>
	  	  <ul>
	  	    <li>Investigate places where we can rid the framework of bulky and unnecessary abstraction layers to reduce size and improve performance (service registry abstraction, resolver abstraction etc.).
	  	    <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=248352">Bug 248352</a></li>
	  	  </ul>
	  	</li>
	  	<li><strong>p2</strong>
	  	  <ul>
	  	    <li>Investigate the places where the installation process is taking too long and see if we can reduce the install time. 
	  	    This includes review of the data structures and algorithms used as well as persistance approaches.
	  	    <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=249167">249167</a>.
	  	    </li>
	  	    </ul>
	  	</li>
	  </ul></li></ul><ul><li><b>Proposed</b><ul>
        <li><strong>Framework</strong>
	  	  <ul>
	  	    <li><strong>Improve performance of the "uses" directive in the resolver</strong> - The OSGi specification provides a modularity framework that ensures consist class spaces
	  	    when multiple versions of a package is available.  In order to ensure a consist class space 
	  	    exporters must specify what other packages they "use" with the "uses" 
	  	    directive.  The Equinox Framework correctly implements the "uses" directive but 
	  	    it has been found to cause performance issues in the resolver.
	  	    <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=216934">Bug 216934</a></li>
	  	  </ul>
	  	</li>
	  </ul></li></ul><ul><li><b>Deferred</b><ul><li><div>No items.</div></li></ul></li></ul><h3>Robustness</h3><p>
		Equinox has become the base for a wide range of platform from embedded to server to desktop and rich client applications.
		These new scenarios bring new requirements on the execution of Equinox as well as on the programming of its API.
		The Equinox team will improve the overall robustness by providing APIs for clients where needed and fixing critical bugs. 
		There will also be a focused effort on testability and enhancing the automated test suites.
      </p><ul><li><b>Committed</b><ul>
	  	<li><strong>Framework</strong>
	  	  <ul>
	  	    <li><strong>Thread Safety</strong> - The Framework lifecycle operations must be thread safe.  
	  	    Several bugs have been reported about thread safety issues when running bundle lifecycle 
	  	    operations from multiple threads.  This plan item is to review and fix thread safety issues in the 
	  	    Framework. <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=247636">Bug 247636</a></li>
	  	  </ul>
	  	</li>
	  	<li><strong>Security</strong>
	  	  <ul>
 	 		<li><strong>Improved Test Coverage</strong> More complete security tests are needed for the 
	 	 		security APIs.  Also need to investigate tests suites when the security manager is enabled.
 		 		<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=248608">Bug 248608</a></li>
	  	  </ul>
	  	</li>
	  	<li><strong>p2</strong>
 	 	  <ul>
 	 		<li><strong>Improved Test Coverage</strong> Flesh out the p2 test suite to include UI tests, 
 	 		more unit tests as well as better testing of network and communications failure cases.
 	 		<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=248788">Bug 248788</a></li>
	  	  </ul>
	  	</li>
	  </ul></li></ul><ul><li><b>Proposed</b><ul>
	  	<li><strong>All</strong>
	  	  <ul>
	  	    <li><strong>Improved path and URL support</strong> - UNC and URL encoding frequently cause
	  	    problems.  We will identify best practices and coding patterns and make them available for others to use
	  	    as well as use them throughout the Equinox code base.
	  	    <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=248842">Bug 248842</a></li>
	  	  </ul>
	  	</li>
	  	<li><strong>Framework</strong>
	  	  <ul>
	  	    <li><strong>API to contribute and get Execution Environment Profiles</strong> - The Equinox 
	  	    Framework currently has a set of built-in and supported Execution Environment profiles 
	  	    (e.g. J2SE-1.4, J2SE-1.5 etc.).  These profiles are used internally be the Framework to 
	  	    define the packages exported by the running VM.  Tooling also needs access to the 
	  	    Execution Environments to place proper visibility rules on the configured VM for a 
	  	    project.  API is needed to provide a way to contribute and get the available 
	  	    Execution Environment profiles 
	  	    <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=240724">Bug 240724</a></li>
	  	    <li><strong>WebStart support on latest VMs</strong> - The WebStart support in 
	  	    Equinox needs to be enhanced to load resources outside the jnlp class loader.
	  	    The current WebStart support makes invalid assumptions on the resources cached 
	  	    by the jnlp class loader.
	  	    <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=244311">Bug 244311</a></li>
	  	    <li><strong>Pass arguments to a running Eclipse application.</strong> A protocol and 
	  	    framework are needed to allow arguments to be passed from the native launcher to a 
	  	    running instance of eclipse.
	  	    <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=178927">Bug 178927</a></li>
	  	  </ul>
	  	</li>
	  	<li><strong>Compendium</strong>
	  	  <ul>
	  	    <li><strong>Logging</strong> To date the platform has placed tight restrictions on the 
	  	    configuration of existing 3rd party logging frameworks. The goal here is to lift the most 
	  	    important of these restrictions and provide a modular and OSGi friendly integrated approach.
	  	    <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=248794">Bug 248794</a></li>
	  	  </ul>
	  	</li>
	  	<li><strong>Server-side</strong>
	  	  <ul>
	  	    <li><strong>Support undeploying the servlet bridge</strong> - Ensure the servletbridge 
	  	    provides a clean deploy and undeploy environment.  The servletbridge does not undeploy 
	  	    cleanly because of its use of a URLClassloader and a restriction on how the VMs 
	  	    "jar"URLConnection holds open the underlying jar file.  In particular this prevents us 
	  	    from deleting the framework and servletbridge extension bundles when undeploying. 
	  	    A more deployment friendly class loader is needed here and will likely be useful elsewhere 
	  	    when launching equinox. 
	  	    <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=190279">Bug 190279</a></li>
	  	  </ul>
	  	</li>
	    <li><strong>p2</strong>
	  	  <ul>
 	 		<li><strong>Improve the robustness of the download operations</strong>
 	 		Several parts of p2 download files (repo content, artifacts, etc.). Even though
			the robustness is reasonable, there are still room for improvement by providing
			the ability to checksum the files being downloaded, retry strategies, etc.
 			<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=248602">Bug 248602</a></li>
 	 		<li><strong>Improve the robustness of the installation in case of failure.</strong>
 	 		There are cases where a failure during certain phase of the installation will
			cause the system to be left in an inconsistent state (bogus entries in
			bundles.info, config.ini, etc.). 
			We need to make the transitioning from an install to another robust.
			<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=248594">Bug 248594</a></li> 
 	 		<li><strong>Investigate the use of alternate http clients.</strong>
 	 		There exist several alternative HTTP client implentations (e.g., Apache, Jetty, ...). Investigate
 	 		if p2 would benefit from switching to one of these clients in the SDK, the Installer and the
			Admin UI. <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=220240">Bug 220240</a></li>
	  	  </ul>
	  	</li>
	  </ul></li></ul><ul><li><b>Deferred</b><ul><li><div>No items.</div></li></ul></li></ul><h3>Consumability</h3><p>
		The diversity of Equinox poses a significant problem to end-users and developers alike.  
		Equinox is extremely flexible and configurable.  This makes the hard things possible but in some cases the simple things are
		not as simple as they might be.  The Equinox team will make it easier for users to get the relevant pieces of function,
		install it on their systems, and configure it for their use.  Where there is UI, attention will be paid to making it simple and
		natural to use.  We will also make it easier for developers to use our APIs.      
	  </p><ul><li><b>Committed</b><ul>
      	<li><strong>Security</strong>
	  	  <ul>
 	 		<li><strong>Improve Security UI</strong>  Develop useful UIs for functionality delivered in 
	 	 		Ganymede, including a certificate management subsystem. Enhance functionality for developing 
 	 			and testing with signed bundles.
 		 		<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=153851">Bug 153851</a></li>
	  	    <li><strong>API completeness</strong> - Graduate authorization APIs for Trusted Bundle feature, 
	 	 		ensure consistency across PKI based use-cases: p2 (Signed Artifacts), Framework (Trusted Bundles)
 		 		and ECF (SSL). <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=248586">Bug 248586</a></li>
	  	  </ul>
	  	</li>
	  	<li><strong>p2</strong>
	  	  <ul>
 	 		<li><strong>New p2 UI workflows.</strong> Based on <a href="http://wiki.eclipse.org/Equinox_p2_UI_3.5_workflows#Install_New_Software">collaboration</a>
 	 		 with the various user communities, revise the workflow around update and install of new functionality.
 	 		 <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=248789">Bug 248789</a></li>
 	 		<li><strong>Improve p2 error reporting.</strong>
 	 			When an error occurs, for example, when connecting to a server, downloading a file, etc. the
				ensure the error messages are specific and directly helpful
				(e.g. missing file vs unknown host, etc).
				<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=248604">Bug 248604</a></li>
 	 		<li><strong>Improve p2 responsiveness</strong>. 
 	 		When the user is interacting with p2, ensure that the UI is responsive to cancelation and other inputs.
 	 		<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=232440">Bug 232440</a></li>
 	  	  </ul>
	  	</li>
	  	<li><strong>Server-side</strong>
	  	  <ul>
 	 		<li><strong>Improved configurability for the Jetty Http Service</strong> - 
 	 		As the Jetty Http Service used in the platform is applied to broader use-cases we 
 	 		continue to make the necessary changes. In particular we intend to lift the single 
 	 		context per port configuration restriction and allow better access to the underlying 
 	 		error handling mechanisms Jetty provides.
 	 		<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=248790">Bug 248790</a></li>
 	  	  </ul>
	  	</li>
	  </ul></li></ul><ul><li><b>Proposed</b><ul>
	  	<li><strong>p2</strong>
	  	  <ul>
 	 		<li><strong>Create API.</strong> Currently p2 has considerable provisional API.  Review this
 	 		API and identify consistent subsets to be committed as full API.  Focus here should be on specific
 	 		usage scenarios and care should be taken to not unduly limit progress in places where p2 is still evolving.
 	 		 <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=248791">Bug 248791</a></li>
 	  	  </ul>
	  	  <ul>
 	 		<li><strong>Simplify the addition of repository content</strong> p2 is powered by metadata and artifact 
 	 		repositories.  Unlike other systems, p2's repositories are solely API driven (there is no schema, and perhaps
 	 		no XML).  As such, we need reasonable tooling and mechanisms to facilitate the publishing of repository content.
 	 		 <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=248792">Bug 248792</a></li>
 	  	  </ul>
	  	</li>
	  	<li><strong>Server-side</strong>
	  	  <ul>
 	 		<li><strong>Servletbridge and p2</strong> - 
 	 		Investigate integration and use of p2 in servletbridge-based applications. In particular 
 	 		looking at how to build web applications that come with the full-set of p2 metadata, 
 	 		artifact descriptors and related configuration information consistent with a regular 
 	 		RCP product build.
 	 		<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=223256">Bug 223256</a>
 	 		</li>
 	  	  </ul>
	  	</li>
	  </ul></li></ul><ul><li><b>Deferred</b><ul><li><div>No items.</div></li></ul></li></ul><h3>Future</h3><p>
      Eclipse is evolving quickly.  New features in the next OSGi specification R4.2 and e4 will drive numerous changes throughout the Equinox
      project.  Considerable effort will be put into updating Equinox to accomodate and exploit these new scenarios.
      </p><ul><li><b>Committed</b><ul>
      	<li><strong>OSGi standards participation</strong>
	  	  <ul>
 	 		<li>The OSGi Alliance, in collaboration with Equinox and other open source communities, 
 	 		is currently revising the Core specifications. As the reference implementation for 
 	 		several parts of the OSGi specifications, Equinox will be updated to implement these 
 	 		new features and changes to the spec.
 	 		[Framework] <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=247354">Bug 247354</a> 
 	 		[Compendium] <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=247355">Bug 247355</a>
 	 		</li>
 	  	  </ul>
	  	</li>
	  	<li><strong>Server-side</strong>
	  	  <ul>
 	 		<li><strong>Update to the latest Jetty release</strong> -
 	 		Equinox currently hosts both a Jetty 5.1 and Jetty 6.1 based version of the Http 
 	 		Service. For this release we intend to include the latest version of Jetty.
 	 		In addition to being smaller, faster, and most importantly better supported, more recent 
 	 		versions add support for the latest servlet versions and improved support for communication 
 	 		patterns common to AJAX applications.
 	 		<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=248793">Bug 248793</a>
 	 		</li>
 	  	  </ul>
	  	</li>
	  </ul></li></ul><ul><li><b>Proposed</b><ul>
      	<li><strong>Extension Registry</strong>
	  	  <ul>
	  	    <li><strong>Investigate improvements of the extension registry.</strong>
	  	    Areas of research will include creating user-defined objects instead of configuration 
	  	    elements, expanding ability to programmatically modify the extension registry, and 
	  	    adding support for non-singleton bundles.  Due to the size and potential impact of this 
	  	    item, it is considered experimental and might be pushed into later releases.
	  	    [Components] <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=248340">Bug 248340</a>
	  	    </li>
	  	  </ul>
	  	</li>
	  </ul></li></ul><ul><li><b>Deferred</b><ul><li><div>No items.</div></li></ul></li></ul><p><a href="#toc">Table of Contents</a></p><h2><a name="appendix">Appendix 1</a></h2><h2><a name="Appendix1" id="Appendix1">Appendix 1: Execution Environment by Bundle</a></h2><p>In the table below, the "3.5 minimum execution environment"
  column indicates the minimum Java class library requirements of each bundle
  for the 3.4 release, where the value is one of:</p><table border="0" width="90%">
  
    <tr>

      <td align="center"><b>Entry</b></td>
      <td align="left"><b>Meaning</b></td>
    </tr>
    <tr>
      <td><div align="center"><strong>M1.0</strong></div></td>
      <td>OSGi Minimum Execution Environment 1.0 - This is a subset of the J2ME
        Foundation class libraries defined by OSGi to be the base for framework
        implementations. See the OSGi specification for more details.</td>
    </tr>

    <tr>
      <td width="9%"><div align="center"><strong>M1.1</strong></div></td>
      <td width="91%">OSGi Minimum Execution Environment 1.1 - This is a subset
        of the J2ME Foundation class libraries defined by OSGi to be the base
        for framework implementations. See the OSGi specification for more details.</td>
    </tr>
    <tr>
      <td><div align="center"><strong>F1.0</strong></div></td>
      <td>J2ME Foundation 1.0 - indicates that the bundle can only be run on
        Foundation 1.0 or greater. Note that with the exception of some MicroEdition
        IO classes, Foundation 1.0 is a subset of J2SE 1.3.</td>

    </tr>
    <tr>
      <td><div align="center"><strong>F1.1</strong></div></td>
      <td>J2ME Foundation 1.1 - indicates that the bundle can only be run on
        Foundation 1.1 or greater. Note that with the exception of some MicroEdition
        IO classes, Foundation 1.1 is a subset of J2SE 1.4.</td>
    </tr>
    <tr>
      <td><div align="center"><strong>1.2</strong></div></td>

      <td>J2SE 1.2 - indicates that the bundle can only be run on JSE 1.2 or
        greater.</td>
    </tr>
    <tr>
      <td><div align="center"><strong>1.3</strong></div></td>
      <td>J2SE 1.3 - indicates that the bundle can only be run on JSE 1.3 or
        greater.</td>
    </tr>
    <tr>

      <td><div align="center"><strong>1.4</strong></div></td>
      <td>J2SE 1.4 - indicates that the bundle can only be run on JSE 1.4 or
        greater.</td>
    </tr>
    <tr>
      <td><div align="center"><strong>1.4/1.5</strong></div></td>
      <td>Indicates that the bundle can run on JSE 1.4 or greater, but provides
        enhanced functionality when run on J2SE 5.0.</td>
    </tr>

    <tr>
      <td><div align="center"><strong>1.5</strong></div></td>
      <td>J2SE 5.0 - indicates that the bundle can only be run on JSE 5.0 or
        greater.</td>
    </tr>
    <tr>
      <td><div align="center"><strong>1.6</strong></div></td>
      <td>J2SE 6.0 - indicates that the bundle can only be run on JSE 6.0 or
        greater.</td>

    </tr>
    <tr>
      <td align="center"><b>n/a</b></td>
      <td>Unknown at the time of this revision.</td>
    </tr>
  
</table><br/><p><b>Table of minimum execution environments by bundle.</b> (<img src="new.gif" alt="(new)" border="0" height="12" width="12"/> multiple updates)</p><br/><table border="1">
  
    <tr>
      <td width="290"><strong>Bundle</strong></td>
      <td width="60"><div align="center"><p align="center"><b>3.4<br/>minimum<br/>execution<br/>environment</b></p></div></td>
    </tr>
    <tr>
      <td>javax.servlet.jsp</td>
      <td><div align="center">F1.0</div></td>
    </tr>
    <tr>
      <td>javax.servlet</td>
      <td><div align="center">F1.0</div></td>
    </tr>
    <tr>
      <td>org.apache.commons.el</td>
      <td><div align="center">F1.0</div></td>
    </tr>
    <tr>
      <td>org.apache.commons.logging</td>
      <td><div align="center">F1.0</div></td>
    </tr>
    <tr>
      <td>org.apache.jasper</td>
      <td><div align="center">F1.0</div></td>
    </tr>
    <tr>
      <td>org.eclipse.ecf.filetransfer</td>
      <td><div align="center">F1.0</div></td>
    </tr>
    <tr>
      <td>org.eclipse.ecf.identity</td>
      <td><div align="center">F1.0</div></td>
    </tr>
    <tr>
      <td>org.eclipse.ecf.provider.filetransfer.ssl</td>
      <td><div align="center">1.4</div></td>
    </tr>
    <tr>
      <td>org.eclipse.ecf.provider.filetransfer</td>
      <td><div align="center">F1.0</div></td>
    </tr>
    <tr>
      <td>org.eclipse.ecf.ssl</td>
      <td><div align="center">1.4</div></td>
    </tr>
    <tr>
      <td>org.eclipse.ecf</td>
      <td><div align="center">F1.0</div></td>
    </tr>
    <tr>
      <td>org.eclipse.equinox.app</td>
      <td><div align="center">M1.1</div></td>
    </tr>
    <tr>
      <td>org.eclipse.equinox.common</td>
      <td><div align="center">F1.0</div></td>
    </tr>
    <tr>
      <td>org.eclipse.equinox.frameworkadmin.equinox</td>
      <td><div align="center">F1.0</div></td>
    </tr>
    <tr>
      <td>org.eclipse.equinox.frameworkadmin</td>
      <td><div align="center">F1.1</div></td>
    </tr>
    <tr>
      <td>org.eclipse.equinox.http.jetty</td>
      <td><div align="center">F1.0</div></td>
    </tr>
    <tr>
      <td>org.eclipse.equinox.http.registry</td>
      <td><div align="center">F1.0</div></td>
    </tr>
    <tr>
      <td>org.eclipse.equinox.http.servlet</td>
      <td><div align="center">F1.0</div></td>
    </tr>
    <tr>
      <td>org.eclipse.equinox.jsp.jasper.registry</td>
      <td><div align="center">F1.0</div></td>
    </tr>
    <tr>
      <td>org.eclipse.equinox.jsp.jasper</td>
      <td><div align="center">F1.0</div></td>
    </tr>
    <tr>
      <td>org.eclipse.equinox.launcher</td>
      <td><div align="center">F1.0</div></td>
    </tr>
    <tr>
      <td>org.eclipse.equinox.p2.artifact.repository</td>
      <td><div align="center">F1.1</div></td>
    </tr>
    <tr>
      <td>org.eclipse.equinox.p2.console</td>
      <td><div align="center">F1.1</div></td>
    </tr>
    <tr>
      <td>org.eclipse.equinox.p2.core</td>
      <td><div align="center">F1.1</div></td>
    </tr>
    <tr>
      <td>org.eclipse.equinox.p2.director.app</td>
      <td><div align="center">F1.0</div></td>
    </tr>
    <tr>
      <td>org.eclipse.equinox.p2.directorywatcher</td>
      <td><div align="center">F1.0</div></td>
    </tr>
    <tr>
      <td>org.eclipse.equinox.p2.director</td>
      <td><div align="center">F1.1</div></td>
    </tr>
    <tr>
      <td>org.eclipse.equinox.p2.engine</td>
      <td><div align="center">F1.1</div></td>
    </tr>
    <tr>
      <td>org.eclipse.equinox.p2.exemplarysetup</td>
      <td><div align="center">F1.1</div></td>
    </tr>
    <tr>
      <td>org.eclipse.equinox.p2.extensionlocation</td>
      <td><div align="center">F1.1</div></td>
    </tr>
    <tr>
      <td>org.eclipse.equinox.p2.garbagecollector</td>
      <td><div align="center">F1.1</div></td>
    </tr>
    <tr>
      <td>org.eclipse.equinox.p2.jarprocessor</td>
      <td><div align="center">F1.1</div></td>
    </tr>
    <tr>
      <td>org.eclipse.equinox.p2.metadata.generator</td>
      <td><div align="center">1.4</div></td>
    </tr>
    <tr>
      <td>org.eclipse.equinox.p2.metadata.repository</td>
      <td><div align="center">F1.1</div></td>
    </tr>
    <tr>
      <td>org.eclipse.equinox.p2.metadata</td>
      <td><div align="center">F1.1</div></td>
    </tr>
    <tr>
      <td>org.eclipse.equinox.p2.reconciler.dropins</td>
      <td><div align="center">F1.1</div></td>
    </tr>
    <tr>
      <td>org.eclipse.equinox.p2.touchpoint.eclipse</td>
      <td><div align="center">F1.1</div></td>
    </tr>
    <tr>
      <td>org.eclipse.equinox.p2.touchpoint.natives</td>
      <td><div align="center">F1.1</div></td>
    </tr>
    <tr>
      <td>org.eclipse.equinox.p2.ui.sdk</td>
      <td><div align="center">F1.1</div></td>
    </tr>
    <tr>
      <td>org.eclipse.equinox.p2.ui</td>
      <td><div align="center">F1.1</div></td>
    </tr>
    <tr>
      <td>org.eclipse.equinox.p2.updatechecker</td>
      <td><div align="center">F1.0</div></td>
    </tr>
    <tr>
      <td>org.eclipse.equinox.p2.updatesite</td>
      <td><div align="center">F1.1</div></td>
    </tr>
    <tr>
      <td>org.eclipse.equinox.preferences</td>
      <td><div align="center">F1.0</div></td>
    </tr>
    <tr>
      <td>org.eclipse.equinox.registry</td>
      <td><div align="center">F1.0</div></td>
    </tr>
    <tr>
      <td>org.eclipse.equinox.security.ui</td>
      <td><div align="center">1.4</div></td>
    </tr>
    <tr>
      <td>org.eclipse.equinox.security</td>
      <td><div align="center">1.4</div></td>
    </tr>
    <tr>
      <td>org.eclipse.equinox.simpleconfigurator.manipulator</td>
      <td><div align="center">F1.0</div></td>
    </tr>
    <tr>
      <td>org.eclipse.equinox.simpleconfigurator</td>
      <td><div align="center">F1.1</div></td>
    </tr>
    <tr>
      <td>org.eclipse.osgi.services</td>
      <td><div align="center">M1.0</div></td>
    </tr>
    <tr>
      <td>org.eclipse.osgi.util</td>
      <td><div align="center">M1.0</div></td>
    </tr>
    <tr>
      <td>org.eclipse.osgi</td>
      <td><div align="center">M1.1</div></td>
    </tr>
    <tr>
      <td>org.mortbay.jetty</td>
      <td><div align="center">F1.0</div></td>
    </tr>
    <tr>
      <td>org.sat4j.core</td>
      <td><div align="center">1.4</div></td>
    </tr>
    <tr>
      <td>org.sat4j.pb</td>
      <td><div align="center">1.4</div></td>
    </tr>
  
</table><p><a href="#toc">Table of Contents</a></p></div>
  </div>
</div>
<div style="visibility: hidden; float: right; text-align: right"><a href="?projectid=rt.equinox&raw=1">view raw xml of project plan</a><br>
<a href="http://www.eclipse.org/projects/dev_process/project-status-infrastructure.php">from project meta-data key "projectplanurl"</a></div>

</div> <!-- midcolumn -->
</div> <!-- maincontent -->
		<script type="text/javascript">
		var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
		document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
		</script>
		<script type="text/javascript">
		var pageTracker = _gat._getTracker("UA-910670-2");
		pageTracker._initData();
		pageTracker._trackPageview();
		</script></div><div id="footer">
<ul id="footernav">
<li class="first"><a href="http://www.eclipse.org/">Home</a></li>
<li><a href="http://www.eclipse.org/legal/privacy.php">Privacy Policy</a></li>
<li><a href="http://www.eclipse.org/legal/termsofuse.php">Terms of Use</a><a href="http://www.eclipse.org/org/press-release/20081112_termsofuse.php"><img src="http://www.eclipse.org/images/updated.png" align="absmiddle" /></a></li>
</ul>
<p>Copyright &copy; 2008 The Eclipse Foundation. All Rights Reserved</p>
</div></body></html>