Mendix is a development environment based on a number of generic modeling languages. The meta model for these languages has originally (10 years ago!) been implemented in C#. Over the last few years the functionality of Mendix is broadening, for example with an Open Model SDK and a Web Modeler. As a result of this, there has been a need to use the meta model at more and more places and in more and more different technologies.
To guarantee consistency between all usages of the meta model Mendix decided several years ago to make the meta model explicit (move it out of C#), and formalize it. From this formal model the different usages of the meta model is now being generated in many different forms like e.g C#, JSON, TypeScript, documentation, visualizations, and Scala.
As a result old, handwritten, code is being removed from the code base, and new functionality (like the fore mentioned SDK) can be added relatively quickly. Changing any of the generated artefacts can be done much quicker than when changing the handwritten equivalent ensuring that Mendix can remain agile in its own development.
This presentation shows how this formalization was done, which choices have been made and why. It also shows some of the changes in the way of working of Mendix R&D, and will show some specifics of how we are using Xtext (and working arounds its restrictions) to develop the meta model tooling.