The Munich MPS Meetup 2018: my impression
Last week, I went to the Munich MPS Meetup 2018 (see agenda), intended for practitioners to learn about what other are doing with MPS and how. My key takeaways of this event are as follows.
I think the most important remark was by Eugen Schindler of Océ who got a bit ruffled by remarks along the line of “MPS is just another tool”. According to him — and other and I agree wholeheartedly — MPS is foundational technology going beyond being a mere link in the chain of tools. Instead, MPS (or more broadly: DSL technology) should replace or front-load other tools that only address certain concerns and usually in an incomplete, and unsafe way.
Eugen and Hristina Moneva put the money where the mouth is by showing (off, one might even say) what they are doing with MPS at Océ: impressive stuff, where they indeed augment the whole development process of industrial printers with a well-architected set of mature DSLs. If you feel you’re hitting an adoption barrier of sorts, check out their presentation for some inspiration.
Another observation was that we need/want “MPS on the Web”: almost every speaker alluded to this, or even had this on an explicit wish list. Luckily, itemis is building Convecton, which is not a direct port of MPS but focusses on defining projectional editors that work on the Web, using MPS to do the definitions. Markus Voelter didn’t really show Convection during his keynote, but suffice it to say that the community is eagerly awaiting the results.
Finally, I was quite enthused by Niko Stotz’ work on interpreters, and especially combining an interpreter defined in MPS with Truffle/Graal: this could mean you’d only have to an interpreter for your language once, and Truffle/Graal would execute that interpreter at almost the speed of compiled code! This is important, since an interpreter is often enormously useful to have inside your modeling environment, but you also need to ensure that its semantics are equivalent to that of the “official” semantics in the form of generated and compiled code.
This is a “classic” problem in the field of DSLs, with much meta-discussion about what semantics are and how to define it — often without any practical outcome. Niko’s idea means that — at least for interpreters written using his MPS interpreter language — you only have to write the interpreter and have that performant enough for production uses. Unfortunately, he showed only very little concrete details so I’m stoked to hear more in the future.
This was my first time attending a JetBrains event, and I would like to thank JetBrains for organising it. According to the organisers, JetBrains is planning to organise more meetups — maybe even 2 more this year. I can recommend going there, not only to broaden the community but also to learn about the what and why (and relatively less about the how) of using MPS and DSL technology.