More on WebDSL and MoDSE

Thomas asks in response to my brief post on WebDSL:

Do you think that languages like this will be the Next Big Thing in web development world?

The MoDSE project that I’m working on has the belief that languages like this will not only be the Next Big Thing in the web development world, but in software engineering in general. We work with big companies such as Atos Origin, Getronics PinkRoccade and others that are also taking their first steps in this kind of software development. “This kind of software development” being model driven engineering.

The general idea is that we feel in software development you still work at a very low level. In web applications you still deal with request parameters, type checking them, handling sessions, writing database schemas. We want to abstract from all that and let you work at a higher level of abstraction. In MDE this is the general idea: come up with some language that offers you an as high level of abstraction as is suitable, then use this language to describe/build your software in. Then compile this high level language to the low-level language that you otherwise would have to code in. Of course the question is what is a suitably high level of abstraction, and how do you design and implement a compiler for such a (domain specific) language. Both these issues are things we’re researching in this project.

The “E” in MoDSE, stands for Evolution. Once you come up with a language to describe your applications in, how do you evolve your program. What if, for example, I would add a field to an entity in my WebDSL application. That would mean the database schema has to be adapted and still the current data should be retained. Adding a field is a simple one to solve; it becomes more difficult when you start moving fields, or renaming them. But this only one type of evolution, another is evolving the language itself. An example is syntax changes. In an old version of WebDSL an entity was described as follows:

SomeEntity {
title :: String

But then we decided it really needed a keyword:

entity SomeEntity {
title :: String

The result of this change was that all our old WebDSL software no longer compiled. We had to add the “entity” keyword everywhere. Ideally you would automate this process, your applications should evolve with the language.

Just some issues we’re looking at.