yesterday, I came across this blog post on domain modeling.
TL;DR -> The author was looking for a modeling tool to get an overview and tame the complexity of a microservice architecture, the services and their interfaces, etc.
After looking into UML, C4, and structurizr for Java, he decided to build his own tool, since none of the ones mentioned really addressed his needs. And, boom!, ony 15 months later he had his first prototype he wanted to share.
Now, I want to make sure that you understand I don’t want to mock the author in any way and I think what he has built is really pretty cool (he basically built a framework to define your own meta models and models using internal DSLs in groovy with nice visualization support).
But I couldn’t help and wonder why he didn’t consider using a language workbench. So I asked him, and he told me that, even though he didn’t mention it in his article, he looked into Xtext and MPS, but concluded that the learning curve for both himself and his eventual users would have been to steep.
I don’t blame him for this assessment, I don’t know how much time he actually had available in the 15 months it took him to implement his own solution, and I can certainly understand that the idea of building your own meta modelling framework might have been just too exciting to even consider an alternative, but what this example shows me is that there is still no “killer example” out there that could be considered a blueprint for people that start at a very similar point than the author of above article.
So, I sat down yesterday and used MPS to implement a (basic) language based on one of his meta models he shares in his repository.
Of course, I was able to just copy his meta model structure-wise, but I think it might still be a nice area to follow up on and create a tutorial and show step-by-step how easy it is to build a language like that with a language workbench.
Here is my current implementation.
Let me know what you think about this story and this particular use case to build languages for.