DIME Landing Page is Online

In March I wrote about a new project called DIME (Dynamic web application Integrated Modeling Environment), which enables to create full-fledged web applications via a family of GDSLs (Graphical Domain-Specific Languages), with an additional textual representation. It is the beginning of a development style, where technical experts and application experts (e.g., business experts) can work together on one artifact. The underlying idea of the approach is, that the different types of modeling languages (for data, control, and user interface) are interdependently connected and describe the application completely, so that they can be full code generated to a ready-to-use web application. Everything that cannot be captured adequately on the model level, can be integrated in a service-oriented fashion via so called native components.

At the end of that post I announced a DIME landing page, created with this very tool. Now a first version is online, which is responsive and shows already a few dynamic features, like internationalization (you can choose between english and german in the menu) and a comment form, where you can leave your first impressions. But please be kind, the Add Comment-process informs us about new comments and we can delete rude commments in the private area (all generated). The site is work in progress, we will update it with new features, more information, news on public events, and projects where DIME has been used. Further on, we will add a download section as soon as time has come for going public with DIME.

We already have some nice demo applications like a TODO-App as well as a “Reddit”-Clone, which will ship with the DIME installer. Just last week we held a DIME workshop on STRESS’16 co-located to ISoLA 2016 conference.

So please, take a look at the DIME landing page, leave a comment, and stay tuned for more to come.

Exciting, 😉.

Interview with Dr. Jan Köhnlein on Xtext, Xtend, Xcore, FXDiagram, and TypeFox

Dr. Jan Köhnlein is one of the founders of TypeFox, the moving force behind Xtext, Xtend, and FXDiagram. This is a very extensive follow-up interview to this one. Thanks again to Jan!

Dear Jan, thank you very much for your time. I really like the ecosystem around Xtext, Xtend, Xcore, Xbase, and EMF. I think it is one of the most-disrupting decisions (in a positive way) that, starting from 2.9.0, you address more than just the Eclipse platform! But with this new approach and your all new company TypeFox (as well as the spin-off from itemis), some questions arise…

Read More

Dealing with Scoping/Validation in XText 2.9.x

In my last post I described how to cope with generic types in a meta model regarding the scoping mechanism of XText. This post is about the oddities (not meant in a bad way) of XTexts object creation strategy.

Let us take the entity model example from my last post and refine it a little bit. Since we are creating a textual DSL (domain-specific language) and not a GPL (general-purpose language), we would like to add (further) abstractions to our language. Therefore, we do not use the language itself to describe collection types, but integrate it into the language. In contrast, in Java a List is an interface with several implementations like LinkedList and ArrayList. They are all implemented in Java and not part of the language features itself. Of course, there are some general-purpose languages like Python, which integrate collections directly into the language, or others like Google Dart which semi-integrate them via syntactic sugar, but still have implemented them as normal classes. But this is not the point here: We would like to integrate collections as a concept into our language…

Read More

Scopes in XText 2.9.x with XCore and Generics

This post is about some juggling with technologies in the EMF ecosystem, namely XText and XCore. Consider a small (and not completely realistic) DSL for defining entity types (like the introductory grammar example of the XText documentation). Often there are two different kinds of types in such a language:

  1. primitive/native types, provided by the system, e.g., String, Integer, Boolean, …
  2. composite/complex types, which have been modeled in the language and can have attributes of primitive type or refer to other complex types

So we might model these variants of properties as Attribute for primitive types and Association for complex types…

Read More