Pfheww.. it's already two days ago that I left Cambridge, after three days of model driven development information overload.
Language Workbench Competition Workshop 2011
On Tuesday, I chaired, together with my beloved egg timer, the first Language Workbench Competition workshop. In this workshop, as announced earlier in this workshop 10 presenters show cased how they addressed the same assignment.
The assignment summary, as taken from the documentation on the LWC web site reads:
This phase is intended to demonstrate basic language design, including IDE support (code completion, syntax coloring, outlines, etc).
- 0.1 Simple (structural) DSL without any fancy expression language or such.
- 0.2 Code generation to GPL such as Java, C#, C++ or XML
- 0.3 Simple constraint checks such as name-uniqueness
- 0.4 Show how to break down a (large) model into several parts, while still cross-referencing between the parts
This phase demonstrates advanced features not necessarily available to the same extent in every LWB.
- 1.1 Show the integration of several languages
- 1.2 Demonstrate how to implement runtime type systems
- 1.3 Show how to do a model-to-model transformation
- 1.4 Some kind of visibility/namespaces/scoping for references
- 1.5 Integrating manually written code (again in Java, C# or C++)
- 1.6 Multiple generators
Phase 2 is intended to show a couple of non-functional properties of the LWB. The task outlined below does not elaborate on how to do this.
- 2.1 How to evolve the DSL without breaking existing models
- 2.2 How to work with the models efficiently in the team
- 2.3 Demonstrate Scalability of the tools
Every LWB has its own special "cool features". In phase three we want the participants to show off these features. Please make sure, though, that the features are built on top of the task described below, if possible.
All of the presenters showed that they were capable of completing phase 0 and phase 1 of the assignment, i.e. creating a basic language for entities, properties and relationships. From these, code generation to a 3rd party language of choice and splitting up (entity) models into smaller models also proved to be no problem for the participants. The main difference was the effort required to get things done, depending on the user interface and modeling paradigm applied by the different tools. It is obviously quite different to enter a metamodel (and use it) in a text oriented tool than it in a graphical or projection environment. With two truly graphics oriented workbenches (Obeo Designer and MetaEdit+), three projectional workbenches (MPS, Intentional Workbench and The Whole Platform) and five text based solutions (Xtext, Rascal, Spoofax, OOMEGA and Essential) we had a nice mix of what is possible in this area.
Issues like scalability and working in teams were addressed in different manners and level of detail in the presentations, mainly due to the hard constraint that presentations should last no longer than 40 minutes including questions. Only two of our speakers managed to not get caught mid-sentence by the egg-timer.
Overall, my personal impression was that we had put together a nice, workable assignment, that was - although simple at first sight - not something to neglect. The tutorials published on the LWC web site are proof of that - some run up to 150 pages in PDF format. I would encourage anyone looking for a good comparison or tutorial to check out said page, and learn from it. We will be publishing complimentary videos of all presentations, as well as a short summary video online within the next 2-3 weeks, so that everyone can enjoy the results of this great workshop. Meanwhile, have a look at the blogs by Johan den Haan, Markus Völter and Marco Brambini, the MD* Examiner or the Twitter archives.
Also, in an extra session during Code Generation 2011 on Thursday, we collected ideas from the audience (after having Mats Helander and Christian Merenda give a 15 minute demo of what they did for the workshop) for a new workshop some time next year. This should provide us with a new assignment and hopefully another good workshop. One thing is for sure though - in the short term we will drop the term Competition and switch to Challenge or Comparison instead, which are better monikers for what we did, do and will continue to do.
Participants of the LWC11 workshop - posing on the Murray Edwars patio
Code Generation 2011
After this energizing workshop, and a great dinner at Indian restaurant Café Naz in Cambridge, it was time for Code Generation 2011. Here, we found the usual crowd of Model Driven Development practitioners, but also quite a lot of new faces. The audience seems to grow a little bit every year, and those who don't come back are replaced by new faces, while it is clear from dicsussions and greetings that Code Generation regulars stay in touch with each other outside the conference as well. I would consider that a good development, for which we may thank Mark Dalgarno and his team at Software Acumen and the Model Driven Software Network. This year I was only able to be present the first two days of the conference, and keeping an eye on the Twitter feed made me feel sorry to have missed the third day while it was still in progress.
At the conference this year, I was present and listening on a number of presentations, on different topics and with different messages.
Ian Goodsall (Raytheon) presented a comparison between Visual Studio and Eclipse, not so much targeting language developers, but more addressing the needs of modeling language user. Not a usual suspect at Code Generation conferences, this does show that after all the technical bits and detais we need to start/keep caring about those who actually use the MDSD solutions we love so much.
Bernhard Merkle (SICK AG) treated us to a penalty shoot out between textual language workbenches. Similar to the LWC11 workshop, he decided to not have a winner, but rather focus on the different aspects addressed by the various tools. Nice comparison, I hope the results will appear online - he referred to a paper he wrote on this for which I have not yet found a link.
Juha-Pekka Tolvanen (MetaCase) chaired a panel with Pedro Molina, Jos Warmer and Johan den Haan (the consultant, the inhouse developer and the tool vendor) on who should own DSLs and generators - the developer, the customer or the tool vendor. This lead to some interesting discussions, including one where Markus Völter and Andrew Watson alsmost took over the panel and started discussing the (in)sanity of standardization of modeling languages. A nice effort, with many opinions and (if I recall correctly - cg2011 really was a case of information overflow) no generic answer to the question posed by the panel title.
Markus Völter (independent) then treated us to a tutorial on Type Systems, using his favourite tools MPS and XText to show how to implement them. A lightning fast presentation, which may require some additional reading for those new to the topic. From me, the most important thing to remember here is that Type Systems help you prevent user errors, and that their support is available in many modern language workbenches, not just MPS.
Johan den Haan (Mendix) was the only presenter of a lightning talk on Wednessday, and spend 10 minutes presenting why he things model driven development and version control don't have to be foes, but can actually be very good friends. Mendix seems to have a working solution for that in their tool, with sufficient ideas for others to create something similar. Contrary to the nature of lightning talks, this lead to a one hour follow up discussion.
On Thursday, we starte with the first key note presentation of the conference, by Terence Parr, the father of ANTLR. A good choice for a keynote, it had been a while since someone actually showed to be proud of being so lazy that they automate their own work. Years ago my first manager told me that the best developer would fulfill a three week task by spending two weeks writing a tool that would do the work for him in the third week. Terence is one of those. An inspiring talk, which made me feel like getting back to work right away.Luckily I didn't, because there was more to come.
Stefano Butti and Emanuele Molteni (WebRatio) did a nice tutorial on their language and code generation environment for web developers. The tool contains a graphical language that allows one to define web site structure, flow and persistence. Seems akin to WebDSL, but taking the graphical rather than the textual approach. This is one tool that I will check out some time soon. Their colleague Marco Brambini was sitting next to me, and we seem to share quite a bit of ideas on how to do model driven development. Who knows what that will bring in the future....
After lunch, we used a time slot that became unexpectedly available (Heiko Behrens and Peter Friese were not able to get to Cambridge, due to the Icelandic ash cloud) to allow people who weren't there a look at the LWC workshop. After I rehashed the introduction of the workshop, Christian Merenda (OOMEGA) and Mats Helander (Intentional) presented their LWC demos in even more condensed form (15 minutes), once again controlled by the egg timer. After that, we collected quite a bit of ideas for a new LWC assignment from the audience (thanks all!) so that we can continue to next year.
Marko Boger (University of Applied Science Konstanz) presented his ideas on creating graphical DSLs, using his tool Poseidon for DSLs and Xtext to create the bridge between the textual and graphical world. His search for a new framework, in order to become Eclipse based, led him to Graphiti. The need to create textual DSLs and related generators for creating graphical editors using Graphiti resulted in possibly the first future Eclipse Modeling project born at LWC: Spray. Results to be presented next year at Code Generation 2012? I also attended the follow up Birds-of-a-Feather session end of the day, where this project was born. Since some developers involved have to be freed up from other tasks, anyone interested in this project and willing to invest is hereby invited to contact the project owners.
The last presentation I attended (before the BoF and my departure from Code Generation 2011) was by Jos Warmer (Independent) and Wim Bast (Modeling Value Group). They presented a case study on building a language and code generation environment for an insurance product line. An interesting projects, where domain standards, regulations and modern software engineering come together. Jos has now also become one of the owners of the Spray project mentioned above, because the (Graphiti based) solution Wim and he presented may become the basis for the DSLs to be developed in that project.
Once again, I had a good and useful time at Code Generation, and will be back next year. Thanks to Mark, Jacqui and Nick for the splendid organisation!