blob: 7d5ad06f50dcfbd46b61c3fc36a17f857aa96fef [file] [log] [blame]
<!--
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>Scout</title>
</head>
<body>
<p>The Scout project is a proposed open source project under the
<a href="http://www.eclipse.org/technology/">Eclipse Technology
Project</a>.</p>
<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.scout">Scout</a>
Eclipse Forum.</p>
<h2>Background</h2>
Business application developers face many recurring requirements.
Implementing these should not require a significant amount of time.
Instead, developers should be able to concentrate on understanding and
implementing business cases.
<p>
The Scout framework substantially reduces development time for fully SOA and
J2EE compliant solutions in the following areas:
<ul>
<li>Client Server Communication</li>
<li>Defining Interfaces for third party applications (server- and client-side)</li>
<li>Data binding</li>
<li>Implementing and layouting screens</li>
<li>Support of a common CICD (Corporate Identity Corporate Design)</li>
</ul>
In addition, architecture driven issues are addressed:
<ul>
<li>Integration of existing applications</li>
<li>Support of SOA and usage of services</li>
<li>Ensure a common architecture over a company's application landscape</li>
<li>Facilitate the exchange of developers across different projects</li>
</ul>
<h2>Scope</h2>
<!--
The goal of the Scout framework is to support developers with tooling and
features to implement business applications.
-->
<!--
What is covered by Scout:
<ul>
<li>An application model that definition of the any type of business application.</li>
<li>Exchangeable client server communication including a reference
implementation based on the http(s) protocol.</li>
</ul>
-->
This proposal covers two main parts: Scout and Scout SDK, both are realized as
fully compliant Eclipse plugin set.
An overview of the application building process with the Scout framework is
provided below. For more detailed information also see our
<a href="http://wiki.eclipse.org/scout">Scout wiki</a>.
<p>
<b>Scout</b> provides an application model, a reference implementations, and
utilities proven to be useful for business application development.
Main aspects included in Scout are listed below:
</p>
<ul>
<li>Scout application model supporting a clear and simple definition of
business applications.</li>
<li>Abstract UI component model including implementations
for its Swing and SWT/JFace representations.</li>
<li>Exchangeable client server communication.
A reference implementation using the HTTP(S) protocol.</li>
<li>Remote service infrastructure. Calls to services do not assume a specific
location (client or server).</li>
<li>Client notification for communication from the server to the clients</li>
<li>Support for integrating 3rd party libraries and applications</li>
</ul>
<p>
The <b>Scout SDK</b> provides the tooling to build/manage applications based
on Scout.
This is achieved by generating pure Java code.
Main aspects included in Scout SDK are listed below:
</p>
<ul>
<li>Wizard support for managing the Scout application model.</li>
<li>Real time synchronization of the application model and the generated Java
application code.</li>
<li>Tooling for providing/consuming web services, implementation of
application services, and multi-language support.
</li>
<li>Build and launch support for Scout applications.</li>
</ul>
<p>
Out of scope for this proposal:
</p>
<ul>
<li>Scout does not provide a persistence layer. The Scout data transfer
objects (DTOs) represent the link to a percistence layer.</li>
<li>Scout is not a GUI builder. The Scout client manages the mapping from the
application model to a specific UI implementation depending on the
UI plugin representation that is shipped with the application.</li>
</ul>
<h2>Outlook e4</h2>
<p>
Several concepts from Eclipse e4 are already integrated in the Scout framework
such as a fully OSGi service oriented architecture (no singletons) and the usage of a
UI independ application model (analog to the e4's <code>IPresentationEngine</code> concept).
</p>
<p>
The Scout application model will become an extension of the e4 workbench model and include
the UI component layer (e.g. <code>SmartField</code>, <code>TextField</code>, <code>TableField</code>, &hellip;).
Based on e4 and Scout users may create complete and sound application models (EMF).
</p>
<h2>Description</h2>
<img src="ScoutGlossar1_1.png" />
<h3>Scout</h3>
<p>
Scout is the base of applications that may be developed with or without the Scout SDK.
Scout applications are built on top of the Scout runtime layer.
Maintenance of such applications and maintenance of the Scout runtime layer is
only loosely coupled as illustrated in the diagram above.
</p>
<p>
As Scout is written in pure Java/J2EE and satisfies the OSGi paradigm, integration of
3rd party libraries or applications is fully supported.
The Scout runtime both provides a large amount of reusable functionality and a library
of abstract UI component models.
</p>
<p>
The extension point registry is reused to define Scouts extension points.
An Eclipse compliant extension point defines the UI representation of every component model.
This simplifies adding and changing of specific component representations as well as the
application representation.
With a Swing and a SWT/JFace representation Scout already provides two UI implementations.
</p>
<p>Functionality overview:</p>
<TABLE BORDER="1">
<TR>
<TH>Topic</TH>
<TH>Description</TH>
</TR>
<TR>
<TD>Architecture</TD>
<TD>Sound and correct SOA architecture. Client- and server-side SOA.</TD>
</TR>
<TR>
<TD>Communication</TD>
<TD>Exchangeable communication layer with a HTTP(S) implementation.</TD>
</TR>
<TR>
<TD>Services</TD>
<TD>J2EE session safe service registries and the ability to remote a service. Service calls look equal on both client and server side.</TD>
</TR>
<TR>
<TD>Internationalization</TD>
<TD>Multi language support, number, date and currency formats.</TD>
</TR>
<TR>
<TD>Components</TD>
<TD>Approx. 35 main UI components cover most requirements of real live business applications. Both Swing and SWT/JFace representations are available.</TD>
</TR>
<TR>
<TD>Session Context</TD>
<TD>Enables J2EE backend session handling.</TD>
</TR>
<TR>
<TD>Client Notification</TD>
<TD>Inverse communication (from server to client).</TD>
</TR>
<TR>
<TD>Extensions</TD>
<TD>The ability to extend the framework in functionality and behaviour through the Eclipse extension mechanism.</TD>
</TR>
</TABLE>
<h3>Scout SDK</h3>
Scout SDK is an Eclipse plugin set that boosts developer productivity in building
complete applications. Examples of such applications are:
<ul>
<li>Standalone rich client platforms (Equinox, SWT/Swing)</li>
<li>SOA/ESB node consisting of J2EE with service registry and web services (Equinox)</li>
<li>Rich client platforms with a J2EE Backend (Equinox, SWT/Swing)</li>
</ul>
Scout SDK operates on top of both the Eclipse JDT/PDE model.
Scout SDK guides the developer in building Scout based SOA compliant applications.
Instead of implementing the same patterns of an application again and again,
Scout SDK helps to reduce development time by offering tooling and outline views to
navigate the application.
As a consequence, developers can focus their work on the business logic of the application.
In the background Scout SDK takes care of the sound architecture and complete structure
of the Java project.
<p>The result of a solution developed with Scout SDK is a pure Java solution consisting of one or more Equinox/Eclipse based applications. </p>
<p>Functionality overview:</p>
<TABLE BORDER="1">
<TR>
<TH>Topic</TH>
<TH>Description</TH>
</TR>
<TR>
<TD>Application Model</TD>
<TD>Wizard support to add/remove/modify the application model. Drag and drop support.</TD>
</TR>
<TR>
<TD>Template Support</TD>
<TD>Reuse enriched components. Create a template of forms.</TD>
</TR>
<TR>
<TD>Internationalization</TD>
<TD>Editor to browse, create, and edit multilingual application texts. </TD>
</TR>
<TR>
<TD>Extensions</TD>
<TD>The ability to extend Scout SDK to manage new components or add new SDK functionality on existing components.</TD>
</TR>
<TR>
<TD>Build and Launch</TD>
<TD>Support to export the application and launch both server and client in the context of the SDK.</TD>
</TR>
</TABLE>
<h3>Relationship with other Eclipse Projects</h3>
Scout applications are pure OSGi based Java/J2EE project.
Therefore, any Eclipse project may be reused in Scout applications.
Eclipse projects with a significant dependency to this proposal are listed below.
<p>
<TABLE BORDER="1">
<TR>
<TH>Project</TH>
<TH>Description</TH>
<TH>Impact</TH>
</TR>
<TR>
<TD><a href="http://www.eclipse.org/projects/project_summary.php?projectid=eclipse.pde">PDE</a></TD>
<TD>The Plug-in Development Environment provides tools to build Eclipse plug-ins, fragments, features, update sites and RCP products.</TD>
<TD>Scout SDK strongly depends on PDE and uses functionality provided by PDE including the plugin model.</TD>
</TR>
<TR>
<TD><a href="http://www.eclipse.org/projects/project_summary.php?projectid=eclipse.jdt">JDT</a></TD>
<TD>The Java Development Tools project provides the tool plug-ins that implement a Java IDE supporting the development of any Java application, including Eclipse plug-ins.</TD>
<TD>Scout SDK strongly depends on JDT and uses functionality provided by JDT such as the type and compilation unit abstraction.</TD>
</TR>
<TR>
<TD><a href="http://www.eclipse.org/projects/project_summary.php?projectid=rt.equinox">Equinox</a></TD>
<TD>The Equinox project represents a first class OSGi community and fosters the vision of Eclipse as a landscape of bundles.</TD>
<TD>Scout applications are fully OSGi compliant. The Equinox implementation is used on both the client and the server side.</TD>
</TR>
<TR>
<TD><a href="http://www.eclipse.org/projects/project_summary.php?projectid=birt">BIRT</a></TD>
<TD>Business Intelligence and Reporting Tools is an Eclipse-based reporting system for web applications.</TD>
<TD>Scout SDK support for BIRT is scheduled. Currently, BIRT functionality may be integrated in Scout applications without Scout SDK tooling support.</TD>
</TR>
<TR>
<TD><a href="http://www.eclipse.org/projects/project_summary.php?projectid=rt.riena">Riena</a></TD>
<TD>The Riena platform provides a foundation for building multi-tier enterprise client/server applications.</TD>
<TD>Riena and Scout have evaluated their impact to each other. A friendly co-existence is intended and
a common interest in the development of components useful to both projects has been identified.</TD>
</TR>
<TR>
<TD><a href="http://www.eclipse.org/projects/project_summary.php?projectid=rt.ecf">ECF</a></TD>
<TD>Eclipse Communication Framework. Supports the development of distributed Eclipse-based tools and applications.</TD>
<TD>The Scout project evaluates the ECF project to use as a communication framework.</TD>
</TR>
<TR>
<TD><a href="http://www.eclipse.org/projects/project_summary.php?projectid=rt.rap">RAP</a></TD>
<TD>Rich Ajax Platform. The RAP project enables developers to build rich, Ajax-enabled Web applications.</TD>
<TD>Scout SDK RAP support is scheduled. Currently, a demo Scout application that uses RAP is available.</TD>
</TR>
<TR>
<TD><a href="http://www.eclipse.org/projects/project_summary.php?projectid=rt.swordfish">Swordfish</a></TD>
<TD>Swordfish provides an extensible SOA framework based on the proven Eclipse Equinox runtime technology.</TD>
<TD>The Scout project is evaluating Swordfish to orchestrate business process on the BEPL standard.</TD>
</TR>
<TR>
<TD><a href="http://www.eclipse.org/projects/project_summary.php?projectid=rt.eclipselink">EclipseLink</a></TD>
<TD>The Eclipse Persistence Services Project (EclipseLink) provides a complete persistence framework that is both comprehensive and universal</TD>
<TD>Scout project is evaluating to integrate EclipseLink as a standard persistence layer. Today EclipseLink and others are and can be used as a persistence layer. Currently, Scout SDK provides no tooling for the persistence layer.</TD>
</TR>
<TR>
<TD><a href="http://www.eclipse.org/projects/project_summary.php?projectid=modeling.emf">EMF</a></TD>
<TD>The Eclipse Modeling Framework project supports modeling and code generation for building tools and other applications based on a structured data model.</TD>
<TD>Starting with e4, the Scout application model will become an extension of the e4 workbench model.
</TD>
</TR>
</TABLE>
<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?
-->
<p>
Apart from dependencies to existing Eclipse plugins, the initial code contribution from
BSI AG relies on the availability of the following libraries. As part of the code contribution
review, BSI AG will also submit these for approval per the Eclipse development process.
</p>
<TABLE BORDER="1">
<TR>
<TH>Plugin</TH>
<TH>External Part</TH>
<TH>Licence</TH>
</TR>
<TR>
<TD>javax.mail</TD>
<TD>All</TD>
<TD>Sun Java</TD>
</TR>
<TR>
<TD>javax.mail.fragment.jre1_5</TD>
<TD>All</TD>
<TD>Sun Java</TD>
</TR>
<TR>
<TD>javax.mail.fragment.jre1_6</TD>
<TD>All</TD>
<TD>Sun Java</TD>
</TR>
<TR>
<TD>org.eclipse.scout.sdk.ant</TD>
<TD>Apache Ant</TD>
<TD>Apache Licence 2.0</TD>
</TR>
</TABLE>
<h2>Committers and Project Lead</h2>
<p>The following individuals are proposed as initial committers to the project:</p>
<ul>
<li>Matthias Zimmermann, Co-Lead (BSI AG)</li>
<li>Andreas Hoegger, Co-Lead, Committer (BSI AG)</li>
<li>Ivan Motsch, Committer (BSI AG)</li>
<li>Hannes M&uuml;ller, Committer (BSI AG)</li>
<li>Stephan Leicht, Committer (BSI AG)</li>
</ul>
<h2>Initial Contributions</h2>
Functionality described in this proposal will be provided by BSI AG.
The Community is asked for input on the existing code base, feature requests
for new functionality, and bug requests.
<h2>Mentors</h2>
<p>The following Architecture Council members will mentor this
project:</p>
<ul>
<li>Jochen Krause, Innoopract</li>
<li>Markus Knauer, Innoopract</li>
<li>Thomas Schindl, BestSolution.at</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 companies have
expressed interest in this project:</p>
<ul>
<li>compeople</li> <!-- gem�ss j�rgen wiesmaier, 6.1.10 -->
<li>EclipseSource</li> <!-- gem�ss jochen, 7.1.10 -->
<li>Weigle Wilczek</li> <!-- gem�ss joern, 8.01.10 -->
<li>Schlag &amp; Rahm</li> <!-- gem�ss mischa, 4.02.10 -->
</ul>
<p>The following individuals have
expressed interest in this project:</p>
<ul>
<li>Aleksey V. Zapparov</li>
<li>Gilles Iachelini, CSC</li>
<li>Benjamin Muskalla, EclipseSource</li>
<li>Frank Gerhardt, Gerhardt Informatics Kft.</li>
<li>Michael Pucher, affinis</li>
<li>Tonny Madsen, The RCP Company</li>
<li>Ricco Deutscher, Sopera</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.
-->
<ol>
<li>February-2010: Scout proposal under eclipse.org</li>
<li>March-2010: Provisional code in Eclipse repository</li>
<li>Mai-2010: Scout project status, code in Eclipse repository</li>
<li>2011: Scout as a formal part of the Eclipse release train</li>
</ol>
<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>30-March-2010</td>
<td>Updated list of interested parties</td>
</tr>
<tr>
<td>18-March-2010</td>
<td>Updated comments regarding Riena and list of interested parties</td>
</tr>
<tr>
<td>08-February-2010</td>
<td>Updated according to comments from Wayne Beaton</td>
</tr>
<tr>
<td>03-February-2010</td>
<td>Updated according to comments from Markus Knauer and Tom Schindl</td>
</tr>
<tr>
<td>21-January-2010</td>
<td>Updated according to comments from Wayne Beaton</td>
</tr>
<tr>
<td>07-January-2010</td>
<td>Updated according to comments from Tom Schindl, and Jochen Krause</td>
</tr>
<tr>
<td>05-January-2010</td>
<td>Document created</td>
</tr>
</table>
</body>
</html>