The problem when you develop a tool is that you can never imagine all the possible extensions that the final user will really want. That's why EMF Facet proposes a solution to extend existing Ecore metamodels without having to modify them.
The idea is to provide non-intrusive mechanisms to add new features (types, attributes, operations and references) to a metamodel and to customize the existing features by adding extra properties (icons, labels, etc.)
These mechanisms are based on a query abstraction framework order to use all kinds of queries independently of their implementation language (Java, OCL, ATL, JXPath, etc.)
The core service offered by EMF Facet is the capability to abstract the notion of query. The EMF Facet Query Abstraction framework aims:
The facet feature is the main feature of EMF Facet. This feature offers the possibility to virtually (at runtime) extend existing meta-models and models. In many cases, we want to add additional attributes, references or operations on a model without modifying it or its meta-model, for instance when we are not the author of the meta-model or when the model cannot be recreated with a new version of the meta-model. That's why the goal of EMF Facet is to provide a non intrusive extension mechanism. The other property of EMF Facet is to provide the capability to load and unload the extension without having to re-open the model (or worse: restart Eclipse).
The customization feature provides a way to add UI annotations on a meta-model. This is useful to describe the customization of a model renderer/editor. This customization framework is extensible to allow the model editor developers to declare properties which are specific to their editors.
EMF Facet provides a set of customizable widgets which can be configured using EMF Facet customizations. Those widgets can be used to build your own customizable model editors.