Microsoft has released the Microsoft Tools for Domain Specific Languages Technology Preview, a graphical designer for Visual Studio that enables its users to build modelers for custom meta-models. The terminology used by MS seems strange to me; it somehow feels like they try to avoid calling it meta-modeling just to differ from the OMG approach. To me, domain specific languages (DSLs) pretty much equal (textual) programming languages — although you can call a meta-model a language, it seems a little strange to me. Whatever.
I believe that meta-modeling (or DSLs if you prefer) are definitely the way to go. In the same way that there is no single software (or system, or service) architecture that will be a good match for every situation, there will be no single modeling language that is a good fit for every need. If you’ve read stuff I wrote before, you’ll know that I believe that this is more than just an analogy; in fact I believe that your modeling language needs to match your architecture. And while with the current crop of CASE tools, UML’s profiling mechanism (stereotypes and tagged values) are a pragmatic approach — and one that we at innoQ are applying ourselves rather successfully —, it’s obviously not something that one would do if there were better options and tools. (As an aside, I strongly believe that all CASE tools suck. I would be happy to be proven wrong.)
Once upon a time, I used to believe the OMG shared the vision of modeling based on custom meta-models — after all, what MS now claims as its innovation is something that is very much aligned with the original MOF concept. Sadly, though, with OMG’s ridiculous monster of a modeling language that aims to be everything to everybody, this seems to be no longer the case. (If anybody needs proof that Tim Bray is right in asserting that standards bodies should never invent anything, and is tired of using another well-known monster to do so, UML 2 would be a great candidate.)
So in the end, it seems to come down to MOF in its sort-of-working semi-compatible non-standardized incarnation (EMF), embedded into Eclipse, vs. Microsoft’s proprietary DSL stuff, embedded into Visual Studio. And the strangest thing is: I’d rather place a bet on something that is backed by eclipse.org than on an OMG standard nobody gives a fuck about. Care for another example? Take this.