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

<p>Last revised Friday, May 17, 2002 Milestone dates are superceded by more detailed 
  <a href="freeze_plan_2_0.html">2.0 Freeze/Test/Fix Plan</a>.<br>
  Last revised Friday, April 18, 2002 [<u><font color="#008000">noting changes 
  since previous draft plan Friday, December 21, 2001</font></u>] </p>
<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><a name="Milestones"></a>Release milestones</h2>

<p><b>** See the 2.0 <a href="freeze_plan_2_0.html">Freeze/Test/Fix</a> Plan for 
  detailed final release schedule.</b></p>
<p>The release milestones are:</p>

<ul>
  <li>December 7, 2001 - Milestone 0 - (2.0 M0) - stable build reflecting progress</li>
  <li>December 21, 2001 - Milestone 1 - (2.0 M1) - stable build reflecting good 
    progress</li>
  <li>January 25, 2002 - Milestone 2 - (2.0 M2) - stable build reflecting significant 
    progress</li>
  <li>February 15, 2002 - Milestone 3 - (2.0 M3) - 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 22, 2002 - Milestone 
    4 -(2.0 M4) - stable build reflecting significant progress</li>
  <li>[<u><font color="#008000">new milestone</font></u>] April 16, 2002 - (2.0 
    M5) milestone 5 - stable build reflecting significant progress</li>
  <li>[<u><font color="#008000">new milestone</font></u>] May 17, 2002 - Milestone 
    6 (2.0 M6) - stable build - feature complete - initial development&nbsp; freeze</li>
</ul>

<p> The 2.0 release is targeted for June 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>

