I personally don't see MOF suitable for constructing Domain-Specific Modeling languages. First, all those cases I'm aware trying to use the standard MOF as a basis of their tools have ended up implementing something else, calling it XMOF, EMF, MOF-like etc. Why this happens if there is a good standard? Using names of standards might be enough for marketing people but inadequate in the reality. When looking for interchange of models for example, the details matter (look how well XMI works among different UML tools ;-(.
Secondly, MOF covers only part of the language specification needed for tool implementation; we need to define also model correctness rules, concrete syntax (notation), tool behavior (toolbars, dialogs, browsers etc), model reuse rules, how to share the DSM language for developers, how to update models made when the language change and evolved etc.
Thirdly, MOF lacks some basics and is simply too complex. At least last time I looked at the standard there wasn’t even support for n-ary relationships. Also support for inheritance among metatypes, e.g. relationships like associations is not adequately supported. You get some hard figures of the complexity side by looking at Eclipse based UML implementations: 5000 man-days to get UML tool support (Ströbele, OOP, München, 2005). Doing that with a true DSM tool takes 5 days! Dr. Dobb’s had an article on DSM tools howing a true DSM tool (MetaEdit+) to be 2000 times faster than EMF and GEF. It would be great to get some figures for example from implementing UML with other metamodel-based tools. Do anyone have such? To make it easier we can exclude metamodel sharing and its maintenance with model upgrades (reflections back to design models made with the earlier metamodel version) and focus on initial implementation only.