Once again, Code Generation
proved itself as the best European conference on Model-Driven Development. Lots
of smart people, lots of experience, lots of enthusiasm, lots of willingness to
listen and learn from others. Even though having to prepare and run some
sessions hampered me from seeing as much of the rest as I'd like, there's still
too much to write for one blog post. I'll post about things I'm certain of
first, and come back to things like Xtext and MPS after further investigation.
Keynotes
The two keynotes, both presented as a double act by me and
Markus Völter, seemed to go
down well. Mark Dalgarno had a surprise up his sleeve, presenting us with a
blind choice of weapons from a black bag. We then had to
duel it out, graphical DSM against textual DSLs, with the plastic gun and
dagger we picked. Since I got the gun, I think the result was a foregone
conclusion :-). The dagger may be a "weapon from an earlier, more civilized
age", but it's only useful if you can get in close to your adversary. Similarly,
text may be more familiar, but it does often tie you closer to the code; problem
domain DSLs in text seem as rare as accurate knife throwers. Markus successfully
stabbed me in the back later on, so that evened things up and emphasized the
point from our slides: both text and graphics are useful in the right place.
Choose, but choose wisely.
It was fun to see the keynote get picked up on Twitter:
EelcoVisser: keynote by @markusvoelter and Steven Kelly at #cg2009: great overview of issues in model-driven development
HBehrens: Steven Kelly at #cg2009 keynote: "wizard based generators create a large legacy application you've
never seen before"
The latter was picked up by several people. The reference was to
vendor-supplied wizards, often found in IDEs or SDKs, that create skeleton
applications for you based on your input. Since the vendors take pride in just
how much boilerplate they can spew out, you're left with a mass of generated
code that you've never seen before, but must extend with your own code. Worse,
you're responsible for maintaining the whole ensuing mixture, and there's no
chance of re-running the wizard to change some of the choices -- at least not
without losing or invalidating the code you've added. That's in sharp contrast
with generation in DSM, where your input is in the form of a model which you can
edit at any time. You get the speed of generation but can remain at a high level
of abstraction throughout.
MetaEdit+ Hands-on
We'd decided to try something special in the hands-on: building 5 different
graphical modeling languages from scratch in under 3 hours. Rather than being
random exercises, the languages were increasingly good ways of modeling the same
domain. We started with something that was basically just the current code
turned into graphics, and ended up with a language that reduced the modeling
work to a third of what it was at its worst, with many possible errors ruled out
by the language design and rules, and with much better scope for reuse. We
showed how to make generators for all the languages, and actually built them for
two. And of course since this was MetaEdit+, simply defining the metamodel
already gave you a full graphical modeling environment -- we just tweaked the
symbols to taste.
Never having run the session before, we were rather nervous about how much we
could achieve in the time available. In the end, thanks to great slides from
Risto Pohjonen and testing from Janne Luoma, it seems we pretty much hit our
target. Only at the very end of the last language did we have some people only
just starting the last section (the generator) while others were finishing it
and going on to beautify the symbols or play around with other fun features of
MetaEdit+. Hopefully people learned not just about MetaEdit+ as a tool, but also
how to make better languages and improve existing ones. Feedback online was
encouraging:
HBehrens: for me MetaEdit is the most sophisticated graphical modeling tool currently available #cg2009.
Thanks for this session!
PeterBell: Great metaedit hands on - built and refactored language and generator in just a couple of
hours at #cg2009
elsvene: been to a great hands-on session for MetaEdit+. Really interesting tool! #cg2009
Dinner
The conference dinner was of the high standard you'd expect from a Cambridge college. The airy hall and
contemporary art lent a friendly ambience. The large round tables weren't particularly conducive to
conversation: you could only really talk to the people either side of you without shouting or craning your
neck. On long tables you can reach 5 people for the same effort. I was fortunate to be sitting between Scott
Finnie and Jon Hurwitz, so I certainly didn't suffer.
The "suffering" started later, when there was a raffle in aid of Bletchley Park, the home of Allied code-breaking work in World War II.
I ended up
winning a prize donated by Microsoft: a screwdriver
toolkit and MSDN T-shirt, causing much hilarity and bad jokes about finally getting Microsoft tools that
didn't crash. The irony continued when Alan Cameron Wills won a signed copy of our Domain-Specific Modeling
book -- despite having received one from us last year. Either the older British segment of the audience were
most inclined to support Bletchley Park by buying raffle tickets, or then the draw was rigged to encourage
vendor co-operation. The people on my table were having none of that, and encouraged me to
cover up the
Microsoft logos :-). All in all a good laugh, and in a good cause.