blob: 79efd00ed854e9be2aab3411ee49b19d25027237 [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>EMF Facet</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;
}
</style>
<body>
<p>The EMF Facet component is a proposed open source project under the umbrella of the <a
href="http://www.eclipse.org/projects/project_summary.php?projectid=modeling.emft">Eclipse Modeling Framework Technology (EMFT)</a> project.
</p>
<p>
This proposal is in the Project Pre-Proposal Phase (as defined in the Eclipse Development Process document)
and is written with the goal to declare its intent and scope and to solicit additional participation and input from the Eclipse community.
You are invited to comment and/or join the project. Please send all feedback to the <a href="http://www.eclipse.org/forums/index.php?t=thread&frm_id=19&">EMFT</a> forum.
</p>
<h2>Background</h2>
<p>
The <a href="http://www.eclipse.org/modeling/">Eclipse Modeling Project</a> focuses on the evolution and promotion of model-based development technologies within the Eclipse community by providing a unified set of modeling frameworks, tooling, and standardsÂ’ implementations. EMFT is part of this Eclipse Modeling Project and is about incubating new technologies that extend or complement EMF.
</p>
<p>
Tools based on EMF use Ecore as a common standard to represent the data manipulated by the tool. Data is described in terms of a set of entities, attributes, relations and operations. Extending the data structure used by an EMF tool (e.g. adding a new entity, attribute, relation or operation) implies modifying its Ecore definition, and thus, changing its source code.
</p>
<p>
Extending existing EMF tools without changing their Ecore definition (and therefore, without requiring to change their source code) would facilitate their customization to fit specific needs. To allow for this kind of extension, EMF needs a mechanism to dynamically create viewpoints that extend and combine existing Ecore definitions without having to modify them. The viewpoint concept has been already singled out as a key requirement for defining an Architecture Ecosystem by the OMG Architecture Ecosystem Software Interest Group.
</p>
<h2>Scope</h2>
<p>This EMF Facet project aims to contribute a dynamic extension mechanism for EMF tools by introducing new viewpoints (or "facets") on their underlying data (i.e. existing models).
</p>
<p>
Some of the extension mechanisms we envision are:
<ul>
<li>Extending an existing metamodel (Ecore model) in a non-intrusive way by adding new types, attributes, operations and relations. New relations could be used to compose several models by linking their elements.</li>
<li>Computing an extension by executing queries against an existing model; queries will be implemented by making use of existing query mechanisms (e.g. considering Java, ATL, EMFQuery, Xpath, etc);</li>
<li>Virtualize the extension so that any EMF tool could use an extended model as a regular one.</li>
</ul>
</p>
<h2>Description</h2>
<p>EMF Facet project will provide components that could be used by all tools exposing a view on a model:
<ul>
<li>Navigation tools (browser, navigator, etc);</li>
<li>Graphical modeling tools;</li>
<li>Code or documentation generation (M2T) tools;</li>
<li>Model-to-model transformation (M2M) tools.</li>
</ul>
</p>
<p>
These tools could integrate EMF Facet and its viewpoint concept to facilitate, among many other aspects, the following tasks:
<ul>
<li>Highlighting some model elements depending on their properties;</li>
<li>Providing direct shortcuts between elements which are indirectly related through a complex path;</li>
<li>Manipulating several existing models as if it was a single model;</li>
<li>Reusing a subset of existing services developed for a metamodel (templates for generating code, validation rules, rendering directives, etc) as operations defined on the metaclass (Ecore type).</li>
</ul>
</p>
<p>
The same tool could need different viewpoints depending on the role of the tool user at a given time. Therefore, EMF Facet will provide a dynamic customization mechanism: viewpoints will be described with models that can be interpreted and dynamically applied without restarting the tool.
</p>
<h2>Initial Contribution</h2>
<p>Code has already been contributed to the Eclipse Modeling project, in the context of the MoDisco project (<a href="http://www.eclipse.org/gmt/modisco/">http://www.eclipse.org/gmt/modisco/</a>).
But since it does not depend on other MoDisco components, and should be generally useful as part of EMFT, the code will be appropriately refactored and moved. </p>
<p>
Here are the main MoDisco components which are candidates to be moved to the EMF Facet project:
<ul>
<li>QueryManager (<a href="http://wiki.eclipse.org/MoDisco/Components/QueryManager">http://wiki.eclipse.org/MoDisco/Components/QueryManager</a>)</li>
<li>FacetManager (<a href="http://wiki.eclipse.org/MoDisco/Components/FacetManager">http://wiki.eclipse.org/MoDisco/Components/FacetManager</a>)</li>
</ul>
</p>
<p>
Other MoDisco components, which are part of the ModelBrowser (<a href="http://wiki.eclipse.org/MoDisco/Components/ModelBrowser">http://wiki.eclipse.org/MoDisco/Components/ModelBrowser</a>) could be added after a refactoring.
</p>
<p>
An example is the UICustom extension that allows users to customize a metamodel by setting specific values for graphical features (color, font, icon, etc).
</p>
<p>
<img src="http://wiki.eclipse.org/images/f/ff/MoDiscoCustomizationEditor.png">
</p>
<p>
This component could be externalized to facilitate its reutilization by other tools (graphical modelers for example) and generalized to permit setting values for any kind of feature, even non-graphical ones.
</p>
<h2>Relationship with Other Eclipse Projects/Components</h2>
<p>The code has direct dependencies with the EMF API.</p>
<p>EMF already provides a way to define extension of existing metamodel implementations. However, as it is static, it is difficult to mix several extensions (they have to be merged) and reuse existing editors. The EMF Facet mechanism will provide an alternative, but complementary, way to dynamically define and provide such extensions.</p>
<p>These mechanisms could be consumed by projects such as <a href="http://www.eclipse.org/proposals/sphinx/">Sphinx</a> to provide extensibility for existing metamodel implementations and label decoration services for visualizing validation results.</p>
<p>EMF Facet could also be used by the <a href="http://www.eclipse.org/modeling/mdt/?project=mst">MDT/MST</a> project which has planned to implement a proof of concept for extensions to EMF as per the MOF Support for Semantic Structures RFP.</p>
<h2>Committers</h2>
<p>The following individuals are proposed as initial committers to the project:</p>
<dl>
<dt>Fr&eacute;d&eacute;ric Madiot (Mia-Software) - proposed project co-lead</dt>
<dt>Gr&eacute;goire Dup&eacute; (Mia-Software) - proposed project co-lead</dt>
<dt>Gabriel Barbier (Mia-Software)</dt>
<dt>Fabien Giquel (Mia-Software)</dt>
<dt>Nicolas Bros (Mia-Software)</dt>
<dt>Hugo Bruneli&egrave;re (INRIA)</dt>
<dt>Patrick Tessier (CEA-LIST)</dt>
</dl>
<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>Ed Merks</li>
<li>Kenn Hussey</li>
</ul>
<h2>Interested Parties</h2>
<p>The following individuals, organisations, companies and projects have
expressed interest in this project:</p>
<ul>
<li>Airbus (contact: Pierre Gaufillet)</li>
<li>Atos-Origin (contact: Rapha&euml;l Faudou)</li>
<li>CEA-LIST (contact: S&eacute;bastien G&eacute;rard)</li>
<li>INRIA-AtlanMod team (contact: Jean B&eacute;zivin)</li>
<li>Itemis (contact: Sven Efftinge)</li>
<li>Geensys (contact: Stephan Eberle)</li>
<li>Graphiti project (contact: Michael Wenz)</li>
<li>Mia-Software (contact: Fr&eacute;d&eacute;ric Madiot)</li>
<li>Obeo (contact: Jonathan Musset)</li>
<li>Olivier Moises</li>
<li>SAP (contact: Bern Kolb)</li>
<li>Sodifrance (contact: Yves Lennon)
<li>EMF Client Platform project (contact: Jonas Helming)</li></li>
</ul>
<h2>Participation</h2>
Critical to the success of this project is participation of interested third parties from the community.
We intend to reach out to this community and enlist the support of those interested in making EMF Facet a success.
We ask interested parties to contact the <a href="http://www.eclipse.org/forums/index.php?t=thread&frm_id=19&">EMFT forum</a> to express their interest in contributing to the project.
<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>20-04-2010</td>
<td>Document created</td>
</tr>
</table>
</body>
</html>