<!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>

