<?php  																														require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php");	require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/nav.class.php"); 	require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/menu.class.php"); 	$App 	= new App();	$Nav	= new Nav();	$Menu 	= new Menu();		include($App->getProjectCommon());    # All on the same line to unclutter the user's desktop'

$pageTitle 		= "";
$pageKeywords	= "";
$pageAuthor		= "";

ob_start();
?>
    <div id="maincontent">
	<div id="midcolumn">

<?php
include_once($_SERVER['DOCUMENT_ROOT'] . "/projects/fragments/proposal-page-header.php");
generate_header("Web Tools Platform Top-Level");
?>
  
    <h1>eclipse web tools platform project</h1>
    
  





  
    

  









<HR />


This project proposal is in the
<a href="/projects/dev_process/">
Proposal Phase</a> and is posted here to solicit additional project 
participation and ways the project can be leveraged from the Eclipse 
membership-at-large. You are invited to comment on and/or
<a href="Wikiaed0.html">join the project</a>. Please send all feedback to the
<a href="http://www.eclipse.org/newsportal/thread.php?group=eclipse.webtools">eclipse.webtools</a> 
newsgroup or the <a href="https://dev.eclipse.org/mailman/listinfo/wtp-proposal">
wtp-proposal</a> mailing list.<HR />
<h2>Project Organization</h2>
<P>
The Eclipse Web Tools Platform Project is an open source project of eclipse.org, overseen by a <A CLASS="wikipage" HREF="Wikic037.html">Project Management Committee</A> (PMC) and project leaders. The PMC Planning Council coordinates identified resources of the project against a <A CLASS="wikipage" HREF="Wikib862.html">Project Development Plan</A>. The work is done in subprojects working against a <A CLASS="external" HREF="http://dev.eclipse.org/viewcvs/index.cgi">CVS repository*</A><img class="outlink" src="images/out.png" alt="" width="6" height="6" />. The Eclipse Web Tools Platform <A CLASS="wikipage" HREF="Wiki699f.html">Project Charter</A> describes the organization of the project, roles and responsibilities of the participants, and top-level development process for the project. Frequently asked questions and corresponding answers may be found in the <A CLASS="wikipage" HREF="Wiki5926.html">Project FAQ</A> page.
<P>
<h2>Project Principles</h2>
<P>
Among the key principles on which this project has been initiated, and will be run, are the following:
<P>
<B>Extension of the Eclipse value proposition</B>
The Eclipse Project has set a high standard for technical excellence, functional innovation and overall extensibility within the Java IDE domain.  We intend to apply these same standards to the Web/J2EE application-tooling domain.
<P>
<B>Vendor ecosystem</B>
A major goal of this project is to support a vital application development tools market. Its exemplary functionality will be useful on its own but it will be designed from the start to be extensible so commercial vendors can use what this project delivers as a foundation for their own product innovation and development efficiency.
<P>
<B>Vendor neutrality</B>
Vendor neutrality will be at the core of this project.  We aim to encourage Eclipse participation and drive Eclipse market acceptance by strengthening the long-term product value propositions of the widest possible range of application development vendors.
<P>
<B>Standards-based innovation</B>
This project will deliver an extensible, standards-based tooling foundation on which the widest possible range of vendors can create value-added development products for their customers and end-users.  Where standards exist, we will adhere to them. At least, at first, where standards are emerging, we will wait for them to emerge; this can be re-evaluated later according to user needs and contributor availability. Where multiple technologies are widely used for a given functional need, we will attempt to support each, subject only to technical feasibility and our goal of providing the most capable and extensible foundation long term.
<P>
<B>Agile development</B>
Our aim is to incorporate into our planning process the innovations that arise once a project is underway, and the feedback from our user community on our achievements to date.  We think an agile development and planning process, in which progress is incremental, near-term deliverables are focused, and long-term planning is flexible, will be the best way to achieve this.
<P>
<B>Inclusiveness & diversity</B>
We aim to assimilate the best ideas from the largest number of participants representing the needs of the widest range of end-users.  So we will encourage organizations across a broad range of technical, market and geographical domains to participate in this project.
<P>
<P>
<h2>Project Scope</h2>
<P>
The Eclipse Web Tools Platform Project will initially focus on infrastructure for tools used to build applications for standards-based Web and Java runtime environments. <I>(See diagram for illustration.)</I>  Outside the project's scope, at least at first, will be support for vendor-specific application architectures, such as ASP.Net and ColdFusion, or for extensions not backed by the JCP, such as Apache Struts. This can be re-evaluated later according to user needs and contributor availability and may lead to the creation of a new subproject.
<P>
<BR />
<IMG CLASS="inline" SRC="subprojectsac95.gif" ALT="TheEclipseWebToolsPlatformProjectHomePage/subprojects.gif" width="604" height="543" />
<P>
The project will be further limited to providing infrastructure for tooling proper, in contrast to infrastructure related to the application run-time.  We will typically use a simple litmus test to set the boundary between tooling and run-time.  Application artifacts, once developed, have no execution dependencies on the relevant tooling framework, while the converse would be true for run-time frameworks.  In keeping with our objective of maximizing vendor-neutrality, where multiple frameworks exist in the market for a given functional domain, we will attempt to develop tooling based on a common abstraction (or superset) to the extent feasible.
<P>
The ultimate objective of the project is to support tooling that allows developers to produce applications providing a high degree of extensibility and reuse with increasing development efficiency.  The tooling foundation the project will deliver will support these values by enforcing appropriate separations of concern in application architecture, raising the level of technical abstraction in application development and enabling repeatability in development processes.  These values, however, will be achieved incrementally over time.  Early deliverables will focus on an extensible foundation supporting the most widely used Web and Java standards and technologies.
<P>
In addition, we expect the Web Tools Platform Project to produce functional requirements that are more appropriately satisfied through the Eclipse Project or other Eclipse foundational subprojects. Areas in which we might expect to see these elaborated requirements would be in working with components, or supporting complex project layouts. In such case, the Web Tools Platform Project PMC will coordinate the corresponding Project PMCs the design and implementation of the corresponding contribution.
<P>
<h2>Subprojects </h2>
<P>
<h2>Web Standard Tools*</h2>
The Web Standard Tools subproject aims to provide common infrastructure available to any Eclipse-based development environment targeting Web-enabled applications. Within scope will be tools for the development of three-tier (presentation, business and data logic) and server publication of corresponding system artifacts.  Outside scope will be language or web framework specific technology, which will be left to other subprojects like the J2EE Web Tools subproject. 
<P>
Tools provided will include editors, validators and document generators for artifacts developed in a wide range of standard languages (for example, HTML/xHMTL, Web services, XQueries, SQL, etc.)  Supporting infrastructure will likely comprise a specialized workbench supporting actions such as publish, run, start and stop of Web application code across target server environments.
<P>
As an integrated set of capabilities, the Web Standard Tools would support use cases such as "- Develop and publish a static HTML site, - Deploy an applet on a given http server, - Develop and publish a WSDL schema on a UDDI registry".
<P>
Read more on <A CLASS="wikipage" HREF="Wikibd01.html">the Web Standard Tools subproject</A>
<P>
<h2>J2EE Standard Tools*</h2>
The initial scope of the J2EE Standard Tools subproject will be to provide a basic Eclipse plug-in for developing applications based on J2EE 1.4 targeting J2EE-compliant application servers, as well as a generic J2EE tooling infrastructure for other Eclipse-based development products.
<P>
Within scope will be a workbench providing a framework for developing, deploying, testing and debugging J2EE applications on JCP-compliant server environments, as well as an exemplary implementation of a plug-in for at least one JSR-88 compliant J2EE Server.  Included will be a range of tools simplifying development with J2EE APIs including EJB, Servlet, JSP, JCA, JDBC, JTA, JMS, JMX, JNDI, and Web Services.  This infrastructure will be architected for extensibility for higher-level development constructs providing architectural separations of concern and technical abstraction above the level of the J2EE specifications
<P>
The integrated workbench to be delivered would support use cases such as " - Develop a JSP page, Enhance the "PetStore" blue-print application, Expose a Session Bean as a Web Service".
      <P> Read more on <A CLASS="wikipage" HREF="Wiki9999.html">the 
        J2EE Standard Tools subproject</A> 
      <P>
<I>* Suggestions for alternative subproject names are very welcome and should be made on the <A CLASS="external" HREF="http://www.eclipse.org/newsportal/thread.php?group=eclipse.webtools">WTP forum</A><img class="outlink" src="images/out.png" alt="" width="6" height="6" /> </I>
<P>
<P>
<h2>Project Documentation</h2>
<P>
<h2>General Resources</h2>
<UL>
<LI><B><A CLASS="wikipage" HREF="Wiki5926.html">FAQ</A></B> Answers to the most common questions about the WTP. This should be the first place you go for any Question that you may have.
</LI>
<LI><B><A CLASS="wikipage" HREF="Wiki9ce5.html">Downloads</A></B> Get the latest WTP builds
</LI>
<LI><B><A CLASS="external" HREF="http://www.eclipse.org/newsportal/thread.php?group=eclipse.webtools">Newsgroup</A><img class="outlink" src="images/out.png" alt="" width="6" height="6" /></B> Place to ask questions on how to use the WTP. The newsgroup is also available through a <A CLASS="external" HREF="/newsportal/thread.php?group=eclipse.webtools">simple Web interface</A><img class="outlink" src="images/out.png" alt="" width="6" height="6" /> and a <A CLASS="external" HREF="http://dev.eclipse.org/newslists/news.eclipse.webtools/maillist.html">newsgroup archive</A><img class="outlink" src="images/out.png" alt="" width="6" height="6" />.
</LI>
<LI><B><A CLASS="external" HREF="http://bugs.eclipse.org/bugs">Bugzilla*</A><img class="outlink" src="images/out.png" alt="" width="6" height="6" /></B> Place to open bugs or enhancements for the WTP
</LI>
<LI><B><A CLASS="wikipage" HREF="Wiki699f.html">Eclipse Web Tools Platform Charter</A></B> The document that describes the organization of the project, as well as the legal and copyrights issues.
</LI>
<LI><B><A CLASS="external" HREF="/legal/cpl-v10.html">Common Public License</A><img class="outlink" src="images/out.png" alt="" width="6" height="6" /></B> License applicable to WTP code base.
</LI>
</UL>
<P>
<h2>Planning and Activities:</h2>
<UL>
<LI><B><A CLASS="wikipage" HREF="Wikib862.html">Project Management and Plans</A></B> Planning and project management resources, such as WTP plans and project status.
</LI>
<LI><B><A CLASS="wikipage" HREF="Wikif099.html">Monthly Conference Calls</A></B> WTP conference call schedule, agenda, and minutes.
</LI>
</UL>
<P>
<h2>Related Eclipse Projects:</h2>
<UL>
<LI><B><A CLASS="external" HREF="/xsd/">XSD</A><img class="outlink" src="images/out.png" alt="" width="6" height="6" /></B> XML Schema Infoset Model.
</LI>
<LI><B>WSVT</B> Web Service Validation Tools.
</LI>
<LI><B><A CLASS="external" HREF="/gmt/">GMT</A><img class="outlink" src="images/out.png" alt="" width="6" height="6" /></B> Generative Model Transformer (MDA).
</LI>
</UL>
<P>
<h2>Developer Resources:</h2>
<UL>
<LI><B><A CLASS="external" HREF="/mail/main.html">Mailing Lists*</A><img class="outlink" src="images/out.png" alt="" width="6" height="6" /></B> Place to get involved in the development of the WTP.
</LI>
<LI><B><A CLASS="external" HREF="http://dev.eclipse.org/viewcvs/index.cgi">CVS Repository*</A><img class="outlink" src="images/out.png" alt="" width="6" height="6" /></B> Web Interface to WTP Source Code.
</LI>
<LI><B><A CLASS="wikipage" HREF="Wiki0dd8.html">Reference Documentation</A></B> Information for integrating with the WTP.
</LI>
<LI><B><A CLASS="wikipage" HREF="Wikidd6a.html">Designer Documentation</A></B> Documents written by developers for developers.
</LI>
<LI><B><A CLASS="wikipage" HREF="Wiki1789.html">Project Structure</A></B> WTP Project Structure.
</LI>
<LI><B><A CLASS="wikipage" HREF="Wikiaed0.html">Contributing to the WTP Project</A></B> What's involved in developing & contributing enhancements or new capabilities for the WTP
</LI>
</UL>
<P>
<h2>Style Guidelines:  </h2>
<UL>
<LI><B><A CLASS="external" HREF="http://dev.eclipse.org/conventions.html">Coding Conventions</A><img class="outlink" src="images/out.png" alt="" width="6" height="6" /></B> Eclipse community, commonly adopted coding conventions.
</LI>
<LI><B><A CLASS="external" HREF="/articles/Article-UI-Guidelines/Contents.html">UI Guidelines</A><img class="outlink" src="images/out.png" alt="" width="6" height="6" /></B> Eclipse community, commonly adopted &quot;look and feel&quot; guidelines.
</LI>
<LI><B><A CLASS="wikipage" HREF="Wiki96a4.html">User Documentation</A></B> Contributing documentation to the WTP.
</LI>
<LI><B><A CLASS="wikipage" HREF="Wikie006.html">Unit Tests</A></B> Creating unit tests for your WTP code.
</LI>
</UL>
<P>
<P>
<I> * Bug report, Mailing lists, and CVS repository infrastructure will be made available after project creation</I>
      <P> <I>J2EE is a trademark of Sun Microsystems, Inc.</I> </p>



















    
  



</div>
</div>
<?php
	# Paste your HTML content between the EOHTML markers!	
	$html = ob_get_contents();
	ob_end_clean();

	# Generate the web page
	$App->generatePage($theme, $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html);
?>
