Notational Flexibility - making progress
In a recent blog post
I talked about how MPS can render the same model in different ways, in the same editor. The examples was a statemachine rendered as text and a table. Over in the Eclipse Modeling world, progress is being made in a similar way. Here are some examples.
Jan Koehnlein has worked on, and blogged about
editing the same model with a graphical and a textual editor at the same time. Essentially this means that the GMF editor uses Xtext for serializing the model to a file. The typical usage is this: A meta model contains high level structures as well as fine grained details. As you define the GMF editor, you only create editor concepts for the coarse grained stuff. In the Xtext editor, you create a grammar for everything. What this means is this: you can for example edit a model completely textually. You can then open it in the graphical editor, which of course only shows (and lets you edit) the coarse grained elements. However, as you save the model back, the fine grained stuff you had added in the textual editor before is still there - it has been loaded by EMF, *not* modified by the graphical editor, and serialized back. So you can use this setup to "fill in the finer points" into a graphical model - making sure the graphical model is not polluted by all the details.
Nirmal Sasidharan showed me two other interesting things yesterday. One was a demo actually created by Jan where an Xtext editor is embedded into a GMF editor. Imagine you have a UML modeler and you want to edit the (say) set of attributes. You an click on the attribute compartment, and an in-place Xtext editor opens to let you edit the "textual content of a box". Very very nice.
The final thing Nirmal showed me is something he created recently, where he embedded an Xtext editor into an Eclipse Forms application. Imagine a forms-based business app, which some embedded DSL snippets. Very nice!
Notational flexibility, with appropriate tool support, is important. This is what the users of DSLs see and interact with. If you want to make domain experts use DSLs, you have to use *their* syntax.
Glad we're making progress!