<!-- 
	This document is provided as a template along with some guidance for creating
	your project proposal. This is just a template. Feel free to change it as
	you see fit (add sections, remove section). We feel, however, that the
	suggestions represented in this document represent the reasonable minimum
	amount of information to move forward.
	
	Please keep the formatting in this document simple. Please do not edit 
	this document in Microsoft Word as it adds huge piles of markup that make
	it difficult to restyle.
	
	More information is available here:
	
	http://wiki.eclipse.org/Development_Resources/HOWTO/Pre-Proposal_Phase
	
	Direct any questions about this template to emo@eclipse.org
 -->

<html>
<head>

<!-- 
	Include the title here. We will parse it out of here and include it on the
	rendered webpage. Do not duplicate the title within the text of your page.
 -->

<title>XWT</title>
</head>

<!-- 
	We make use of the 'classic' HTML Definition List (dl) tag to specify
	committers. I know... you haven't seen this tag in a long while...
 -->

<style>
dt {
	display: list-item;
	list-style-position: outside;
	list-style-image:
		url(/eclipse.org-common/themes/Phoenix/images/arrow.gif);
	margin-left: 16px;
}

dd {
	margin-left: 25px;
	margin-bottom: 5px;
}
</style>

<body>
	<p>
		The XWT project is a proposed open source project under the <a
			href="http://www.eclipse.org/projects/project_summary.php?projectid=technology">Technology
			Container Project</a>.
	</p>

	<!-- 
	The communication channel must be specified. Typically, this is the
	"Proposals" forum. In general, you don't need to change this.
 -->
	<p>
		This proposal is in the Project Proposal Phase (as defined in the
		Eclipse Development Process) and is written to declare its intent and
		scope. We solicit additional participation and input from the Eclipse
		community. Please send all feedback to the <a
			href="http://www.eclipse.org/forums/eclipse.proposals">Eclipse
			Proposals</a> Forum.
	</p>

	<h2>Background</h2>

	<!-- 
	Optionally provide the background that has lead you to creating this project.
 -->
	<p>The Graphical User Interface (GUI) is the visible part of the
		software. It really consists of the gate through which business
		features are made available and it reflects the application quality.
		Designing the visual composition and temporal behavior of GUI is an
		important part of software application programming. Eclipse supports
		only UI programming in Java. This solution presents several drawbacks:</p>
	<ul type="disc">
		<li>High technology prerequisite as UI developer</li>
		<li>Difficult to separate UI appearance and business logic</li>
		<li>Poor reusability</li>
		<li>Limitation of the dynamic UI support</li>
		<li>Very hard to integrate with develop tools</li>
	</ul>
	<p>Declarative UI is a new programming paradigm on UI, which is
		widely used in Web application development. Declarative UI should be a
		foundation solution to resolve these problems. Some of them can be
		resolved directly, and some of them need a tool built on top of this
		framework such Visual Editor, Modeling tool.</p>
	<p>The project e4 has taken a good initiative to incubate such
		technology by developing the component, known as XWT. In fact, XWT is
		designed to provide a foundation solution with XML Object dynamic
		mapping solution defined in a mature Open Specification. This solution
		has proved the usability and furthermore, it demonstrates the
		following benefits:</p>
	<ul>
		<li>Rapid Development</li>
		<li>Easy Maintenance</li>
		<li>Easy form validation</li>
		<li>Reusability</li>
	</ul>
	<p>
		Now, it is proposed that XWT graduates progressively in an independent
		project to increase the visibility and to prevent any confusion with <a
			href="http://www.eclipse.org/e4/">e4</a>.
	</p>

	<h2>Scope</h2>

	<!-- 
	All projects must have a well-defined scope. Describe, concisely, what
	is in-scope and (optionally) what is out-of-scope. An Eclipse project
	cannot have an open-ended scope.
 -->
	<p>
		The purpose of this framework is to provide the functional declarative UI in XML for eclipse plugin and RCP application.
			Precisely, it just provides a thin XML serialization to define the UI specially over the existing Eclipse UI components such as SWT, JFace, DataBinding etc.. 
</p>
	<h2>Description</h2>

	<!-- 
	Describe the project here. Be concise, but provide enough information that
	somebody who doesn't already know very much about your project idea or domain
	has at least a fighting chance of understanding its purpose.
 -->
	<p>XWT uses the most all Eclipse tools to archive the UI
		Presentation modeling and code generation. The most important tool is
		the modeling transformation engine. Several engines are used in
		different Eclipse projects:</p>
	<ul>
		<li>SWT</li>
		<li>JFace</li>
		<li>Data binding</li>
		<li>eclipse forms</li>
	</ul>
	<p>A first integration with eclipse workbench 3.x/4.x has been
		implemented.</p>
	<p>
		XWT has been bundled in <a
			href="http://www.eclipse.org/modeling/mdt/papyrus/">Papyrus</a> to
		define the Properties View for each UML element. And <a
			href="http://www.eclipse.org/windowbuilder/">WindowBuilder</a> has
		provided the visual edition capability for XWT.
It has been used by <a href="http://www.eclipse.org/pmf/">PMF</a> to valid the MDE solution for eclipse in a prototype.</p>

	<p>It is expected that the user community for this component will
		consist primarily of developers, given that it is essentially a
		foundation for building UI modeling tools.</p>
	<h2>Why Eclipse?</h2>
<p>XWT introduces a new UI development paradigm for Eclipse based on XML. By design, it separates the UI description XML with business logic in programming language. Thurefore, it provides a new capability of UI computing processing. Precisely, XWT simplifies the tools development such as Visual edition, MDE and model transformation engine.</p>
<p>XWT is designed for eclipse and only for eclipse. It is more convenience for users if this component is hosted in Eclipse Labs. Users can access the sources, docuementation and bug tracking via Eclipse infrastructure.</p>
<h2>Initial Contribution</h2>

	<!-- 
	Projects are expected to arrive at Eclipse with existing code.
	
	Describe the existing code that will be contributed to the project. Please provide
	a couple of paragraphs describing the code with modest detail, including important
	information like code ownership (who holds the copyright?), and some consideration
	of community that exists around the code. Include a listing of third-party libraries 
	and associated licenses.
 -->
<p>
		The component has been developed in <a
			href="http://www.eclipse.org/e4/">e4</a>. All codes are hosted in
		this project.
	</p>

	<p>
		The team of initial committers will migrate the solution from <a
			href="http://www.eclipse.org/e4/">e4</a> and integrate the new
		project in eclipse continue integration system first, and then
		collects and explores new requirements for the future development.
	</p>
	<h2>Legal Issues</h2>

	<!-- 
	Please describe any potential legal issues in this section. Does somebody else
	own the trademark to the project name? Is there some issue that prevents you
	from licensing the project under the Eclipse Public License? Are parts of the 
	code available under some other license? Are there any LGPL/GPL bits that you
	absolutely require?
 -->

	<h2>Committers</h2>

	<!-- 
	List any initial committers that should be provisioned along with the
	new project. Include affiliation, but do not include email addresses at
	this point.
 -->

	<p>The following individuals are proposed as initial committers to
		the project:</p>

	<dl>
		<dt>Yves Yang, proposed project lead</dt>
		<dd>Yves is an e4 committer who worked on the initial
			implementation of XWT.</dd>
		<dt>Thomas Guiu, committer</dt>
		<dd>Thomas is an EGF committer who contributes on the initial
			implementation of XWT.</dd>
		<dt>Erdal Karaca, committer</dt>
		<dd>Erdal is an e4 contributor who worked on the initial
			implementation of XWT.</dd>
	</dl>

	<p>We welcome additional committers and contributions.</p>

	<!-- 
	Describe any initial contributions of code that will be brought to the 
	project. If there is no existing code, just remove this section.
 -->

	<h2>Mentors</h2>

	<!-- 
	New Eclipse projects require a minimum of two mentors from the Architecture
	Council. You need to identify two mentors before the project is created. The
	proposal can be posted before this section is filled in (it's a little easier
	to find a mentor when the proposal itself is public).
 -->

	<p>The following Architecture Council members will mentor this
		project:</p>

	<ul>
		<li>John Arthorne</li>
		<li>Kenn Hussey</li>
	</ul>

<h2>Interested Parties</h2>

	<!-- 
	Provide a list of individuals, organisations, companies, and other Eclipse
	projects that are interested in this project. This list will provide some
	insight into who your project's community will ultimately include. Where
	possible, include affiliations. Do not include email addresses.
 -->

	<p>The following individuals, organisations, companies and projects
		have expressed interest in this project:</p>

	<ul>
		<li>Soyatec</li>
		<li>Thales</li>
		<li>Google</li>
		<li>CEA</li>
		<li>Total Resource  Management</li>
		<li>Angelo zerr</li>
		<li>Lai, Winnie</li>
		<li>Istvan Benedek</li>
		<li>Al Johnson</li>
	</ul>
	<ul>
	  <li>Papyrus</li>
	  <li>WindowBuilder</li>
	  <li>PMF</li>
</ul>

<h2>Project Scheduling</h2>

	<!-- 
	Describe, in rough terms, what the basic scheduling of the project will
	be. You might, for example, include an indication of when an initial contribution
	should be expected, when your first build will be ready, etc. Exact
	dates are not required.
 -->
	<p>The development plan of this project would be aligned with
		Eclipse 4.3 plan. The first community technical release is scheduled
		at autumn 2012 and the final release is targeted in June 2013.</p>
	<h2>Changes to this Document</h2>

	<!-- 
	List any changes that have occurred in the document here.
	You only need to document changes that have occurred after the document
	has been posted live for the community to view and comment.
 -->

	<table>
		<tr>
			<th>Date</th>
			<th>Change</th>
		</tr>
		<tr>
			<td>08-09-2012</td>
			<td>Document created</td>
		</tr>
	</table>
</body>
</html>