<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
   <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
   <meta name="Author" content="Eclipse Project PMC">
   <meta name="GENERATOR" content="Microsoft FrontPage 4.0">
   <meta name="ProgId" content="FrontPage.Editor.Document">
   <title>Eclipse Project 2.0 Plan</title>
   <link rel="stylesheet" href="../default_style.css" type="text/css">
</head>
<body>

<h1>
Eclipse Project<br>
DRAFT 2.0 Plan</h1>
Last revised Friday, December 21, 2001 
<blockquote>
  <p><i>Please send comments about this draft plan to the </i><a href="mailto:eclipse-dev@eclipse.org">eclipse-dev@eclipse.org</a>
  <i>developer mailing list.</i></p>
</blockquote>
<p>This document lays out the plan for the next major release of the Eclipse
Project, designated release 2.0. The main emphasis of the Eclipse 2.0 release will be
on improving quality
(bug fixing) and performance, with a lesser emphasis on adding new features and APIs.
<p>This plan serves at least two purposes. First, it serves as the blueprint guiding
the efforts of the developers working on the Eclipse subprojects. The work items
committed in this plan were selected over all others because they were judged to
provide the most value to customers for this follow-on to the Eclipse 1.0
release. Second, this plan serves as an important input to the planning processes
of the various customers of the Eclipse Platform. This plan tells them what to
expect (or what not to expect) in the next release so that they can plan their
projects accordingly.
<p>Plans are rarely completely unchanging over the life cycle of a release, and 
  this project is no exception. We will update this document as required to reflect 
  any changes to the 2.0 release plan. While we certainly do not expect to backtrack 
  on items already committed, we do anticipate adding further committed items 
  to the list. This plan already includes a number of extra work items which we 
  are presently unable to commit to for the 2.0 release due to time, but which 
  are nonetheless worthy of being solved. Where possible, we will try to complete 
  these items, and will revise this plan as soon as we know we can make a definite 
  commitment. The individual Eclipse <a href="http://www.eclipse.org/eclipse/index.html" target="_top">subproject 
  and component web pages</a> and <a href="http://www.eclipse.org/mail/index.html" target="_top">developer 
  mailing list archives</a> contain further, in-depth information about how a 
  component is changing. Particular problem reports being worked on for the 2.0 
  release can be tracked through the Eclipse <a href="http://dev.eclipse.org/bugs/">bug 
  database</a>; the &quot;Target Milestone&quot; field reflects when a work item 
  will become available in the main development stream. 
<h2>Release deliverables</h2>
<p>The release deliverables are:
<ul>
  <li>Source code release for Eclipse project, available
    as versions tagged &quot;R2_0&quot; in the Eclipse <a href="http://dev.eclipse.org/viewcvs/">CVS
    repository</a>.</li>
  <li>Eclipse project SDK (includes Platform, JDT, and PDE source zips)
    (downloadable).</li>
  <li>Eclipse Platform runtime binary distribution (downloadable).</li>
  <li>JDT runtime binary distribution (downloadable).</li>
  <li>Eclipse Examples (downloadable).</li>
</ul>
<h2>Release milestones</h2>
<p>The release milestones are:</p>
<ul>
  <li>December 7, 2001 - milestone 0 - stable build reflecting progress</li>
  <li>December 21, 2001 - milestone 1 - stable build reflecting good progress</li>
  <li>January 25, 2002 - milestone 2 - stable build reflecting significant
    progress</li>
  <li>February 15, 2002 - milestone 3 - stable build - feature complete -
    initial development&nbsp; freeze</li>
</ul>
The 2.0 release is targeted for April 2002. 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.
<h2>
Target Operating Environments</h2>

<p>Most of Eclipse is "pure" Java and has no direct dependence on the underlying
operating system. The chief dependence is therefore on the Java 2 Platform
itself. The 2.0 release of the Eclipse project will be written against version
1.3 of the Java 2 Platform APIs, and targeted to run on either version
1.3 or 1.4 of the Java 2 Runtime Environment, Standard Edition.</p>
<p>We plan to test and validate Eclipse 2.0 on the most up-to-date Java 2
Platform implementations available. These are:</p>
<table border="1" width="91%">
  <tr>
    <td width="19%"><b>Operating system</b></td>
    <td width="24%"><b>Processor architecture</b></td>
    <td width="73%"><b>Java 2 Platforms</b></td>
  </tr>
  <tr>
    <td width="19%" rowspan="3">Microsoft<br>
      Windows</td>
    <td width="24%" rowspan="3">Intel x86</td>
    <td width="73%">Sun Java 2 SDK, Standard Edition, version 1.3.1 for
    Microsoft Windows</td>
  </tr>
  <tr>
    <td width="73%">IBM Developer Kit for Windows, Java 2 Technology Edition, version 1.3.0</td>
  </tr>
  <tr>
    <td width="73%">Sun Java 2 SDK, Standard Edition, version 1.4 for
    Microsoft Windows (currently in beta)</td>
  </tr>
  <tr>
    <td width="19%" rowspan="3">Linux</td>
    <td width="24%" rowspan="3">Intel x86</td>
    <td width="73%">Sun Java 2 SDK, Standard Edition, version 1.3.1 for Linux x86</td>
  </tr>
  <tr>
    <td width="73%">IBM Developer Kit for Linux, Java 2 Technology Edition, version 1.3.0</td>
  </tr>
  <tr>
    <td width="73%">Sun Java 2 SDK, Standard Edition, version 1.4 for Linux x86
      (currently in beta)</td>
  </tr>
  <tr>
    <td width="19%" rowspan="2">Sun Solaris</td>
    <td width="24%" rowspan="2">SPARC</td>
    <td width="73%">Sun Java 2 SDK, Standard Edition, version 1.3.1 for Solaris
      SPARC</td>
  </tr>
  <tr>
    <td width="73%">Sun Java 2 SDK, Standard Edition, version 1.4 for Solaris
      SPARC (currently in beta)</td>
  </tr>
  <tr>
    <td width="19%">HP HP-UX</td>
    <td width="24%">hp9000 PA-RISC</td>
    <td width="73%"><span class="header">HP-UX SDK for the Java 2 platform,
      version 1.3.1 for hp9000 PA-RISC</span></td>
  </tr>
  <tr>
    <td width="19%">IBM AIX</td>
    <td width="24%">PowerPC</td>
    <td width="73%">IBM Developer Kit for AIX, Java 2 Technology Edition, version 1.3.0</td>
  </tr>
</table>
<p><span class="header">The following table describes the combinations of
operating system and Java 2 Platform used when testing the Eclipse
configurations. The status column indicates the level of testing: Primary means
a full tested configuration; </span>Secondary means a configuration which is
only lightly tested; Untested means a configuration that has received no
testing, but which should work. Note that the Linux GTK configuration is
considered early access for the 2.0 release; it will be tested, but it is known
in advance that it will not be of product quality in this release.</p>
<table border="1" width="91%">
  <tr>
    <td width="11%"><b>Window system</b></td>
    <td width="28%"><b>Java 2 Platform<br>
      (see above table)</b></td>
    <td width="42%"><b>Operating Environment</b></td>
    <td width="19%"><b>Testing Status</b></td>
  </tr>
  <tr>
    <td width="11%" rowspan="5">Win32</td>
    <td width="28%" rowspan="5">Windows on Intel x86</td>
    <td width="42%">Windows 2000</td>
    <td width="19%">Primary</td>
  </tr>
  <tr>
    <td width="42%">Windows XP</td>
    <td width="19%">Primary</td>
  </tr>
  <tr>
    <td width="42%">Windows ME</td>
    <td width="19%">Secondary</td>
  </tr>
  <tr>
    <td width="42%">Windows 98SE</td>
    <td width="19%">Secondary</td>
  </tr>
  <tr>
    <td width="42%">Windows NT</td>
    <td width="19%">Secondary</td>
  </tr>
  <tr>
    <td width="11%" rowspan="6">Motif</td>
    <td width="28%" rowspan="3">&nbsp;
      <p>Linux on Intel x86</p>
      <p>&nbsp;</td>
    <td width="42%">RedHat Linux 7.2 x86</td>
    <td width="19%">Primary</td>
  </tr>
  <tr>
    <td width="42%">
SuSE Linux 7.3 x86</td>
    <td width="19%">Primary</td>
  </tr>
  <tr>
    <td width="42%">Other Linux; kernel version 2.4.7, and XFree86 version 4.1.0</td>
    <td width="19%">Untested</td>
  </tr>
  <tr>
    <td width="28%">Solaris on SPARC&nbsp;</td>
    <td width="42%">Sun Solaris 8 SPARC</td>
    <td width="19%">Primary</td>
  </tr>
  <tr>
    <td width="28%">HP-UX on hp9000 PA-RISC</td>
    <td width="42%">HP-UX 11i hp9000</td>
    <td width="19%">Primary</td>
  </tr>
  <tr>
    <td width="28%">AIX on PowerPC</td>
    <td width="42%">IBM
AIX 5.1 on PowerPC</td>
    <td width="19%">Primary</td>
  </tr>
  <tr>
    <td width="11%" rowspan="3">GTK</td>
    <td width="28%" rowspan="3">Linux on Intel x86</td>
    <td width="42%">RedHat Linux 7.2 x86</td>
    <td width="19%"><i>Early access</i></td>
  </tr>
  <tr>
    <td width="42%">
SuSE Linux 7.3 x86</td>
    <td width="19%"><i>Early access</i></td>
  </tr>
  <tr>
    <td width="42%">Other Linux; kernel version 2.4.7, and GTK version 1.2.8,
      1.2.9, or 1.2.10</td>
    <td width="19%"><i>Early access; untested</i></td>
  </tr>
</table>
<h4>
Internationalization</h4>
<p>
The Eclipse Platform is designed as the basis for internationalized products.
The user interface elements provided by the Eclipse components, including
dialogs and error messages, are externalized. The English strings are provided
as the default resource bundles.</p>

<p>We will perform basic tests in German and Japanese locales.
<p>IMPORTANT: Internationalization is supported only on Windows platforms in the 
  2.0 release.&nbsp; (See the <a href="#Uncommitted Items">Eclipse Platform
uncommitted items</a> for additional work in this area.)
<h4>
BIDI support</h4>
<p> Eclipse is a platform for building development environments targeted at technical 
  professionals. Eclipse 2.0 will permit technical professionals who are working 
  in English to build Hebrew/Arabic end-user applications.</p>
<p>IMPORTANT: BIDI is supported only on Windows platforms in the 2.0 release.</p>
<h2>
Compatibility with Previous Release</h2>
Eclipse 2.0 will be upwards compatible with Eclipse 1.0 to the
greatest extent possible. We anticipate a small number of areas where slavishly
maintaining compatibility would not be in the best interests of the Platform
or its clients. All such exceptions will be noted in the 2.0 release
notes so that clients can assess the impact of these changes on their plug-ins
and products.<p><b>Status of interim 1.0 APIs and plug-ins</b>: Some of the
Eclipse APIs and plug-ins in 1.0 were marked as provisional (debug, for
instance). These APIs and plug-ins will either appear in stable, finished form in
the 2.0 release, or be removed (with the exception of Scripting). As anticipated
(and advertised), these API changes will likely break 1.0 client plug-ins that
made use of that particular API in its early form. Even if code appears to work
with 2.0, it would still need to be completely reviewed to ensure that it abides
by the final API contracts.</p>
<p><b>API Contract Compatibility:</b> Eclipse 2.0 will be upwards
contract-compatible with Eclipse 1.0 unless noted. This means that
programs in full compliance with contracts specified in the Eclipse 1.0
APIs will automatically be in full compliance with the Eclipse 2.0 APIs. (API is
construed broadly to include such things as plug-in extension points.) Downward contract compatibility is not supported. There is no guarantee
that compliance with the Eclipse 2.0 APIs would ensure compliance with
the Eclipse 1.0 APIs.
<p><b>Binary (plug-in) Compatibility:</b> Eclipse 2.0 will be upwards
binary-compatible
with Eclipse 1.0 unless noted. This means that plug-ins built for Eclipse
1.0 will continue to work correctly in Eclipse 2.0 without change. Downward
plug-in compatibility is not supported. Plug-ins for Eclipse
2.0 are unlikely to be usable in Eclipse 1.0. Plug-ins with hard-coded
references in their plug-in manifest file to 1.0 versions of prerequisite
Eclipse project plug-ins will not work in 2.0 as the plug-in version numbers
will be incompatible.
<p><b>Source Compatibility:</b> Eclipse 2.0 will be upwards source-compatible
with Eclipse 1.0 unless noted. This means that source files written
to use Eclipse 1.0 APIs can be successfully compiled and run against the
Eclipse 2.0 APIs. Since source incompatibilities are easy to deal with,
maintaining source compatibility is considered much less important than
maintaining contract and binary compatibility. Downward source compatibility is not supported. If source files use
new Eclipse APIs, they will not be usable with an earlier version of Eclipse.
<p><b>Workspace Compatibility:</b> Eclipse 2.0 will be upwards
workspace-compatible with Eclipse 1.0 unless noted. This means that
workspaces and projects created with Eclipse 1.0 can be successfully opened by Eclipse
2.0 and upgraded to a 2.0 workspace.&nbsp; Individual plug-ins developed for
Eclipse 1.0 should provide similar upwards compatibility for their workspace
metadata; plug-in developers are responsible for ensuring that their plug-ins
recognize 1.0 metadata and process it appropriately.&nbsp; Note: the interim
Eclipse 1.0 plug-ins (ones with provisional APIs) are unlikely to automatically
upgrade their metadata to 2.0. Downward workspace compatibility is not supported. A workspace created
(or opened) by Eclipse 2.0 will be unusable with an earlier version
of Eclipse.&nbsp;&nbsp;
<p><b>Non-compliant usage of Eclipse</b>: 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 API are
inherently unsupportable and receive no guarantees about compatibility within a
single release much less with an earlier release. Refer to <i><a href="http://www.eclipse.org/articles/Article-API%20use/eclipse-api-usage-rules.html">How
to Use the Eclipse API</a></i> for information
about how to write compliant plug-ins.
<h2>
Eclipse Subprojects</h2>
The Eclipse project consists of 3 subprojects. Each subproject
is covered in its own section:
<blockquote><font size=+0><a href="#Eclipse Platform subproject">Eclipse Platform</a></font>
<br><font size=+0><a href="#Java development tooling (JDT) subproject">JDT - Java development tooling</a></font>
<br><font size=+0><a href="#Plug-in development environment (PDE) subproject">PDE - Plug-in development environment</a></font></blockquote>
<p>For each subproject, the items listed reflect new features of the Eclipse
platform, or areas where existing features will be significantly reworked.
Each item indicates the component affected by that work item (many items
involve coordinated changes to several components).
<p>Note that fixing bugs, improving test coverage, documentation, examples,
etc. are considered routine ongoing maintenance activities and are not
included in this plan unless they would also involve significant changes to the Platform.
<h3>
<a name="Eclipse Platform subproject">Eclipse Platform subproject</a></h3>
The following items reflect new features of the Eclipse platform, or areas
where existing features will be significantly reworked. Each item indicates
the component affected by that work item (some items involve coordinated
changes to several components). Additional uncommitted items affecting these
components are listed in the <a href="#Uncommitted Items">Uncommitted Items</a>
section at the end.
<h4>
Platform Core component</h4>
The <a href="http://dev.eclipse.org/viewcvs/index.cgi/~checkout~/platform-core-home/main.html">Platform
Core component</a> covers most of the Platform's non-UI infrastructure,
including the basic plug-in mechanism, resources in the workspace. The following
items are committed for 2.0:
<blockquote><b><a name="Improve Platform startup times">Improve Platform
startup times</a>.</b> Eclipse Platform startup times 1.0 reflect the speed of XML parsing for plug-in manifest files. As the sheer number of available
plug-ins can be expected to increase by an order of magnitude in the near future,
we need a more scalable solution to this problem. A likely improvement in startup
time will come with computing and caching the plug-in registry on disk.
<p><a name="Improve Ant integration"><b>Provide first-class Ant integration</b></a><b>.</b>
 In 1.0, Ant was a second-class Eclipse citizen. We plan to significantly increase the Platform's
power and flexibility by connecting it to the Platform's build story. These changes will likely impact the UI component
as well.
<p><a name="Improve serviceability"><b>Improve serviceability</b></a><b>.</b>
Several factors make it difficult in 1.0 to debug an Eclipse Platform that
is failing in the field: startup failures are poorly diagnosed; error messages in the log sometimes contain little
or no useful information; the internal plug-in log file is busy while the
Platform is running, and gets erased as soon as the Platform is restarted.
We plan to improve the startup sequence, eliminate unhelpful error messages, take steps to help identify
which plug-in is the apparent source of an internal error, and ensure that
the information in the internal logs is more readily accessible. These changes will
also impact the UI component.</blockquote>

<h4>
Installation and Update component</h4>
The <a href="http://dev.eclipse.org/viewcvs/index.cgi/~checkout~/platform-update-home/main.html"> Installation and Update component</a> is responsible for installing and upgrading the Eclipse
Platform in the field. Eclipse 1.0 contains an early version
of this component; it will be thoroughly reworked for 2.0. The following items
are committed for 2.0:
<blockquote>
  <p><b><a name="Redesign plug-in install and update story">Redesign
plug-in installation and update story</a>.</b>&nbsp; The 1.0 concepts of <i>component</i>
  and <i>configuration</i> will be replaced with a new concept called a <i>feature</i>.
  Features define the packaging structure for a group of related plug-ins,
  plug-in fragments, and optionally non-plug-in files. This change impacts the Core
component and the PDE subproject as well.</p>
  <p><b><a name="Improve installer flexiblilty">Improve installer </a><a name="Improve installer flexiblilty">flexibility</a>.</b>
  The standard Platform installer will be more flexible and support alternate
  packaging and site management schemes: structured site map for discovering
  available updates; improved granularity of downloads; accommodate native
  installers; feature-specific custom installers packaged with feature and
  executed during feature installation.</p>
</blockquote>

<h4>
Platform UI component</h4>
The <a href="http://dev.eclipse.org/viewcvs/index.cgi/~checkout~/platform-ui-home/main.html">Platform
UI component</a> provides the generic workbench UI for the Eclipse Platform. The following
items are committed for 2.0:
<blockquote><b><a name="Improve accessibility - UI">Improve accessibility</a>.</b> 
  Applications selling to the US Government market are required to meet minimum 
  accessibility guidelines (<a href="http://www.section508.gov/" target="_top">Section 
  508</a>). The workbench and its standard views and wizards must meet minimum 
  accessibility guidelines, including mouse-less operation. The Eclipse Platform 
  needs to enable other client plug-ins to meet accessibility guidelines too. 
  This change also impacts the SWT component. 
  <p><b><a NAME="Improve editor management">Improve editor management</a>.</b>
Users are finding it difficult to work with many editors open simultaneously
in the Eclipse 1.0 workbench, all seemingly stemming from the way editors
are currently managed. The workbench's approach to editor management will
be reviewed and revised to improve usability.
<p><b><a name="Improve interaction between editors and views">Improve
interaction between editors and views</a>.</b> There are some unfortunate interactions
between editors and views in Eclipse 1.0 that make it difficult for views
to serve as "secondary windows" to an editor. Among other things, this
leads to poor integration of standard views. The workbench's current approach
to editors and views will be reviewed and revised to facilitate interaction
and improve integration.
<p><b><a name="Allow context menu contributions in Outline view">Allow
context menu contributions in Outline view</a>.</b> In Eclipse 1.0, clients
have no control over the standard Outline view's popup context menu. This
will be addressed so that clients will be able to make contributions to
this menu.
<p><b><a name="Improve usability re: losing context">Improve usability
re: losing context</a>.</b> Some users have reported getting lost in the UI
and having to close all open editors and perspectives to get their workbench
back into a familiar state. The current approach will be reviewed and revised
to improve usability.
<p><b><a name="Improve the Task view">Improve the Task view</a>.</b>  The
standard Task view will be improved in the following areas: performance and
usability for large numbers of items in the view; context-sensitive help; and
making contributions to the view's context menu.<p><b><a name="Add support for working sets">Add support for working
  sets</a>.</b>  In 1.0, all resources in the workspace are equally accessible.
  The workbench will let the user define working sets of resources, suitable for
  providing more restricted contexts for browsing, searching, and the like.</blockquote>

<h4>
SWT component</h4>
The <a href="http://dev.eclipse.org/viewcvs/index.cgi/~checkout~/platform-swt-home/main.html">SWT
component</a> is the low-level widget toolkit used in Eclipse. The following
items are committed for 2.0:
<blockquote>
  <p><b><a name="Port to other window systems">Support additional&nbsp; window
  systems</a>.</b> Add support for new window system: GTK. Port Motif-based
  implementation to other operating systems: AIX, HP-UX, Solaris. Foster and
  encourage efforts to port to other window systems.
  <p><a name="Support GB18030"><b>Support GB18030</b></a><b>.</b> GB 18030
is a new Chinese code page standard. Products shipping into the China market
are required to support this new standard. We believe that Eclipse itself
  requires no specific changes to support GB 18030, but is entirely dependent on
  the Java 2 Runtime Environment to provide the necessary locale and character
  encoding support. The GB18030 character encoding is not supported in version
  1.3 of Java 2 Platform, but is included in version 1.4.<p><b><a name="Utilize native Unicode support">Utilize
  Windows native Unicode support</a>.</b>  The SWT implementation will use
  native Unicode support on all Windows operating systems that support it (NT,
  2000, XP).<p><b>Improve Motif appearance and performance.</b> In 1.0,
  support for the Motif window system lags behind that of Windows. We plan to improve the
  appearance and performance of SWT on Motif.
</blockquote>

<h4>
VCM component</h4>
The <a href="http://dev.eclipse.org/viewcvs/index.cgi/~checkout~/platform-vcm-home/main.html"> VCM component</a> provides version and configuration management for projects
in the workspace and attendant team support. The following items are committed for 2.0:
<blockquote><a name="Provide VCM API"><b>Provide an open VCM </b></a><b><a name="Provide VCM API">story</a>.</b> Eclipse
1.0 includes CVS repository support, but has no official VCM API that allows
other version and configuration management systems to integrate into the
Platform. We will provide a simple API, extension points, and usage guidelines
so that VCM providers can adapt their repositories and integrate VCM product-specific
UI elements into the Eclipse UI.
<p><a name="Improve CVS repository integration"><b>Improve CVS repository
integration</b></a><b>.</b> In addition to converting the existing CVS repository
adapter to the new VCM API, CVS support will be improved, including: support
for CVS modules so that Eclipse can be connected to existing CVS repositories;
support for CVS patch facility so that CVS users can capture changes to
a project in a tangible form that can be submitted to others or archived
(this also involves the compare infrastructure).</blockquote>

<ul><a name="Add mechanism for validating edits and saves"><b>Add mechanism
for validating edits and saves</b></a><b>.</b> Some VCM providers require a "heads up" when the user starts
to change the contents of a file open in an editor (e.g., to allow the file to
  be checked out and locked), or when the user is about to save the changed contents
back to disk. We will add a callback so that the relevant VCM provider will be
  able to register for advance notification with an opportunity to veto. This
  change also affects the UI and Core components.<p><b>Add non-versioning WebDAV repository support.</b> 
  We plan to build a simple repository adapter for non-versioning WebDAV
  servers. This will allow users to share their files via any WebDAV compliant
  server. This also affects the Core component (target management API).</p>
</ul>

<h4>
Help component</h4>

<p>
The <a href="http://dev.eclipse.org/viewcvs/index.cgi/~checkout~/platform-help-home/main.html"> Help component</a> organizes help contributions and presents them to the
user. The following items are committed for 2.0:</p>
<blockquote><p><b><a name="Simplify contribution mechanism">Simplify
  contribution mechanism</a>.</b> Based on feedback on 1.0, we plan to rework
  and simplify the help contribution mechanism. Online documentation created for 1.0  will
  need to be converted for 2.0.<p><a name="Use a separate web browser to present help"><b>Use
a separate web browser to present help</b></a><b>.</b> We will use an external
  web browser launched in a separate window to&nbsp;<br>
   present all documentation and online help. This will allow help to be presented in a non-modal way.<p><b><a name="Support live help">Support
  live help</a>.</b> We will support the ability to trigger developer-supplied
  actions as a result of navigating a   link in the online documentation. The actions will execute within the Eclipse environment.
<p><b><a name="Allow remote help content">Enable help server</a>s.</b>   We will support configurations where help can be served up to an Eclipse client by a remote web&nbsp;<br>
server (the server must support servlets).
<p><b><a name="Support standalone help">Support standalone help</a>.</b> Developers will be able to reuse the Eclipse help function even in products that are not built   using the Eclipse technology. We will provide for both in-process and command-line invocation of this support.
<p><b><a name="&quot;Info Center&quot; support">"Info Center" support</a>.</b> It is often desirable to be able to provide plug-in documentation that is accessible to users that   do not have Eclipse installed. We will support configurations where online documentation can be hosted on a web server
and viewed through a regular web browser.
</blockquote>

<h4>
Platform Debug component</h4>
The <a href="http://dev.eclipse.org/viewcvs/index.cgi/~checkout~/platform-debug-home/main.html">Platform
Debug component</a> provides generic Core and UI for launching, running, and debugging
programs. The following items are committed for 2.0:
<blockquote><a name="Stabilize Debug API"><b>Stabilize Debug API</b></a><b>.</b>
In Eclipse 1.0, all debug APIs were considered provisional and incomplete.
The Debug APIs will appear in finished, stable form.</blockquote>

<blockquote><a name="Add support for debugging procedural languages"><b>Add
support for debugging procedural languages</b></a><b>.</b> The Debug component will be extended to
  enable debuggers to be written for procedural languages (e.g., C) which get compiled to machine code and run
on standard hardware.
<p><a name="Add launch configurations"><b>Add launch configurations</b></a><b>.</b>
The Debug component will add a general mechanism and UI for the user to define launch
configurations describing how something is to be launched (e.g., command
line options).</blockquote>

<h4>
<a name="Uncommitted Items">
Uncommitted Items</a> (Eclipse Platform subproject)</h4>
<p><i>N.B. The following is the list of important Eclipse subproject work items
which we are presently unable to commit to for the 2.0 release. Wherever
possible, we will try to complete these items. Depending on how things work out,
we should be able complete some of them. However, we cannot promise that we will
complete any of them, and it would be unwise to gamble otherwise. Items not
completed for 2.0 will carry over to the planning of the next release. We will
revise this 2.0 plan as soon as we can definitively commit to any of them.</i></p>
<ul>
<p><a name="Add support for non-local files"><b>Add
support for non-local files</b></a><b>.</b> It is expensive to set up a workspace
project containing a large number of files that normally reside on remote
server or file system. Core has a basic mechanism that permits the workspace
to contain placeholders for files and folders necessarily resident in the
local file system. The Core mechanism will be augmented so that VCM can
use it to hook it to retrieve files from a remote server or file system
on demand. The UI component is also affected.
<p><a name="Improve usability of project natures"><b>Improve
usability of project natures</b></a><b>.</b> In Eclipse 1.0, project natures are secretly
configured by the plug-ins that define them, leading to problems and blind
spots when projects have other natures as well. We will review and revise
the approach to how project natures are used, presented, and manipulated. These
changes will affect the UI and Core components.
<p><a name="Improve consistency of saving workbench state"><b>Improve
consistency of saving workbench state</b></a><b>.</b> In Eclipse 1.0, there are a
number of instances where user-configurable UI settings are not being persisted
between sessions. The UI will provide better support for saving important
UI state.
<p><a name="Improve undo/redo in workbench"><b>Improve
undo/redo in workbench</b></a><b>.</b> In Eclipse 1.0, undo and redo are poorly supported
for workbench actions, and it is still far too easy for a user to lose
work. We will consider providing an undo/redo service that will help decrease
the risk of inadvertently losing work. These changes will affect the UI
component.
<p><a name="Provide a standard Console view"><b>Provide
a standard Console view</b></a><b>.</b> In Eclipse 1.0, there is a proliferation of
consoles furnished by clients (including JDT, PDE, Ant). The workbench
will supply a standard Console view; clients will be encouraged to use
it instead of providing their own. These changes will affect the UI component.
<p><a name="Improve support for cheat sheets"><b>Improve
support for cheat sheets</b></a><b>.</b> In Eclipse 1.0,
the Welcome editor is an example of a cheat sheet. A cheat sheet is an
instance of a simple kind of workflow support. We will continue to evolve
the mechanisms behind cheat sheets, including adding standard API for creating
actions. These changes will affect the UI component.<p><b><a name="Allow pre-validation of rename/move/delete">Allow pre-validation of
  rename/move/delete</a>.</b> VCM providers that
  need to manage a project's namespace would like advance notification of
  impending resource moves, renames, and deletes. (Other clients would like a
  similar opportunity to veto inappropriate name changes to their resources;
  this is a different concern.) We will add a callback so that the
  relevant VCM provider will be able to register for advance notification with
  an opportunity to veto. These changes will affect the UI and Core components.
  <p><a name="Support unmanaged resources in managed projects"><b>Support
unmanaged resources in managed projects</b></a><b>.</b> Workspace projects often contain
files derived by processing other files; it is usually the case that these
derived files should not be under VCM, even though the rest of the files
in the project are. There needs to be some means of dealing with this;
depending on the solution, this may require support from Core and UI.</p>
<p><a name="Add search support"><b>Add help search support</b></a><b>.</b>
 We will provide the ability to search help documentation. This change will
affect the Help component.<p><b><a name="Provide project interchange mechanism">Provide
project interchange mechanism</a>.</b> We will provide a way to export the
resources in one of more Eclipse workspace projects to an archive file that it
can be saved for posterity or imported to another workspace. This affects the
Core and UI components.<p><b><a name="Provide additional internationalization support">Provide
additional internationalization support</a>.</b>&nbsp; We will enable the
Eclipse Platform to provide internationalization support for additional locales
on some Motif operating environments. This affects the SWT component.
</ul>

<p>(End of items for Eclipse Platform subproject.)

<h3>
<a name="Java development tooling (JDT) subproject">Java development tooling (JDT) subproject</a></h3>
<a href="http://www.eclipse.org/jdt/index.html">
Java development tooling</a> (JDT) implements a Java IDE based on the Eclipse
Platform.
The following committed items reflect new features of JDT, or areas where existing
features will be significantly reworked.
<blockquote><a name="Reduce memory footprint for Java builder"><b>Reduce
memory footprint for Java builder</b></a><b>.</b> The internal data structures of
the Java incremental compilation mechanism is using more memory than necessary
or reasonable. By fundamentally changing the approach to how incremental
builds are done we expect to substantially reduce the memory footprint
without significantly increasing incremental compile times.
<p><b><a name="Improve Java search">Improve Java search</a>.</b> Java reference
searches in Eclipse 1.0 are limited to named types in source files. This
will be addresses so to make it possible to find references in JAR libraries, and to distinguish read and write accesses to fields.
<p><a name="Improve code assist"><b>Improve code assist</b></a><b>.</b> A number
of changes will improve usability of code assist: including method argument
names and types as hints; suggesting variable names; honoring visibility
constraints dictated by the context.
<p><b><a name="Upgrade Eclipse Java compiler to be compliant with version 1.4 of the Java 2 Platform">Upgrade
Eclipse Java compiler to be compliant with version 1.4 of the Java 2 Platform</a>.</b>
A new assertion feature was added in 1.4, and there were a few clarifications
in obscure corners of the Java language specification. The Eclipse Java compiler
will be upgraded to support 1.4, but will continue to support 1.3 via an option
setting.
<p><b><a name="Improve build classpath">Improve build classpath</a>.</b>
By adding a mechanism for explicitly exporting libraries on a project's
build classpath to downstream projects, it becomes possible to have a library
project (one with a JAR and no source folder) that can stand in for a project
containing source code. This change enables large scale development where
source code is contained in multiple, related Java projects, by providing
possibilities other than having all the source code projects in the workspace
at all times (expensive to build). Plug-in development is a direct beneficiary.
  <p><b><a name="Improve accessibility - JDT">Improve accessibility</a>.</b> Applications 
    selling to the US Government market are required by law to meet minimum accessibility 
    guidelines (<a href="http://www.section508.gov/" target="_top">Section 508</a>). 
    The JDT UI must meet minimum accessibility guidelines, and enable its client 
    plug-ins to meet accessibility guidelines as well. 
  <p><a name="Improve Java editor"><b>Improve Java editor</b></a>. Rework
menu bar contributions and context menu to improve usability; add a template
  facility with variable substitution; navigate to a method's super
  implementation; add bracket matching.
<p><b><a name="Improve refactoring">Improve refactoring</a>.</b> 
Implement additional refactorings: extract variable, inline temporary, push-up
field/method, change method signature. Support reference updates in strings and
comments for move/rename refactorings.
<p><b><a name="Improve refactoring">Improve package
browsing</a></b>: Provide a more package centric-view for browsing. In 1.0, the
Packages view presents packages grouped by their containers. We will add another
presentation that shows packages independent of their physical containment. We
will also add
support to show the structure of a compilation unit in the Packages
view.
<p><b><a name="Facilitate string externalization">Facilitate
</a><a name="Facilitate string externalization">string
externalization</a></b><b>.</b> Add a wizard that
allows the user to
externalizing string literals in Java source code into standard Java resource bundles.
<p><b><a name="Allow runtime classpath to the configured">Allow runtime
classpath to the configured</a>.</b> Using the new launch configuration mechanism
provided by the Platform Debug component will allow the runtime classpath,
boot classpath, extension directories, and other VM-type specific launch
parameters to be configured.
<p><b><a name="Support hot code replace when debugging JDK 1.4 targets">Support hot code replace when
debugging compliant JDK 1.4 targets</a>.</b>   JDPA for version 1.4 of the Java
2 Platform allow a class to be updated while under the control of the debugger.
In 1.0, this kind of support was only available for IBM J9 targets. The Java debugger will
be changed to support both.<p><b><a name="Enable JSP debugging with JPDA">Enable JSP debugging
with JPDA</a>.</b> The Java debugger will enable JSP debugging via a flexible source lookup algorithm and breakpoint setting mechanism.
<p><a name="Add debugger support for step filtering"><b>Add debugger
support for step filtering</b></a><b>.</b> The Java debugger will avoid stepping into
any class mentioned on a user-specified exclusion list.
<p><b><a name="Improve data inspectors">Improve data inspectors</a>.</b> We will
improve support in the debugger for inspecting objects, including running an
object's toString method to obtain a readable string that may be more
meaningful to the user.</blockquote>

<h4>
Uncommitted Items</h4>
<p><i>N.B. The following is the list of important JDT subproject work items
which we are presently unable to commit to for the 2.0 release. Wherever
possible, we will try to complete these items. Depending on how things work out,
we should be able complete some of them. However, we cannot promise that we will
complete any of them, and it would be unwise to gamble otherwise. Items not
completed for 2.0 will carry over to the planning of the next release. We will
revise this 2.0 plan as soon as we can definitively commit to any of them.</i></p>
<blockquote>
  <p><a name="Add API for Java abstract syntax tree"><b>Add
API for Java abstract syntax tree</b></a><b>.</b> In Eclipse 1.0, refactoring uses
compiler internals for parsing and walking the abstract syntax trees (ASTs)
for Java source code. We will add API for creating and manipulating ASTs
that can serve as the basis for other clients like refactoring.&nbsp;</p>
  <p><a name="Add conditional breakpoints"><b>Support conditional
  breakpoints</b></a><b>.</b> We will add debugger support
  for conditional breakpoints
with simple conditions, including simply object identity tests of the form
  &quot;this == id&quot; sufficient for object breakpoints.</p>
  <p><b><a name="Add field watchpoints">Support field
  watchpoints</a>.</b> We will add debugger support for field watchpoints.</p>
  <p><a name="Improve Java editor"><b>Support editor key bindings</b></a>. Add support for user-configurable key
  bindings in the Java editor. This requires changes in the Platform UI
  component.
</blockquote>

<p>(End of items for Eclipse JDT subproject.)

<h3>
<a name="Plug-in development environment (PDE) subproject">Plug-in development environment (PDE) subproject</a></h3>
The <a href="http://www.eclipse.org/pde/index.html"> plug-in development environment</a> (PDE) consists of&nbsp; Eclipse-based tools
for developing Eclipse plug-ins. For 2.0, the goal is to maintain
the level of PDE support present in 1.0 while adding the necessary extensions
that allow it to be the tool of choice for self-hosted Eclipse project
development. The following items are committed for 2.0:
<blockquote> <b><a name="Improve accessibility - PDE">Improve accessibility</a>.</b> 
  Applications selling to the US Government market are required by law to meet 
  minimum accessibility guidelines (<a href="http://www.section508.gov/" target="_top">Section 
  508</a>). The PDE UI must meet minimum accessibility guidelines, and enable 
  its client plug-ins to meet accessibility guidelines as well. 
  <p><b><a name="Support revamped install and update story">Support
  revamped install and update story</a>.</b> PDE contains support for building
  the deployable form of a plug-in, or set of plug-ins. We will update PDE to
  support the revised install and update story.</p>
  <p><b><a name="Improve support for large scale multi-project plug-in development">Improve
  support for large scale multi-project plug-in development</a>.</b> We will improve support
  for large scale development efforts involving multiple plug-ins spread across
  several projects in the workspace.</p>
</blockquote>
</body>
</html>
