<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!--  Use this to test local rendering in firefox -->
<?xml-stylesheet type="text/xsl" href="project-plan-render.xsl"?>

<!-- <?xml-stylesheet type="text/xsl" href="http://www.eclipse.org/projects/project-plan.xsl"?> -->

<p:plan
  plan-format="1.0"
  xmlns:p="http://www.eclipse.org/project/plan" xmlns="http://www.w3.org/1999/xhtml"
  name="Eclipse Project">

<p:release projectid="eclipse" version="Galileo"/>

<!-- ============================================== -->

<p:introduction>
<div>

<p>
Last revised 16:00 ET May 13, 2009 (<img src="http://www.eclipse.org/eclipse/development/new.gif" alt="(new)" border="0" height="12" width="12" /> marks
interesting changes since the previous draft of April 3, 2009)
</p>
<p><i>Please send comments about this plan to the</i> <a href="mailto:eclipse-dev@eclipse.org">eclipse-dev@eclipse.org</a> <i>developer
  mailing list.</i>
</p>
<p>This document lays out the feature and API set for the next feature release
  of the Eclipse SDK after 3.4, designated release 3.5.
</p>

<p>Plans do not materialize out of nowhere, nor are they entirely static. To
  ensure the planning process is transparent and open to the entire Eclipse community,
  we (the Eclipse Project PMC) post plans in an embryonic form and revise them
  throughout the release cycle. </p>
<p>The first part of the plan deals with the important matters of release deliverables,
  release milestones, target operating environments, and release-to-release compatibility.
  These are all things that need to be clear for any release, even if no features
  were to change. </p>
<p>The remainder of the plan consists of plan items for all of the sub-projects
  under the top level Eclipse Project. Each plan item covers a feature or API
  that is to be added to the Eclipse Project deliverables, or some aspect of
  the Eclipse 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. Some plan items may involve work that is localized to
  a single component; others may involve coordinated changes to several components;
  other may pervade the entire SDK. Although some plan items are for work that
  is more pressing than others, the plan items appear in no particular order. </p>
<p>With the previous release as the starting point, this is the plan for how
  we will enhance and improve it. Fixing bugs, improving test coverage, documentation,
  examples, performance tuning, usability, etc. are considered routine ongoing
  maintenance activities and are not included in this plan unless they would
  also involve a significant change to the API or feature set, or involve a significant
  amount of work. The intent of the plan is to account for all interesting feature
  work. </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.</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.</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.</li>
</ul>

</div>
</p:introduction>

<!-- ============================================== -->

<p:release_deliverables>
<div>

<p>The release deliverables have the same form as previous releases, namely: </p>
<ul>
  <li>Source code release for all Eclipse Project deliverables, available as
    versions tagged &quot;R3_5&quot; in the Eclipse Project <a href="http://dev.eclipse.org/viewcvs/">CVS
    repository</a>.</li>
  <li>Eclipse SDK (runtime binary and SDK for Equinox[*], Platform, JDT, and PDE) (downloadable).</li>
  <li>Eclipse Platform (runtime binary and SDK for the Equinox[*] and Platform only) (downloadable).</li>
  <li>Eclipse RCP (runtime binary and SDK for the Rich Client Platform) (downloadable).</li>
  <li>Eclipse JDT (runtime binary and SDK for the Java Development Tools) (downloadable).</li>
  <li>Eclipse PDE (runtime binary and SDK for the Plug-in Development Environment) (downloadable).</li>
  <li>Eclipse SDK Examples (downloadable).</li>
  <li>SWT distribution (downloadable).</li>
</ul>
<p>* The <a href="http://www.eclipse.org/equinox/">Equinox Project</a> is part of the top level
  <a href="http://www.eclipse.org/rt/">RT Project</a>. A significant portion of the Equinox
  deliverables are consumed and redistributed as part of the Eclipse Project's SDK, Platform,
  and RCP deliverables.</p>

</div>
</p:release_deliverables>

<!-- ============================================== -->

<p:release_milestones>

<p:preamble><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>
</p:preamble>

<p:milestone date="08/08/2008" milestone="M1"><div>3.5M1</div></p:milestone>
<p:milestone date="09/19/2008" milestone="M2"><div>3.5M2</div></p:milestone>
<p:milestone date="10/31/2008" milestone="M3"><div>3.5M3</div></p:milestone>
<p:milestone date="12/12/2008" milestone="M4"><div>3.5M4</div></p:milestone>
<p:milestone date="01/30/2009" milestone="M5"><div>3.5M5</div></p:milestone>
<p:milestone date="03/13/2009" milestone="M6"><div>3.5M6 (API Freeze)</div></p:milestone>
<p:milestone date="05/01/2009" milestone="M7"><div>3.5M7 (Feature Freeze)</div></p:milestone>

<p:postamble>
<div>
<p>Individual, milestone level plans for the components that make up the Eclipse Project can be found 
  on the <a href="http://wiki.eclipse.org/Eclipse/Galileo_Plan">Eclipse Project Galileo Plan page</a>
  on the Eclipse wiki.</p>
<p>Our target is to complete 3.5 in late June 2009, in alignment with Galileo.
  All release deliverables will be available for download as soon as the release has been
  tested and validated in the target operating configurations listed below.</p>
<p>Dates for builds after M7 can be found in the 
	<a href="http://www.eclipse.org/eclipse/development/freeze_plan_3.5.php">Eclipse Galileo end-game plan</a></p>
</div>
</p:postamble>

</p:release_milestones>

<!-- ============================================== -->

<p:target_environments>

<div>
<p>In order to remain current, each Eclipse Project release targets reasonably current
  operating environments.</p>
<p>Most of the Eclipse SDK is &quot;pure&quot; Java code and has no direct dependence
  on the underlying operating system. The chief dependence is therefore on the
  Java Platform itself. Portions 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 the Eclipse Project is developed on a mix
  of Java 1.4, Java 5 and Java 6 VMs. As such, the Eclipse SDK as a whole
  is targeted at all modern, desktop Java VMs. Full functionality is available for
  1.4 level development everywhere, and extended development capabilities are made
  available on the VMs that support them.</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 our testing on a handful of
  popular combinations of operating system and Java Platform; these are our <em>reference
  platforms</em>. Eclipse undoubtedly runs fine in many operating environments
  beyond the reference platforms we test. However, since we do not systematically test
  them we cannot vouch for them. Problems encountered when running Eclipse on a
  non-reference platform that cannot be recreated on any reference platform will
  be given lower priority than problems with running Eclipse on a reference platform.</p>
<p>Eclipse 3.5 is tested and validated on the following reference platforms
  (this list is updated over the course of the release cycle):</p>
  
<center>
  <table border="1" cellpadding="2" cellspacing="2" width="80%" summary="Reference Platforms">
    <tbody>
      <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 Standard Edition 5 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 Standard Edition 6 Update 3 for Microsoft Windows</li>
            <li>Sun Java Standard Edition 5 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 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 Standard Edition 6 Update 3 for Linux x86</li>
            <li>Sun Java Standard Edition 5 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 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 Standard Edition 5 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><img src="http://www.eclipse.org/eclipse/development/new.gif" alt="(new)" border="0" height="12" width="12" /> SUSE Linux Enterprise Server 10, x86-64, GTK</b> running (any of):
          <ul>
            <li>Sun Java Standard Edition 5 Update 14 for Linux x86-64</li>
            <li>IBM 64-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 Standard Edition 5 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 Standard Edition 5 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 Standard Edition 5 Update 14 for Linux x86-64</li>
            <li><img src="http://www.eclipse.org/eclipse/development/new.gif" alt="(new)" border="0" height="12" width="12" /> IBM 64-bit SDK for Linux on Intel architecture, Java 2 Technology Edition 5.0, SR6b</li>
          </ul></td>
      </tr>
      <tr>
        <td><b>Sun Solaris 10, SPARC, GTK</b> running:
          <ul>
            <li>Sun Java Standard Edition 5 Update 14 for Solaris SPARC</li>
          </ul></td>
      </tr>
      <tr>
        <td><img src="http://www.eclipse.org/eclipse/development/new.gif" alt="(new)" border="0" height="12" width="12" /> <b>Sun Solaris 10, x86, GTK</b> running:
          <ul>
            <li>Sun Java Standard Edition 5 Update 14 for Solaris</li>
          </ul></td>
      </tr>
      <tr>
        <td><b>HP-UX 11i v2, ia64, Motif 2.1, GTK</b> running:
          <ul>
            <li>HP-UX Java Standard Edition 5 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 for Mac OS X 10.5, Update 1</li>
          </ul></td>
      </tr>
      <tr>
        <td><b>Apple Mac OS X 10.5, Universal 32-bit, Cocoa</b> running:
          <ul>
            <li>Apple Java for Mac OS X 10.5, Update 1</li>
          </ul></td>
      </tr>
      <tr>
        <td><img src="http://www.eclipse.org/eclipse/development/new.gif" alt="(new)" border="0" height="12" width="12" /> <b>Apple Mac OS X 10.5, Universal 64-bit, Cocoa</b> running:
          <ul>
            <li>Apple Java for Mac OS X 10.5, Update 1</li>
          </ul></td>
      </tr>
    </tbody>
  </table>

</center>
<p>As stated above, <i>we expect that Eclipse works fine on other current
  Java VM and OS versions but we cannot flag these as reference platforms without
  significant community support for testing them.</i></p>
</div>

<p:internationalization>
<p>The Eclipse SDK is designed as the basis for internationalized products. The
  user interface elements provided by the Eclipse SDK 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 the Eclipse SDK on all reference platforms;
  BIDI locales are supported by the Eclipse SDK everywhere but on Motif.</p>
<p>The Eclipse SDK 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:internationalization>

</p:target_environments>
 
<!-- ============================================== -->

<p:compatibility_with_previous_releases>
<div>

<h3>Compatibility of Release 3.5 with 3.4</h3>
<p>Eclipse 3.5 will be compatible with Eclipse 3.4 (and all earlier 3.x versions).</p>

<p><strong>API Contract Compatibility:</strong> Eclipse SDK 3.5 will be upwards
  contract-compatible with Eclipse SDK 3.4 except in those areas noted in the
  <a href="http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/org.eclipse.platform.doc.isv/porting/eclipse_3_5_porting_guide.html" target="_top">
    <em>Eclipse 3.5 Plug-in Migration Guide</em>
  </a>. Programs that use affected APIs and extension points will need to be ported
  to Eclipse SDK 3.5 APIs. Downward contract compatibility
  is not supported. There is no guarantee that compliance with Eclipse SDK 3.5
  APIs would ensure compliance with Eclipse SDK 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 (plug-in) Compatibility:</strong> Eclipse SDK 3.5 will be upwards
  binary-compatible with Eclipse SDK 3.4 except in those areas noted in the
  <a href="http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/org.eclipse.platform.doc.isv/porting/eclipse_3_5_porting_guide.html" target="_top">
    <em>Eclipse 3.5 Plug-in Migration Guide</em>
  </a>. Downward plug-in compatibility is not supported. Plug-ins for Eclipse SDK
  3.5 will not be usable in Eclipse SDK 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> Eclipse SDK 3.5 will be upwards source-compatible
  with Eclipse SDK 3.4 except in the areas noted in the
  <a href="http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/org.eclipse.platform.doc.isv/porting/eclipse_3_5_porting_guide.html" target="_top">
    <em>Eclipse 3.5 Plug-in Migration Guide</em>
  </a>. This means that source files written
  to use Eclipse SDK 3.4 APIs might successfully compile and run against Eclipse
  SDK 3.5 APIs, although this is not guaranteed. Downward source compatibility
  is not supported. If source files use new Eclipse SDK APIs, they will not be
  usable with an earlier version of the Eclipse SDK. </p>
  
<p><strong>Workspace Compatibility:</strong> Eclipse SDK 3.5 will be upwards
  workspace-compatible with earlier 3.x versions of the Eclipse SDK unless noted.
  This means that workspaces and projects created with Eclipse SDK 3.4 .. 3.0 can be successfully
  opened by Eclipse SDK 3.5 and upgraded to a 3.5 workspace. This includes both
  hidden metadata, which is localized to a particular workspace, as well as metadata
  files found within a workspace project (e.g., the .project file), which may
  propagate between workspaces via file copying or team repositories. Individual
  plug-ins developed for Eclipse SDK 3.5 should provide similar upwards compatibility
  for their hidden and visible workspace metadata created by earlier versions;
  3.5 plug-in developers are responsible for ensuring that their plug-ins recognize
  metadata from earlier versions and process it appropriately. User
  interface session state may be discarded when a workspace is upgraded. Downward
  workspace compatibility is not supported. A workspace created (or opened) by
  a product based on Eclipse 3.5 will be unusable with a product based on an earlier
  version of Eclipse. Visible metadata files created (or overwritten) by Eclipse
  3.5 will generally be unusable with earlier versions of Eclipse. </p>
  
<p><strong>Non-compliant usage of API's</strong>: All non-API methods and classes,
  and certainly everything in a package with &quot;internal&quot; in its name,
  are considered implementation details which may vary between operating environment
  and are subject to change without notice. Client plug-ins that directly depend
  on anything other than what is specified in the Eclipse SDK 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 plug-ins. </p>

</div>
</p:compatibility_with_previous_releases>
  
<!-- ============================================== -->

<p:themes_and_priorities>

<p:preamble>
<div>
<p>The 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 Eclipse Project deliverables, or some aspect of the Eclipse 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.</p>
<p> Although there are four projects under the top-level Eclipse Project, there
  is a significant amount of commonality and shared effort between them. In general,
  many plan items involve coordinated changes to multiple components, and thus
  attempting to separate the items into sections based on sub-project leads to
  artificial distinctions between them (e.g., Platform Text vs. JDT Text, Platform
  Debug vs. JDT Debug, etc.). As such, this plan covers the work of all projects
  under the top level Eclipse Project.</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>
</p:preamble>

<!-- ============================================== -->

<p:theme name="Platforms">
<p:description>
<p>This work is focused on ensuring that Eclipse takes full advantage of all
  capabilities of the underlying technologies that it is based on, be they
  operating system, window system, Java or other. This includes support
  for native accessibility, internationalization and localization capabilities.
</p>
</p:description>

<p:committed>
<ul>
<li>
  <strong>Support Cocoa on Mac OS X.</strong>
  Apple GUI development is moving from Carbon to Cocoa. We will support the Eclipse
  SDK running on Mac OS Cocoa (including 64-bit Java 6), to ensure that Eclipse
  continues to be a first-class application delivery and development platform on the
  Mac. <em>(Note that completing this work will require investment from the Equinox
  Project, in addition to the work here.)</em> [SWT, Platform UI]
(<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=252644">252644</a>)</li>
<li>
  <strong>BIDI improvements.</strong>
  We will continue to invest in improving in our BIDI support, to ensure that
  Eclipse is a first-class environment in BIDI locales. This work will include
  both improvemed access to native BIDI support and the better handling of
  dynamic, complex expressions within Eclipse. [SWT, Platform UI]
(<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=252645">252645</a>)</li>
</ul>
</p:committed>

<p:proposed>
  <p><i>None at this time.</i></p>
</p:proposed>

<p:deferred>
<ul>
<li>
  (<img src="http://www.eclipse.org/eclipse/development/new.gif" alt="(new)" border="0" height="12" width="12" /> deferred)
  <strong>Accessibility standards compliance.</strong>
  We will work with the community to ensure that we have first-class, accessibility
  support that is compliant with important standards. [SWT]
(<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=252646">252646</a>)
</li>
</ul>
</p:deferred>

</p:theme>
    
<!-- ============================================== -->

<p:theme name="Scalability and Performance">
<p:description>
<p>Eclipse is being used consumed in an ever wider range of products, applications,
  and development scenarios. We will identify and address performance and scalability
  issues to provide a better experience both for users working in these areas in
  particular, and for Eclipse users in general.
</p>
</p:description>

<p:committed>
<ul>
<li>
  <strong>Performance testing infrastructure improvements.</strong>
  We will improve our performance test infrastructure and result pages and ensure
  that the test results are monitored on a daily basis. This will enable us to 
  more accurately and more readily identify any performance issues that might be
  introduced during developement. [Rel. Eng.]
(<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=252649">252649</a>)</li>
<li>(<img src="http://www.eclipse.org/eclipse/development/new.gif" alt="(new)" border="0" height="12" width="12" /> committed)
  <strong>Performance focus.</strong> 
  Although performance did not significantly degrade during the 3.4 release cycle,
  we were unable to make the level of investment in performance improvements that
  we had hoped for. In 3.5, we will dedicate significant effort to identifying and
  ameliorating performance problems, both in typical Eclipse workflows and in more
  extreme scenarios.
(<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=252652">252652</a>)</li>
</ul>
</p:committed>

<p:proposed>
  <p><i>None at this time.</i></p>
</p:proposed>

<p:deferred>
  <p><i>None at this time.</i></p>
</p:deferred>

</p:theme>
    
<!-- ============================================== -->

<p:theme name="Robustness">
<p:description>
<p>As the basis for the entire Eclipse eco-system, the Eclipse SDK must be robust,
  flexible and secure. This work will address those issues by providing API for
  missing or currently internal functionality, and focusing on the issues that
  effect the stability of the platform.
</p>
</p:description>

<p:committed>
<ul>
<li>
  <strong>API Tools test suite and infrastructure</strong>
  We will build a comprehensive regression test suite for our API tools, as well
  as a performance test suite, and enhance analysis to avoid false positives, allow
  special privileges between x-friend bundles, and detect when new API is used in
  a prerequisite bundle that requires a version range adjustment. We will also 
  investigate architectural changes to support binary or source analysis and 
  performance improvements. [PDE]
(<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=252658">252658</a>) </li>

<li>
  <strong>Compare editor improvements.</strong>
  We will address some of the limitations of the current compare editor framework.
  Possible work areas include: pluggable compare viewers/tools, automatic updating
  of differences, better presentation for changes, support for auto-merge, ability
  to hide outgoing annotations, better handling of hunks, and more
  features from standard editors within compare editors.[All]
(<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=252662">252662</a>) </li>

<li>
  <strong>Build process improvements.</strong>
  The Eclipse build process is currently complex and brittle, impacting our
  ability to deliver stable builds on a reliable schedule. We will make
  improvements to the build process to make it more robust and reproducible.[Rel. Eng., PDE]
(<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=252664">252664</a>) </li>

<li>(<img src="http://www.eclipse.org/eclipse/development/new.gif" alt="(new)" border="0" height="12" width="12" /> committed)
  <strong>API Tools enhancements</strong>
  We will enhance the capabilities of our API tools. Potential work areas include
  validating system library references based on a bundle’s required execution
  environment; analyzing extension points for compatibility and considering extension 
  point modifications in bundle version validation; implementing API comparison
  utilities that can be used to create reports in an automated build or presented 
  as a structural compare in the workbench; and providing tooling for package version
  definition and validation. [PDE]
(<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=252660">252660</a>) </li>
</ul>
</p:committed>

<p:proposed>
  <p><i>None at this time.</i></p>
</p:proposed>

<p:deferred>
<ul>
<li>(<img src="http://www.eclipse.org/eclipse/development/new.gif" alt="(new)" border="0" height="12" width="12" /> deferred)
  <strong>Provide API for missing/internal features.</strong>
  We will identify areas where applications built on Eclipse currently must
  invoke internal functionality in order to provide good integration with the SDK.
  We will address these cases by creating proper, API-quality equivalents or
  otherwise removing the dependencies on internals. [All]
(<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=252655">252655</a>) </li>
</ul>
</p:deferred>

</p:theme>
    
<!-- ============================================== -->

<p:theme name="Consumability">
<p:description>
<p>This work will make it easier for users to get Eclipse, install it on their systems,
  and configure it for their use. It also covers work related to error handling and reporting
  mechanisms, and a number of enhancements to the Debug and PDE tools.</p>
</p:description>

<p:committed>
<ul>
<li>
  <strong>User-assistance improvements.</strong>
  We will provide a number of often asked for improvements to our help support,
  such as filtering of the navigation tree based on Criteria, grouping of search
  results based on Criteria, quick search from the navigation tree
  (similar to quick print), better accessibility, and more control over the
  presentation. [UA]
(<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=252661">252661</a>) </li>

<li>
  <strong>Extensible execution environments.</strong>
  Currently, the set of system library profile definitions supported by Equinox
  is static (for example, J2SE-1.4, J2SE-1.5, etc.). We will respond to new
  support being added by Equinox for an extensible set of system library profiles.
  Default compiler options will be associated with each profile for creating new
  Java and Plug-in projects. <em>(Note that completing this work will require
  investment from the Equinox Project, in addition to the work here.)</em> [JDT, PDE]
(<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=252665">252665</a>) </li>

<li>
  <strong>PDE Build and Export enhancements.</strong>
  We will support export and install of workspace bundles into the running host;
  enhance product definition with start levels and license information and support
  creation from OSGi launch configurations; honor the dropins folder when building
  and resolving plug-in and feature dependencies; support parallel compilation of
  bundles, incremental building, features with cyclic dependencies, exporting existing
  class files from the workspace, and exporting individual source bundles. We will 
  leverage p2 function for fetch, publish and packaging build phases. [PDE]
(<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=252666">252666</a>) </li>

<li>
  <strong>Declarative Services Tooling.</strong>
  We will provide tooling for authoring service component definitions. [PDE]
(<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=252668">252668</a>) </li>

<li>(<img src="http://www.eclipse.org/eclipse/development/new.gif" alt="(new)" border="0" height="12" width="12" /> committed)
  <strong>Debug User Interface Enhancements.</strong>
  Investigate enhancements to streamline workflow and reduce clutter in the memory
  view. Experiment with support for debugging without the debug view such as a 
  lightweight mechanism for switching and displaying the active debug context and
  a top-level toolbar for debug actions (step, etc.). Investigate enhancements for
  multi-context debugging such as creating multiple sets of debug views (variables,
  registers, etc.), each dedicated to a single context. [Debug, UI]
(<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=252669">252669</a>) </li>

<li>(<img src="http://www.eclipse.org/eclipse/development/new.gif" alt="(new)" border="0" height="12" width="12" /> committed)
  <strong>PDE Performance and Target Management.</strong>
  Investigate performance improvements in plug-in XML and bundle manifest validation,
  state maintenance, and plug-in launch configuration tabs. Enhance target platform
  management and launching by leveraging p2’s provisioning infrastructure. Investigate
  support for multiple target platforms in a workspace, switching between them, and
  sharing target platforms with a team. [PDE]
(<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=252670">252670</a>) </li>

</ul>
</p:committed>

<p:proposed>
  <p><i>None at this time.</i></p>
</p:proposed>

<p:deferred>
<ul>
<li>(<img src="http://www.eclipse.org/eclipse/development/new.gif" alt="(new)" border="0" height="12" width="12" /> deferred)
  <strong>Team sharable working sets.</strong>
  The usefulness of working sets is limited by the fact they are not team
  sharable.  We will provide support for sharing working set information
  between team members.[Platform UI]
(<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=252663">252663</a>) </li>
</ul>
</p:deferred>

</p:theme>
    
<!-- ============================================== -->

<p:theme name="Future">
<p:description>
<p>Eclipse is well-established as the cross-platform IDE of choice, but it has become
  much more than that. The extensive and diverse range of applications that are being
  built on the Eclipse code base, and the constantly changing capabilities of the
  underlying systems on which it runs, are driving us to push the limits of our
  technology in almost every dimension. This work area continues our, multi-year
  focus on innovation, to ensure that the Eclipse SDK continues to be a vibrant,
  powerful, dynamic basis for our community's use.</p>
<p>Although some of the items under this theme will be delivered as part of the 
  Eclipse SDK R3.5, many represent ongoing work in the Eclipse 4.0 ("e4")
  incubator, which is implementing the next major version of the Eclipse SDK. 
  See the <a href="http://wiki.eclipse.org/E4">e4 wiki</a> for more info.</p>
  <p>Plan items from the future theme have been moved to the 
  <a href="http://www.eclipse.org/projects/project-plan.php?projectid=eclipse.e4">e4 project 0.9 release plan</a>.</p>
</p:description>

</p:theme>
    
</p:themes_and_priorities>

<!-- ============================================== -->

<p:appendix name="Execution Environment by Bundle">
  
<p>In the table below, the &quot;3.5 minimum execution environment&quot;
  column indicates the minimum Java class library requirements of each bundle
  for the 3.5 release, where the value is one of:</p>
<table border="0" width="90%">
  <tbody>
    <tr>

      <td align="center"><b>Entry</b></td>
      <td align="left"><b>Meaning</b></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.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.5</strong></div></td>
      <td>Java SE 5 - indicates that the bundle can only be run on Java SE 5 or
        greater.</td>

    </tr>
    <tr>
      <td><div align="center"><strong>1.6</strong></div></td>
      <td>Java SE 6 - indicates that the bundle can only be run on Java SE 6 or
        greater.</td>
    </tr>
    <tr>
      <td align="center"><b>n/a</b></td>
      <td>Unknown at the time of this revision.</td>
    </tr>
  </tbody>
</table>

<p><b>Table of minimum execution environments by bundle.</b> (See also the
  <a href="http://www.eclipse.org/projects/project-plan.php?projectid=rt.equinox#appendix">Equinox Project plan</a>
  for the execution environment requirements of bundles contributed via that project.)</p>

<table border="1">
  <tbody>
    <tr>
      <td width="290"><strong>Bundle</strong></td>
      <td width="60"><div align="center"><p align="center"><b>3.5<br/>minimum<br/>execution<br/>environment</b></p></div></td>
    </tr>
    <tr>
      <td>com.ibm.icu</td>
      <td><div align="center">F1.0</div></td>
    </tr>
    <tr>
      <td>com.jcraft.jsch</td>
      <td><div align="center">1.4</div></td>
    </tr>
    <tr>
      <td>org.apache.ant</td>
      <td><div align="center">J2SE-1.2</div></td>
    </tr>
    <tr>
      <td>org.apache.lucene</td>
      <td><div align="center">not specified</div></td>
    </tr>
    <tr>
      <td>org.apache.lucene.analysis</td>
      <td><div align="center">not specified</div></td>
    </tr>
    <tr>
      <td>org.eclipse.ant.core</td>
      <td><div align="center">1.4</div></td>
    </tr>
    <tr>
      <td>org.eclipse.ant.ui</td>
      <td><div align="center">1.4</div></td>
    </tr>
    <tr>
      <td>org.eclipse.compare</td>
      <td><div align="center">1.4</div></td>
    </tr>
    <tr>
      <td>org.eclipse.compare.core</td>
      <td><div align="center">1.4</div></td>
    </tr>
    <tr>
      <td>org.eclipse.compare.win32</td>
      <td><div align="center">1.4</div></td>
    </tr>
    <tr>
      <td>org.eclipse.core.boot</td>
      <td><div align="center">F1.0</div></td>
    </tr>
    <tr>
      <td>org.eclipse.core.commands</td>
      <td><div align="center">F1.0</div></td>
    </tr>
    <tr>
      <td>org.eclipse.core.contenttype</td>
      <td><div align="center">F1.0</div></td>
    </tr>
    <tr>
      <td>org.eclipse.core.databinding</td>
      <td><div align="center">F1.1</div></td>
    </tr>
    <tr>
      <td>org.eclipse.core.databinding.beans</td>
      <td><div align="center">1.4</div></td>
    </tr>
    <tr>
      <td><img src="http://www.eclipse.org/eclipse/development/new.gif" alt="(new)" border="0" height="12" width="12" />org.eclipse.core.databinding.observable</td>
      <td><div align="center">F1.1</div></td>
    </tr>
    <tr>
      <td><img src="http://www.eclipse.org/eclipse/development/new.gif" alt="(new)" border="0" height="12" width="12" />org.eclipse.core.databinding.property</td>
      <td><div align="center">F1.1</div></td>
    </tr>
    <tr>
      <td>org.eclipse.core.expressions</td>
      <td><div align="center">F1.0</div></td>
    </tr>
    <tr>
      <td>org.eclipse.core.filebuffers</td>
      <td><div align="center">1.4</div></td>
    </tr>
    <tr>
      <td>org.eclipse.core.filesystem</td>
      <td><div align="center">1.4</div></td>
    </tr>
    <tr>
      <td>org.eclipse.core.jobs</td>
      <td><div align="center">F1.0</div></td>
    </tr>
    <tr>
      <td>org.eclipse.core.net</td>
      <td><div align="center">F1.1</div></td>
    </tr>
    <tr>
      <td>org.eclipse.core.resources</td>
      <td><div align="center">1.4</div></td>
    </tr>
    <tr>
      <td>org.eclipse.core.resources.compatibility</td>
      <td><div align="center">1.4</div></td>
    </tr>
    <tr>
      <td>org.eclipse.core.runtime</td>
      <td><div align="center">F1.0</div></td>
    </tr>
    <tr>
      <td>org.eclipse.core.runtime.compatibility</td>
      <td><div align="center">F1.0</div></td>
    </tr>
    <tr>
      <td>org.eclipse.core.runtime.compatibility.auth</td>
      <td><div align="center">F1.0</div></td>
    </tr>
    <tr>
      <td>org.eclipse.core.runtime.compatibility.registry</td>
      <td><div align="center">F1.0</div></td>
    </tr>
    <tr>
      <td>org.eclipse.core.variables</td>
      <td><div align="center">1.4</div></td>
    </tr>
    <tr>
      <td>org.eclipse.cvs</td>
      <td><div align="center">not specified</div></td>
    </tr>
    <tr>
      <td>org.eclipse.debug.core</td>
      <td><div align="center">1.4</div></td>
    </tr>
    <tr>
      <td>org.eclipse.debug.ui</td>
      <td><div align="center">1.4</div></td>
    </tr>
    <tr>
      <td>org.eclipse.help</td>
      <td><div align="center">F1.0</div></td>
    </tr>
    <tr>
      <td>org.eclipse.help.appserver</td>
      <td><div align="center">F1.0</div></td>
    </tr>
    <tr>
      <td>org.eclipse.help.base</td>
      <td><div align="center">1.4</div></td>
    </tr>
    <tr>
      <td>org.eclipse.help.ui</td>
      <td><div align="center">1.4</div></td>
    </tr>
    <tr>
      <td>org.eclipse.help.webapp</td>
      <td><div align="center">1.4</div></td>
    </tr>
    <tr>
      <td>org.eclipse.jdt</td>
      <td><div align="center">not specified</div></td>
    </tr>
    <tr>
      <td>org.eclipse.jdt.apt.core</td>
      <td><div align="center">1.5</div></td>
    </tr>
    <tr>
      <td>org.eclipse.jdt.apt.pluggable.core</td>
      <td><div align="center">1.6</div></td>
    </tr>
    <tr>
      <td>org.eclipse.jdt.apt.ui</td>
      <td><div align="center">1.5</div></td>
    </tr>
    <tr>
      <td>org.eclipse.jdt.compiler.apt</td>
      <td><div align="center">1.6</div></td>
    </tr>
    <tr>
      <td>org.eclipse.jdt.compiler.tool</td>
      <td><div align="center">1.6</div></td>
    </tr>
    <tr>
      <td>org.eclipse.jdt.core</td>
      <td><div align="center">1.4</div></td>
    </tr>
    <tr>
      <td>org.eclipse.jdt.core.manipulation</td>
      <td><div align="center">1.4</div></td>
    </tr>
    <tr>
      <td>org.eclipse.jdt.debug</td>
      <td><div align="center">1.4</div></td>
    </tr>
    <tr>
      <td>org.eclipse.jdt.debug.ui</td>
      <td><div align="center">1.4</div></td>
    </tr>
    <tr>
      <td>org.eclipse.jdt.doc.isv</td>
      <td><div align="center">not specified</div></td>
    </tr>
    <tr>
      <td>org.eclipse.jdt.doc.user</td>
      <td><div align="center">not specified</div></td>
    </tr>
    <tr>
      <td>org.eclipse.jdt.junit</td>
      <td><div align="center">1.4</div></td>
    </tr>
    <tr>
      <td>org.eclipse.jdt.junit.runtime</td>
      <td><div align="center">1.3</div></td>
    </tr>
    <tr>
      <td>org.eclipse.jdt.junit4.runtime</td>
      <td><div align="center">1.5</div></td>
    </tr>
    <tr>
      <td>org.eclipse.jdt.launching</td>
      <td><div align="center">1.4</div></td>
    </tr>
    <tr>
      <td>org.eclipse.jdt.ui</td>
      <td><div align="center">1.4</div></td>
    </tr>
    <tr>
      <td>org.eclipse.jface</td>
      <td><div align="center">F1.1</div></td>
    </tr>
    <tr>
      <td>org.eclipse.jface.databinding</td>
      <td><div align="center">F1.0</div></td>
    </tr>
    <tr>
      <td>org.eclipse.jface.text</td>
      <td><div align="center">1.4</div></td>
    </tr>
    <tr>
      <td>org.eclipse.jsch.core</td>
      <td><div align="center">1.4</div></td>
    </tr>
    <tr>
      <td>org.eclipse.jsch.ui</td>
      <td><div align="center">1.4</div></td>
    </tr>
    <tr>
      <td>org.eclipse.ltk.core.refactoring</td>
      <td><div align="center">1.4</div></td>
    </tr>
    <tr>
      <td>org.eclipse.ltk.ui.refactoring</td>
      <td><div align="center">1.4</div></td>
    </tr>
    <tr>
      <td>org.eclipse.pde</td>
      <td><div align="center">1.4</div></td>
    </tr>
    <tr>
      <td>org.eclipse.pde.api.tools</td>
      <td><div align="center">1.4</div></td>
    </tr>
    <tr>
      <td>org.eclipse.pde.api.tools.ui</td>
      <td><div align="center">1.4</div></td>
    </tr>
    <tr>
      <td>org.eclipse.pde.build</td>
      <td><div align="center">1.4</div></td>
    </tr>
    <tr>
      <td>org.eclipse.pde.core</td>
      <td><div align="center">1.4</div></td>
    </tr>
    <tr>
      <td>org.eclipse.pde.doc.user</td>
      <td><div align="center">not specified</div></td>
    </tr>
    <tr>
      <td>org.eclipse.pde.ds.core</td>
      <td><div align="center">1.4</div></td>
    </tr>
    <tr>
      <td>org.eclipse.pde.ds.ui</td>
      <td><div align="center">1.4</div></td>
    </tr>
    <tr>
      <td>org.eclipse.pde.junit.runtime</td>
      <td><div align="center">1.4</div></td>
    </tr>
    <tr>
      <td>org.eclipse.pde.runtime</td>
      <td><div align="center">1.4</div></td>
    </tr>
    <tr>
      <td>org.eclipse.pde.ua.core</td>
      <td><div align="center">1.4</div></td>
    </tr>
    <tr>
      <td>org.eclipse.pde.ua.ui</td>
      <td><div align="center">1.4</div></td>
    </tr>
    <tr>
      <td>org.eclipse.pde.ui</td>
      <td><div align="center">1.4</div></td>
    </tr>
    <tr>
      <td>org.eclipse.pde.ui.templates</td>
      <td><div align="center">1.4</div></td>
    </tr>
    <tr>
      <td>org.eclipse.platform</td>
      <td><div align="center">F1.0</div></td>
    </tr>
    <tr>
      <td>org.eclipse.platform.doc.isv</td>
      <td><div align="center">not specified</div></td>
    </tr>
    <tr>
      <td>org.eclipse.platform.doc.user</td>
      <td><div align="center">not specified</div></td>
    </tr>
    <tr>
      <td>org.eclipse.rcp</td>
      <td><div align="center">not specified</div></td>
    </tr>
    <tr>
      <td>org.eclipse.sdk</td>
      <td><div align="center">not specified</div></td>
    </tr>
    <tr>
      <td>org.eclipse.search</td>
      <td><div align="center">1.4</div></td>
    </tr>
    <tr>
      <td>org.eclipse.swt</td>
      <td><div align="center">F1.0</div></td>
    </tr>
    <tr>
      <td>org.eclipse.team.core</td>
      <td><div align="center">1.4</div></td>
    </tr>
    <tr>
      <td>org.eclipse.team.cvs.core</td>
      <td><div align="center">1.4</div></td>
    </tr>
    <tr>
      <td>org.eclipse.team.cvs.ssh</td>
      <td><div align="center">1.4</div></td>
    </tr>
    <tr>
      <td>org.eclipse.team.cvs.ssh2</td>
      <td><div align="center">1.4</div></td>
    </tr>
    <tr>
      <td>org.eclipse.team.cvs.ui</td>
      <td><div align="center">1.4</div></td>
    </tr>
    <tr>
      <td>org.eclipse.team.ui</td>
      <td><div align="center">1.4</div></td>
    </tr>
    <tr>
      <td>org.eclipse.text</td>
      <td><div align="center">1.4</div></td>
    </tr>
    <tr>
      <td>org.eclipse.ui</td>
      <td><div align="center">F1.0</div></td>
    </tr>
    <tr>
      <td>org.eclipse.ui.browser</td>
      <td><div align="center">1.4</div></td>
    </tr>
    <tr>
      <td>org.eclipse.ui.cheatsheets</td>
      <td><div align="center">1.4</div></td>
    </tr>
    <tr>
      <td>org.eclipse.ui.console</td>
      <td><div align="center">1.4</div></td>
    </tr>
    <tr>
      <td>org.eclipse.ui.editors</td>
      <td><div align="center">1.4</div></td>
    </tr>
    <tr>
      <td>org.eclipse.ui.externaltools</td>
      <td><div align="center">1.4</div></td>
    </tr>
    <tr>
      <td>org.eclipse.ui.forms</td>
      <td><div align="center">1.4</div></td>
    </tr>
    <tr>
      <td>org.eclipse.ui.ide</td>
      <td><div align="center">1.4</div></td>
    </tr>
    <tr>
      <td>org.eclipse.ui.ide.application</td>
      <td><div align="center">1.4</div></td>
    </tr>
    <tr>
      <td>org.eclipse.ui.intro</td>
      <td><div align="center">1.4</div></td>
    </tr>
    <tr>
      <td>org.eclipse.ui.intro.universal</td>
      <td><div align="center">1.4</div></td>
    </tr>
    <tr>
      <td>org.eclipse.ui.navigator</td>
      <td><div align="center">1.4</div></td>
    </tr>
    <tr>
      <td>org.eclipse.ui.navigator.resources</td>
      <td><div align="center">1.4</div></td>
    </tr>
    <tr>
      <td>org.eclipse.ui.net</td>
      <td><div align="center">F1.1</div></td>
    </tr>
    <tr>
      <td>org.eclipse.ui.presentations.r21</td>
      <td><div align="center">1.4</div></td>
    </tr>
    <tr>
      <td>org.eclipse.ui.views</td>
      <td><div align="center">1.4</div></td>
    </tr>
    <tr>
      <td>org.eclipse.ui.views.log</td>
      <td><div align="center">1.4</div></td>
    </tr>
    <tr>
      <td>org.eclipse.ui.views.properties.tabbed</td>
      <td><div align="center">F1.0</div></td>
    </tr>
    <tr>
      <td>org.eclipse.ui.win32</td>
      <td><div align="center">1.4</div></td>
    </tr>
    <tr>
      <td>org.eclipse.ui.workbench</td>
      <td><div align="center"><img src="http://www.eclipse.org/eclipse/development/new.gif" alt="(new)" border="0" height="12" width="12" /> F1.1</div></td>
    </tr>
    <tr>
      <td>org.eclipse.ui.workbench.compatibility</td>
      <td><div align="center">1.4</div></td>
    </tr>
    <tr>
      <td>org.eclipse.ui.workbench.texteditor</td>
      <td><div align="center">1.4</div></td>
    </tr>
    <tr>
      <td>org.eclipse.update.configurator</td>
      <td><div align="center">F1.0</div></td>
    </tr>
    <tr>
      <td>org.eclipse.update.core</td>
      <td><div align="center">F1.0</div></td>
    </tr>
    <tr>
      <td>org.eclipse.update.core.win32</td>
      <td><div align="center">not specified</div></td>
    </tr>
    <tr>
      <td>org.eclipse.update.scheduler</td>
      <td><div align="center">F1.0</div></td>
    </tr>
    <tr>
      <td>org.eclipse.update.ui</td>
      <td><div align="center">F1.0</div></td>
    </tr>
    <tr>
      <td><img src="http://www.eclipse.org/eclipse/development/new.gif" alt="(new)" border="0" height="12" width="12" />org.hamcrest.core</td>
      <td><div align="center">1.5</div></td>
    </tr>
    <tr>
      <td>org.junit</td>
      <td><div align="center">1.3</div></td>
    </tr>
    <tr>
      <td>org.junit4</td>
      <td><div align="center">1.5</div></td>
    </tr>
    <tr>
      <td>org.objectweb.asm</td>
      <td><div align="center">1.3</div></td>
    </tr>
  </tbody>
</table>
  </p:appendix>  
</p:plan>
