Graphical Modeling Framework/FAQ
- 1 General
- 2 Runtime
- 3 Generation
What can I do with GMF?
Using GMF, you can produce graphical editors for Eclipse. For example, a UML modeling tool, workflow editor, etc. Basically, a graphical editing surface for any domain model in EMF you'd like. For some example eyecandy, visit the gallery.
How can I get started using GMF?
For the tooling side, the tutorial is a good place to start. For the runtime, which can be used without the tooling, an article posted here is a good place to get an overview. For more information, take a look at the documentation available on the download site.
What are the advantages of using GMF over just EMF and GEF?
This depends on what you are trying to accomplish. For full-featured graphical editors that require the rich capabilities of GEF working with an EMF domain model, GMF is a good option. But then, you may be interested in a lightweight implementation, read-only visualizations, etc. In fact, you may not even need GEF, as is the case with TPTP's visualization of profiling data. For an overview of the features and functionality you can achieve using GMF, look here. To get a sense of how the generative framework can get you going quicker, look here.
What is the relationship between semantic, domain, notation, and graphical definition models?
In general, the terms semantic and domain model are synonymous and refer to the information being visualized and edited. The information used to represent and persist the visual elements in the GMF runtime is referred to as the notation model. When defining the diagram nodes and figures for use in generating the graphical editor, the toolsmith works with a graphical definition model. This is similar to the notation model, but they are distinct. The graphical definition model is linked to the domain and tooling definition models using a mapping model, which is used to produce a generation model that is used to drive the code generation. Clear as mud? ;) A picture of the models and their workflow is found at the beginning of the tutorial.
How can I contribute to GMF?
The best place to start is by looking in Bugzilla. Either find a bug to work on, coordinating with a developer, or submit a patch for an enhancement. Participation in the newsgroup and mailing list is also encouraged, as is trying out builds and reporting bugs, feature requests, documentation, etc.
What is the release plan for GMF?
You can find our project plan posted here.
What does 'canonical' mean in the context of GMF?
As stated in the tutorial "Supporting Canonical Containers": Canonical is the terminology we use to describe a container that keeps its view of the semantic data synchronized with the semantic children. This means there is a complete view of all the semantic data which typically means a 1-1 relationship between the views and the underlying semantic objects. This behavior is necessary because in GMF there are two model layers, one for describing the notation elements on the diagram and another for the semantic model that the notation elements will reference. Please see the Programmers guide for more detailed information regarding GMF runtime architecture. Due to this two tiered model architecture there is need for management between the two layers if the user wants to see a full view of the semantic containment without having to manually create notation views for underlying semantic elements.
Can I use the runtime portion of GMF without the generation portion?
Yes. In fact, it was designed to be extended manually, or targed by a generation facility. Take a look at the provided documentation for examples, tutorial, API docs, etc. to get started.
Can the generation portion of GMF be customized? If so, to what extent?
The tooling side of GMF utilizes JET for code generation and can be customized accordingly. The plan is to allow for extension and customization, although at this stage of the project the focus is on providing generation to the provided runtime component.