<!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 Wednesday, February 14, 2002 [<u><font color="#008000">noting changes
since previous draft plan Friday, December 21, 2001</font></u>]
<p><i>&nbsp;&nbsp;&nbsp; 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>

<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 Project 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 Project 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 Project 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 Project <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 <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. 
<p>[<font color="#008000"><u>This draft plan has changed significantly over the 
  previous draft dated December 21, 2001. The Eclipse SDK user community has told 
  us that they want to see additional improvements in certain areas, and that 
  an early release that did not address their needs would be less interesting, 
  and would only delay the availability of the follow-on release that did address 
  their concerns. We therefore extended the development schedule to include a 
  number of new committed items, many of which were previously known but on the 
  uncommitted list. In addition, we deleted a few uncommitted items that we know 
  will not be done in the Eclipse Project 2.0 release, and revised several items 
  to more accurately describe what we will be doing. We added 3 more milestones 
  (M4, M5, M6), and are now targeting May 2002 for the Eclipse Project 2.0 release, 
  rather than April.</u></font>] 
<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 Project <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 SDK 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 reflecting significant

    progress [<u><font color="#008000">former initial development freeze</font></u>]</li>

  <li>[<u><font color="#008000">new milestone</font></u>] March 15, 2002 -
    milestone 4 - stable build reflecting significant

    progress</li>

  <li>[<u><font color="#008000">new milestone</font></u>] April 5, 2002 - milestone
    5 - stable build reflecting significant

    progress</li>

  <li>[<u><font color="#008000">new milestone</font></u>] April 26, 2002 - milestone
    6 - stable build - feature complete -

    initial development&nbsp; freeze</li>

</ul>

<p>

The 2.0 release is targeted for May 2002 [<u><font color="#008000">formerly
April</font></u>]. 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>

<h2>

Target Operating Environments</h2>



<p>Most of the Eclipse SDK 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 the Eclipse SDK 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</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</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</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 SDK 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 GTK 2.0</td>

    <td width="19%"><i>Early access</i></td>

  </tr>

  <tr>

    <td width="42%"> SuSE Linux 7.3 x86 GTK 2.0</td>

    <td width="19%"><i>Early access</i></td>

  </tr>

  <tr>

    <td width="42%">Other Linux; kernel version 2.4.7, and GTK 2.0</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 SDK components, including 
  dialogs and error messages, are externalized. The English strings are provided 
  as the default resource bundles.</p>



<p>Latin-1 locales will be supported by the Eclipse SDK on all of the above operating 
  environments; DBCS and BIDI locales will be supported by the Eclipse SDK only 
  on Windows operating environments. [<font color="#008000"><u>In the previous 
  draft, internationalization was planned only for Windows operating environments.</u></font>]
<p>The Eclipse SDK will support the GB 18030, the new Chinese code page standard, 
  on Windows 2000 and XP only. Note that GB 18030 also requires locale and character 
  encoding support from the Java 2 Runtime Environment; this support is standard 
  in version 1.4, and also available in some 1.3 JREs.
<p>We will perform tests in German and Japanese locales.

<h4>

BIDI support</h4>

<p> The Eclipse SDK 2.0 is a development environment targeted at technical professionals 
  - not an end user application. However the Eclipse SDK 2.0 tools will permit 
  technical professionals who are working in English to build Hebrew/Arabic end 
  user Java programs which are themselves not based on the Eclipse SDK. The BIDI 
  support in the Eclipse SDK 2.0 allows a Java programmer to work with BIDI strings, 
  code comments, etc but the Eclipse SDK itself is not designed to be localized 
  for BIDI locales and its widget orientation can not be changed.</p>

<p>IMPORTANT: The above BIDI support is available only on Windows platforms.</p>

<h2>

Compatibility with Previous Release</h2>

The Eclipse SDK 2.0 will be upwards compatible with the Eclipse SDK 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 SDK 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. 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> The Eclipse SDK 2.0 will be upwards contract-compatible 
  with the Eclipse SDK 1.0 unless noted. This means that programs in full compliance 
  with contracts specified in the Eclipse SDK 1.0 APIs will automatically be in 
  full compliance with the Eclipse SDK 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 SDK 
  2.0 APIs would ensure compliance with the Eclipse SDK 1.0 APIs. 
<p><b>Binary (plug-in) Compatibility:</b> The Eclipse SDK 2.0 will be upwards 
  binary-compatible with the Eclipse SDK 1.0 unless noted. This means that plug-ins 
  built for the Eclipse SDK 1.0 will continue to work correctly in the Eclipse 
  SDK 2.0 without change. Downward plug-in compatibility is not supported. Plug-ins 
  for the Eclipse SDK 2.0 are unlikely to be usable in the Eclipse SDK 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> The Eclipse SDK 2.0 will be upwards source-compatible 
  with the Eclipse SDK 1.0 unless noted. This means that source files written 
  to use the Eclipse SDK 1.0 APIs can be successfully compiled and run against 
  the Eclipse SDK 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 SDK APIs, they will not be usable with an earlier 
  version of the Eclipse SDK. 
<p><b>Workspace Compatibility:</b> Eclipse SDK 2.0 will be upwards

workspace-compatible with Eclipse SDK 1.0 unless noted. This means that

workspaces and projects created with Eclipse SDK 1.0 can be successfully opened by Eclipse SDK

2.0 and upgraded to a 2.0 workspace.&nbsp; Individual plug-ins developed for

Eclipse SDK 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 SDK 1.0 plug-ins (ones with provisional APIs) are unlikely to automatically

upgrade their metadata to 2.0. User interface session state may be discarded
when a workspace is upgraded.&nbsp; Downward workspace compatibility is not supported. A workspace created

(or opened) by Eclipse SDK 2.0 will be unusable with an earlier version

of Eclipse SDK.&nbsp;&nbsp;

<p><b>Non-compliant usage of API's</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 SDK 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 Project 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. An improvement in startup

time will come with computing and caching the plug-in registry on disk.
  <p>[<u><font color="#008000">Replacement item</font></u>] <b><a name="Improve Ant integration and the build story">Improve 
    Ant integration and the build story</a>.</b> In 1.0, Ant is not as well integrated 
    into the workbench as it could be. In 2.0, we plan to make it more convenient 
    to run Ant scripts from the Workbench, including ones not originally written 
    for use inside the platform. We also plan to make the platform's build story 
    more transparent, and allow Ant steps to be included. These changes impact 
    the UI component as well. [formerly called <a name="Improve Ant integration"><b>Provide 
    first-class Ant integration</b></a><b>]</b> 
  <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.<p>[<font color="#008000"><u>Replacement
  for previously uncommitted item</u></font>] <b><a name="Allow VCM control over rename/move/delete">Allow VCM control over
  rename/move/delete</a>.</b> VCM providers sometimes need tighter control    over how project resources are manipulated in the local file system. For instance, a project    directory might be a specially mounted remote file system located on a VCM server, and require    special server communication in order to delete, move, or change the name of a resource. Or the    VCM provider may track version history across move/renames. (Other clients would like a similar    opportunity to veto inappropriate name changes to their resources; this is a different concern.) We    will add a headless callback so that the relevant VCM provider will be able to control moves,    renames, and deletes. These changes will affect the VCM
  component as well.

  <p>[<u><font color="#008000">Previously uncommitted item (revised)</font></u>] <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. Workspace projects may also contain extra files or
  directories in which the VCM provider stores metadata; however, these files
  are not of direct interest to either the user or to regular plug-ins. There needs to be some means of dealing with
  these;

depending on the solution, this may require support from the UI as well as Core.</p>

  <p>[<u><font color="#008000">New item</font></u>] <b><a name="Improve support for product branding">Improve
  support for product branding</a>.</b>  We will make it easier to furnish custom product
  information such as splash screens, product startup configuration, distinctive icons for
  product branding, product-specific preference settings, etc.</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 SDK 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 SDK 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 SDK 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 SDK 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.

<p>[<u><font color="#008000">Previously uncommitted item (revised)</font></u>] <a name="Improve usability of project natures"><b>Improve

usability of project natures</b></a><b>.</b> In Eclipse SDK 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 enrich the underlying
support for natures by adding declarative constraints between natures, and
expose them to the user in the form of &quot;capabilities&quot; which the user
may (re-)configure their project with. These

changes also affect the Core component.

<p>[<u><font color="#008000">Previously uncommitted item</font></u>] <a name="Improve consistency of saving workbench state"><b>Improve

consistency of saving workbench state</b></a><b>.</b> In Eclipse SDK 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>[<u><font color="#008000">New item</font></u>]
  <b><a name="Improve support for file encodings">Improve support for file encodings</a>.</b> 
  Editors and other tools need to have the correct file encoding in order to
  read or write text files. In Eclipse SDK 1.0, everything uses the default file
  encoding for the current locale. We will improve this for Eclipse SDK 2.0.<p>[<u><font color="#008000">New
  item</font></u>] <b><a name="Improve support for clipboard-based cut/copy/paste">Improve
  support for clipboard-based cut/copy/paste</a>.</b> There are several places in the
  workbench where cut/copy/paste are not enabled where
  they should be. The UI will allow clients to supply these actions so they work
  as expected.</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 the Eclipse Platform. 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>[<u><font color="#008000">Revised item</font></u>] <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. 
    The GB 18030 character encoding support is standard in Java 2 Runtime Environment 
    version 1.4, and also available in some 1.3 JREs.
  <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.
  <p><font FACE="Times New Roman" COLOR="#000000">[</font><u><font FACE="Times New Roman" COLOR="#008000">New
  item</font></u><font FACE="Times New Roman" COLOR="#000000">] <b>Remove
  internal call to XinitThreads</b>. In 1.0 on Motif, the internal call that SWT
  makes on XinitThreads prevents drag and drop, and printing from working. In
  2.0, we will find a way to remove this impediment.</font></p>

</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 SDK

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 SDK UI.
  <p>[<u><font color="#008000">Revised item</font></u>] <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 the platform 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); correct classification 
    of text and binary files.
</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><a name="Add non-versioning WebDAV repository support">Add non-versioning
  WebDAV repository
  support</a>.</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>[<u><font color="#008000">Revised
  item</font></u>] <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 present all documentation and online help. This will allow help to be presented in a non-modal way.&nbsp;
  We will support one help browser for each target environment.&nbsp; Refer to the
  <a href="http://dev.eclipse.org/viewcvs/index.cgi/~checkout~/platform-help-home/eclipse_project_plan_2_0_supported_browsers.html">table</a>
  in the Help Component for additional information on supported browsers.
  <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 
    Platform environment.
  <p>[<u><font color="#008000">Revised item</font></u>] <b><a name="Allow remote help content">Enable 
    help server</a>s.</b> It is often desirable to be able to make plug-in documentation 
    accessible to users that do not have the Eclipse Platform installed. We will 
    support configurations where online documentation can be hosted on a web server 
    and viewed through a regular web browser. [<u><font color="#008000">The former 
    &quot;Info Center&quot; item has been merged with this one.</font></u>] 
  <p>[<u><font color="#008000">Revised item</font></u>] <b><a name="Support standalone help">Support 
    standalone help</a>.</b> Developers will be able to reuse the Eclipse Platform 
    help function even in products that are not built using the Eclipse Platform 
    itself.&nbsp; 
  <p>[<u><font color="#008000">Previously uncommitted item (revised)</font></u>]
  <a name="Add help search support"><b>Add help search support</b></a><b>.</b>

 We will provide the ability to search help documentation, based on <a href="http://jakarta.apache.org/lucene/docs/index.html">Lucene</a>.
  Stemmers will be used when available for the language; for example, the Porter
  stemming algorithm is used for English.

</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 SDK 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>

Scripting component</h4>

The <a href="http://dev.eclipse.org/viewcvs/index.cgi/~checkout~/platform-scripting-home/main.html">Scripting
component</a> provides general support for scripting (other than Ant). The following
item is committed for 2.0:&nbsp;

<blockquote>
  <p>[<u><font color="#008000">New item</font></u>] <b><a name="Remove Scripting component">Remove
  Scripting component</a>.</b>

In Eclipse SDK 1.0, the scripting support was provisional and incomplete. It is now
  clear that we will not become real in the 2.0 timeframe. The Scripting
  component will be withdrawn from the Eclipse Platform (it may be
  re-introduced in a later release).</p>
</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 Platform 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 undo/redo in workbench"><b>Improve undo/redo in workbench</b></a><b>.</b> 
    In Eclipse SDK 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. 
  <p><a name="Provide a standard Console view"><b>Provide a standard Console view</b></a><b>.</b> 
    In Eclipse SDK 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>[<u><font color="#008000">Deleted item</font></u>] <a name="Improve support for cheat sheets"><b>Improve 
    support for cheat sheets</b></a><b>.</b> In Eclipse SDK 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. [<font color="#008000"><u>This has turned out 
    to require a major effort, so we are removing this uncommitted item from the 
    2.0 plan.</u></font>]
  <p>[<u><font color="#008000">Deleted item</font></u>] <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 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.&nbsp; [<font color="#008000"><u>A consequence of the 
    new VCM story is that we do not need to provide a special mechanism for project 
    interchange. Therefore we are removing this uncommitted item from the 2.0 
    plan.</u></font>]
  <p>[<u><font color="#008000">Deleted item</font></u>] <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. [<font color="#008000"><u>We 
    have added support for additional locales (see the Internationalization section 
    in this plan for more details).&nbsp; This uncommitted item is redundant, 
    so we are removing it from the 2.0 plan.</u></font>]
  <p>[<u><font color="#008000">New item</font></u>] <b><a name="Improve local resource history">Improve 
    local resource history</a>.</b> The workspace local resource history mechanism 
    keeps recent copies of modified or deleted files in order to help save the 
    user from losing data in common situations. In 1.0, many UI actions that the 
    user would reasonably expect to grow the history are not doing so, and there 
    is no obvious way to recover a saved state of a file once it has been deleted. 
    We plan to make the history facility more reliable and helpful for 2.0.
  <p>[<u><font color="#008000">New item</font></u>] <b><a name="Add ftp repository support">Add 
    ftp repository support</a>.</b> We plan to build a simple repository adapter 
    for ftp servers. This also affects the Core component (target management API).</p>
</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 SDK 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>[<u><font color="#008000">Revised item</font></u>] <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; add navigation to a method's super

  implementation; add bracket matching; add error clueing; add line/column
  numbers.

<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>[<u><font color="#008000">Revised item</font></u>] <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 continue to
support the existing container based presentation; in addition, we are exploring
alternatives. 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>[<u><font color="#008000">Revised item</font></u>] <b><a name="Allow runtime parameters to the configured">Allow runtime
parameters to the configured</a>.</b> Using the new launch configuration mechanism

provided by the Platform Debug component will allow the working directory, runtime classpath,

boot classpath, extension directories, and other VM-type specific launch

parameters to be configured.

  <p>[<u><font color="#008000">Revised item</font></u>] <b><a name="Support hot code replace when debugging JDK 1.4 targets">Support 
    hot code replace when debugging compliant Java 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.&nbsp; 
    Provide smart drop to frame that only removes affected frames from the stack.
  <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.

  <p>[<u><font color="#008000">Previously uncommitted item</font></u>] <a name="Add API for Java abstract syntax tree"><b>Add

API for Java abstract syntax tree</b></a><b>.</b> In Eclipse SDK 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>[<u><font color="#008000">Previously uncommitted item</font></u>] <b><a name="Add field watchpoints">Support field

  watchpoints</a>.</b> We will add debugger support for field watchpoints.</p>

  <p>[<u><font color="#008000">Previously uncommitted item</font></u>] <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.<p>[<u><font color="#008000">New item</font></u>] <b><a name="Add support for JUnit">Add
  support for JUnit</a>.</b>  We will include special tooling for the popular <a href="http://www.junit.org/">JUnit
  unit test framework</a> to facilitate authoring and running of JUnit test
  cases.<p>[<u><font color="#008000">New
  item</font></u>] <b><a name="Add support for Javadoc generation">Add support for Javadoc
  generation</a>.</b> We will add an action for generating Javadoc for a Java
  project (note: requires a standard JDK).<p>[<u><font color="#008000">New
  item</font></u>] <b>Improve navigating to Javadoc.</b>
  We will add quick keyboard navigation from names in Java source code to the
  corresponding Javadoc, including the API Javadoc for names declared in
  libraries.</blockquote>



<h4>

<a name="Uncommitted Items">

Uncommitted Items</a> (Eclipse JDT subproject)</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 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>

</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;tools for developing plug-ins for the Eclipse Platform. 
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>

  <p>[<u><font color="#008000">New item</font></u>] <b><a name="Provide PDE API">Provide
  PDE API</a>.</b>  We will add an extension point to allow plug-ins to
  contribute wizards from creating new extensions in the PDE Plug-in Manifest
  editor, and expose PDE API needed by clients that provide such wizards.&nbsp;<p>[<u><font color="#008000">New item</font></u>]
  <b><a name="Source builds">Source builds</a>.</b>  In 1.0, the process used to
  create new Eclipse SDK drops from sources is only usable by the original
  development team. In 2.0, the magic will be removed and replaced by
  generally available scripts that anyone can use to build Eclipse SDK
  drops from sources.

</blockquote>



<p>(End of items for Eclipse PDE subproject.)

</body>

</html>

