<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
	<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=windows-1252">
	<TITLE>Eclipse Project DRAFT 3.0 Plan</TITLE>
	<META NAME="GENERATOR" CONTENT="OpenOffice.org 1.1.2  (Win32)">
	<META NAME="AUTHOR" CONTENT="Eclipse Project PMC">
	<META NAME="CREATED" CONTENT="20040906;11223146">
	<META NAME="CHANGEDBY" CONTENT="D D">
	<META NAME="CHANGED" CONTENT="20040917;13293107">
	<META NAME="ProgId" CONTENT="FrontPage.Editor.Document">
	<!-- saved from url=(0072)http://www.eclipse.org/eclipse/development/eclipse_project_plan_3_0.html -->
	<STYLE>
	<!--
		TD P { margin-left: 0.3cm; font-family: "arial", "helvetica", "geneva"; font-size: 10pt }
		H1 { margin-left: 0.3cm; font-family: "arial", "helvetica", "geneva"; font-size: 21pt }
		P { margin-left: 0.3cm; font-family: "arial", "helvetica", "geneva"; font-size: 10pt }
		H2 { margin-left: 0.3cm; font-family: "arial", "helvetica", "geneva"; line-height: 0.37cm }
		H4 { margin-left: 0.3cm }
		TH P { margin-left: 0.3cm; font-family: "arial", "helvetica", "geneva"; font-size: 10pt }
	-->
	</STYLE>
</HEAD>
<BODY LANG="fr-FR" DIR="LTR">
<H1>Eclipse WTP Project 1.0 Plan (Draft)</H1>
<P>Last revised Monday, September 17, 2004.<BR><BR>&nbsp;&nbsp;&nbsp;
<I>Please send comments about this draft plan to the
</I><A HREF="mailto:wtp-dev@eclipse.org">wtp-dev@eclipse.org</A> <I>developer
mailing list.</I></P>
<P>This document lays out the feature and API set for the next
feature release of Eclipse WTP 1.0. 
</P>
<UL>
	<LI><P STYLE="margin-bottom: 0cm"><A HREF="#Deliverables">Release
	deliverables</A> 
	</P>
	<LI><P STYLE="margin-bottom: 0cm"><A HREF="#Milestones">Release
	milestones</A> 
	</P>
	<LI><P STYLE="margin-bottom: 0cm"><A HREF="#TargetOperatingEnvironments">Target
	operating environments</A> 
	</P>
	<LI><P STYLE="margin-bottom: 0cm"><A HREF="#Compatibility">Compatibility
	with previous releases</A> 
	</P>
	<LI><P STYLE="margin-bottom: 0cm"><A HREF="#Themes">Themes</A> 
	</P>
</UL>
<P><BR><BR>
</P>
<P>Plans do not materialize out of nowhere, nor are they entirely
static. To ensure the planning process is transparent and open to the
entire Eclipse community, we (the Eclipse WTP PMC) post plans in an
embryonic form and revise them throughout the release cycle. 
</P>
<P>The first part of the plan deals with the important matters of
release deliverables, release milestones, target operating
environments, and release-to-release compatibility. These are all
things that need to be clear for any release, even if no features
were to change.&nbsp; 
</P>
<P>The remainder of the plan consists of themes underlying the
development of the various Eclipse WTP subprojects. 
</P>
<P>The current plan does not contain plan items for the various
Eclipse WTP subprojects. The plan items are given into the detailed
<A HREF="./milestone_plans/reports/report-milestone-overview.html">Eclipse
			WTP 1.0 Milestone Plan</A>
</P>
<H2><A NAME="Deliverables"></A>Release deliverables</H2>
<P>The release deliverables have the same form as previous releases,
namely: 
</P>
<UL>
	<LI><P STYLE="margin-bottom: 0cm">Source code release for Eclipse
	WTP Project, available as versions tagged &quot;R1_0&quot; in the
	Eclipse WTP Project <A HREF="http://dev.eclipse.org/viewcvs/index.cgi/?cvsroot=WebTools_Project">CVS
	repository</A>. 
	</P>
	<LI><P STYLE="margin-bottom: 0cm">Eclipse WTP Web Standard Tools
	runtime binary and SDK distribution (downloadable). 
	</P>
	<LI><P STYLE="margin-bottom: 0cm">Eclipse WTP Web+J2EE Standard
	Tools runtime binary and SDK distribution (downloadable). 
	</P>
</UL>
<H2><A NAME="Milestones"></A>Release milestones</H2>
<P>Release milestones occurring at roughly 8 week intervals exist to
facilitate coarse-grained planning and staging.</P>

<P>
See the 
<A HREF="./milestone_plans/reports/report-milestone-overview.html">Eclipse
			WTP 1.0 Milestone Plan</A> for details.
</P>

<H2><A NAME="TargetOperatingEnvironments"></A>Target Operating
Environments</H2>
<P>Eclipse WTP is built above Eclipse itself. 
</P>
<P>Most of the Eclipse WTP is &quot;pure&quot; Java&trade; code and
has no direct dependence on the underlying operating system. The
chief dependence is therefore on Eclipse. The 1.0 release of the
Eclipse WTP Project is written and compiled against version 1.4 of
the Java 2 Platform APIs, and targeted to run on version 1.4 of the
Java 2 Runtime Environment, Standard Edition.</P>
<P>Eclipse WTP is tested and validated on the following reference
platforms (this list is updated over the course of the release
cycle):</P>
<TABLE WIDTH=821 BORDER=1 CELLPADDING=2 CELLSPACING=3>
	<COL WIDTH=204>
	<COL WIDTH=75>
	<COL WIDTH=58>
	<COL WIDTH=451>
	<TR BGCOLOR="#cccccc">
		<TH COLSPAN=4 WIDTH=809>
			<P ALIGN=CENTER><FONT SIZE=4>Eclipse WTP Reference Platforms</FONT>
						</P>
		</TH>
	</TR>
	<TR>
		<TD WIDTH=204>
			<P><B>Operating system</B></P>
		</TD>
		<TD WIDTH=75>
			<P><B>Processor architecture</B></P>
		</TD>
		<TD WIDTH=58>
			<P><B>Window system</B></P>
		</TD>
		<TD WIDTH=451>
			<P><B>Java 2 Platform</B></P>
		</TD>
	</TR>
	<TR>
		<TD WIDTH=204>
			<P>Microsoft Windows XP</P>
		</TD>
		<TD WIDTH=75>
			<P>Intel x86</P>
		</TD>
		<TD WIDTH=58>
			<P>Win32</P>
		</TD>
		<TD WIDTH=451>
			<P>Sun Java 2 SDK, Standard Edition, version 1.4.2_05 for
			Microsoft Windows</P>
		</TD>
	</TR>
	<TR>
		<TD WIDTH=204>
			<P>Microsoft Windows XP</P>
		</TD>
		<TD WIDTH=75>
			<P>Intel x86</P>
		</TD>
		<TD WIDTH=58>
			<P>Win32</P>
		</TD>
		<TD WIDTH=451>
			<P>IBM 32-bit SDK for Windows, Java 2 Technology Edition, Version
			1.4.1</P>
		</TD>
	</TR>
	<TR>
		<TD WIDTH=204>
			<P>Red Hat Enterprise Linux WS 3</P>
		</TD>
		<TD WIDTH=75>
			<P>Intel x86</P>
		</TD>
		<TD WIDTH=58>
			<P>GTK</P>
		</TD>
		<TD WIDTH=451>
			<P>Sun Java 2 SDK, Standard Edition, 1.4.2_05 for Linux x86</P>
		</TD>
	</TR>
	<TR>
		<TD WIDTH=204>
			<P>Red Hat Enterprise Linux WS 3</P>
		</TD>
		<TD WIDTH=75>
			<P>Intel x86</P>
		</TD>
		<TD WIDTH=58>
			<P>GTK</P>
		</TD>
		<TD WIDTH=451>
			<P>IBM 32-bit SDK for Linux on Intel architecture, Java 2
			Technology Edition, Version 1.4.1</P>
		</TD>
	</TR>
	<TR>
		<TD WIDTH=204>
			<P>SuSE Linux 8.2</P>
		</TD>
		<TD WIDTH=75>
			<P>Intel x86</P>
		</TD>
		<TD WIDTH=58>
			<P>GTK</P>
		</TD>
		<TD WIDTH=451>
			<P>Sun Java 2 SDK, Standard Edition, 1.4.2_05 for Linux x86</P>
		</TD>
	</TR>
	<TR>
		<TD WIDTH=204>
			<P>SuSE Linux 8.2</P>
		</TD>
		<TD WIDTH=75>
			<P>Intel x86</P>
		</TD>
		<TD WIDTH=58>
			<P>GTK</P>
		</TD>
		<TD WIDTH=451>
			<P>IBM 32-bit SDK for Linux on Intel architecture, Java 2
			Technology Edition, Version 1.4.1</P>
		</TD>
	</TR>
</TABLE>
<P>Although untested, Eclipse WTP should work fine on other OSes that
support the same window system. See also <A HREF="http://www.eclipse.org/eclipse/development/eclipse_project_plan_3_1.html#TargetOperatingEnvironments">Eclipse
Target Operating Environments</A>. 
</P>
<P>Eclipse WTP is planned to support models for projects, editors,
web and J2EE artifacts, servers. Whereas Eclipse WTP would not add OS
dependencies to support the first three, projects, editors and
artifacts, integrating servers to Eclipse WTP would imply some OS
dependencies. Eclipse WTP is targeted to be OS independent through a
modular conception. So, components for servers integration will be
availabe out of Eclipse WTP Web, or J2EE, Standard Tools runtime
binary distributions.</P>
<P>Servers integrated into Eclipse WTP deliverables will be tested
and validated on the same platforms listed above. Tests for other
platforms will be relying on the community support.</P>
<H4>Internationalization</H4>
<P>The Eclipse WTP 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.
Other language support, if any, will rely on the community support.</P>
<H2><A NAME="Compatibility"></A>Compatibility with Other Eclipse
Releases</H2>
<P>There is no previous Eclipse WTP release. So, there is no
compatibility issue for Eclipse WTP.</P>
<P>Eclipse WTP deliverables will be compatible with Eclipse 3.1. No
special attention will give for being compatible with previous
Eclipse versions.</P>
<H2><A NAME="Themes"></A>Themes</H2>
<P>The Eclipse WTP Project consists of 2 subprojects. These themes
are common to both subprojects.</P>
<UL>
	<LI><P STYLE="margin-bottom: 0cm"><B>Built to last </B>- Eclipse has
	always been a platform for delivering integrated software tools.
	With a large and growing base of both free and commercial offerings
	based on Eclipse, it's critical for continued success to ensure that
	the platform scales well. This theme includes work to measure and
	improve the performance of key operations under various loads
	(number of installed plug-ins, number of resources in the workspace,
	etc.). This theme also includes support for user settings in order
	to let users choosing their own compromise between features and
	performance. 
	</P>
	<LI><P STYLE="margin-bottom: 0cm"><B>Simple to use</B> - Eclipse WTP
	needs to not only provide the features that advanced users demand,
	but also be something that most users find simple to use. This theme
	includes ease-of-use reviews of existing features, and work that
	helps make Eclipse-based products simple to use for users with
	widely-varying backgrounds and skill sets. 
	</P>
	<LI><P STYLE="margin-bottom: 0cm"><B>Large-scale development </B>-
	Large software projects are long-term collaborations involving large
	teams of developers playing a variety of roles. In order to be
	effective for large projects, software tools and processes must fit
	well into this reality. This theme includes laying the groundwork in
	the Eclipse WTP that will enable large teams to make effective use
	of Eclipse-based products. This theme will rely on components
	integration and flexible layout projects.</P>
	<LI><P STYLE="margin-bottom: 0cm"><B>User experience </B>- Improving
	Eclipse from the point of view of the end user. This includes
	improving both the &quot;out of the box&quot; experience so that new
	users are productive faster, and finding better ways to scale up to
	large numbers of plug-ins without overwhelming the user. This theme
	deals with reading, writing, and navigating in code, integrating
	information from different sources and providing guidance to users
	and making as explicit as possible how Eclipse works in order to
	improve Eclipse interaction.</P>
	<LI><P STYLE="margin-bottom: 0cm"><B>Responsive UI </B>- Making it
	easier to write Eclipse plug-ins that keep the UI responsive. Areas
	for improvement run the gamut from the UI becoming sluggish (or
	temporarily freezing) when blocking operations are done in the UI
	thread, to long-running operations like builds and searches which
	could be performed in the background while the user continues to
	work.</P>
	<LI><P STYLE="margin-bottom: 0cm"><B>Seamless edition of resources </B>-
	Generalize support to handle more members of the Java family than
	just Java source files. This includes widening to handle Java-like
	languages (such as JSP and SQLj), and embracing non-Java files (such
	as PHP, XSLT stylesheets, plug-in manifest files and J2EE deployment
	descriptors). Web and J2EE resources such as JSPs, XML, CSS, HTML,
	and deployment descriptors should be editable with the all the full
	features other well behaved Eclipse editors have, as applied to
	their specific needs, such as quick fix could &quot;fix&quot;
	xml/html syntax, rename/move should refactor links as well as java
	code, etc.</P>
	<LI><P STYLE="margin-bottom: 0cm"><B>Flexible project layout &ndash;</B>
	Users will have the ability to layout their projects in many ways,
	and still be able to deploy them in the standard J2EE ways. Ideally,
	they would still retain the ability to &quot;run/debug in place&quot;
	without doing the actual deployment, for performance reasons.</P>
	<LI><P STYLE="margin-bottom: 0cm"><B>Vendor ecosystem support &ndash;</B>
	Eclipse WTP is targeted to integrate with servers or external
	runtimes. Eclipse WTP respects vendor neutrality. This theme will
	rely on componentization and extensibility, to strengthen the
	long-term product value propositions of the widest possible range of
	application development implementations.</P>
</UL>
<P STYLE="margin-bottom: 0cm"><BR>
</P>
<P STYLE="margin-bottom: 0cm"><BR>
</P>
</BODY>
</HTML>
