Saturday, March 18, 2006

First Experiences with GMF

Eclipse GMF, the Graphical Modelling Frameworks will be one of the most important innovations for Model-Driven Development in 2006. It supports the (relatively) simple creation of graphical editors for Ecore-based metamodels. My view has always been that simplyfying the creation of "good" editors for your DSL is a much more pressing issue that coming up with fancy model-to-model transformation languages. So, GMF will be a big step in the right direction.

Currently, Milestone 5 of GMF is available. I have played around with M5 as well as M4 (thanks to some of my customers for being interesting in GMF and giving me the chance to "play" with it for a purpose :-)). Of course, there are still features missing and it is also a bit buggy, the overall impression is really good.

On the plus side, you can really easily come up with simple editors. The process is straigh forwards, once you understood the basic principles. You can build compartments (even nested ones), you can connect top-level elements as well as contained elements (you can even connect contained elements to top level elements), you can add labels, adapt the figures, define pallets, etc. The routing algorithms supplied with GMF are really not too bad, either.

There are, however, still a couple of problems when playing around with it (and yes, I fully realize that it's not finished yet, so this is not a complaint, it's just a description!). For example, the wizards that should come up with a good "default" editor in a couple of minutes didn't work well so we had to do the editors manually. Also, if you have a flaw in your model, the GMF generators might just silently crash without a notice or throw some (seemingly unrelated) exception. So, always make small changes (so you know what to undo to get it to work again), and sometimes you have to debug into the generator to see what it does. Also, some of the decorations you can add to your editor visual elements are simply ignored. A more important problem is that the documentation lacks some of the important use cases, e.g. explaining the extension points that allow you to add conditional decorations to your shapes. And by the way, in case you wonder, why the tutorial uses two levels of compartments in an introductory example: the reason is that it doesn't work with only one level :-) This looks like a funny bug, unless you try for an hour to go with only one level ("why start with the two-level, more complex example, anyway").

So, all in all, GMF looks very promising. What I would really see improved is the documentation. Yes, they have zillions of pages (taken from IBM's underlying framework), but what developers need is a kind of FAQ to answer typical questions such as: how do I add conditional decoration, how do I add an arrow to my line, how can I prepare a model before the editor is opened, etc. Maybe some of the GM folks read this.... if you need more FAQ-questions, let me know :-)

I've just started to deal with GMF too...

did you go any further with it?

Post a Comment

<< Home

back to

This is Markus Voelter's Blog. It is not intended as a replacement for my regular web site, but rather as a companion that contains ideas, thoughts and loose ends.

December 2005 / January 2006 / February 2006 / March 2006 / April 2006 / May 2006 / June 2006 / July 2006 / August 2006 / September 2006 / October 2006 / November 2006 / December 2006 / February 2007 / March 2007 / April 2007 / May 2007 / June 2007 / July 2007 / September 2007 / October 2007 / November 2007 / December 2007 / January 2008 / February 2008 / March 2008 / April 2008 / May 2008 / June 2008 / July 2008 / August 2008 / September 2008 / October 2008 / November 2008 / December 2008 / January 2009 / February 2009 / March 2009 / April 2009 / May 2009 / June 2009 / July 2009 / August 2009 / September 2009 / October 2009 / November 2009 / December 2009 / January 2010 / February 2010 / April 2010 / May 2010 / June 2010 / July 2010 / August 2010 / September 2010 / October 2010 / November 2010 / December 2010 / January 2011 / March 2011 / April 2011 / May 2011 / June 2011 / July 2011 / October 2011 / November 2011 / December 2011 / January 2012 / February 2012 / October 2012 / January 2013 /

You can get an atom feed for this blog.