The EMF Facet component is a proposed open source project under the umbrella of the Eclipse Modeling Framework Technology (EMFT) project.
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 EMFT forum.
The Eclipse Modeling Project 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.
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.
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.
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).
Some of the extension mechanisms we envision are:
- 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.
- 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);
- Virtualize the extension so that any EMF tool could use an extended model as a regular one.
EMF Facet project will provide components that could be used by all tools exposing a view on a model:
- Navigation tools (browser, navigator, etc);
- Graphical modeling tools;
- Code or documentation generation (M2T) tools;
- Model-to-model transformation (M2M) tools.
These tools could integrate EMF Facet and its viewpoint concept to facilitate, among many other aspects, the following tasks:
- Highlighting some model elements depending on their properties;
- Providing direct shortcuts between elements which are indirectly related through a complex path;
- Manipulating several existing models as if it was a single model;
- 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).
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.
Code has already been contributed to the Eclipse Modeling project, in the context of the MoDisco project (http://www.eclipse.org/gmt/modisco/). 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.
Here are the main MoDisco components which are candidates to be moved to the EMF Facet project:
- QueryManager (http://wiki.eclipse.org/MoDisco/Components/QueryManager)
- FacetManager (http://wiki.eclipse.org/MoDisco/Components/FacetManager)
Other MoDisco components, which are part of the ModelBrowser (http://wiki.eclipse.org/MoDisco/Components/ModelBrowser) could be added after a refactoring.
An example is the UICustom extension that allows users to customize a metamodel by setting specific values for graphical features (color, font, icon, etc).
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.
Relationship with Other Eclipse Projects/Components
The code has direct dependencies with the EMF API.
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.
These mechanisms could be consumed by projects such as Sphinx to provide extensibility for existing metamodel implementations and label decoration services for visualizing validation results.
EMF Facet could also be used by the MDT/MST project which has planned to implement a proof of concept for extensions to EMF as per the MOF Support for Semantic Structures RFP.
The following individuals are proposed as initial committers to the project:
- Frédéric Madiot (Mia-Software) - proposed project co-lead
- Grégoire Dupé (Mia-Software) - proposed project co-lead
- Gabriel Barbier (Mia-Software)
- Fabien Giquel (Mia-Software)
- Nicolas Bros (Mia-Software)
- Hugo Brunelière (INRIA)
- Patrick Tessier (CEA-LIST)
The following Architecture Council members will mentor this project:
- Ed Merks
- Kenn Hussey
The following individuals, organisations, companies and projects have expressed interest in this project:
- Airbus (contact: Pierre Gaufillet)
- Atos-Origin (contact: Raphaël Faudou)
- CEA-LIST (contact: Sébastien Gérard)
- INRIA-AtlanMod team (contact: Jean Bézivin)
- Itemis (contact: Sven Efftinge)
- Geensys (contact: Stephan Eberle)
- Graphiti project (contact: Michael Wenz)
- Mia-Software (contact: Frédéric Madiot)
- Obeo (contact: Jonathan Musset)
- Olivier Moises
- SAP (contact: Bern Kolb)
- Sodifrance (contact: Yves Lennon)
- EMF Client Platform project (contact: Jonas Helming)
ParticipationCritical 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 EMFT forum to express their interest in contributing to the project.
Changes to this Document