I’ve been engaged in some debate in the last few days with Jean-Jacques Dubray and Doug Purdy with regard to Oslo. See:

http://www.ebpml.org/blog/182.htm

http://www.douglaspurdy.com/2009/04/09/where-is-oslo-going-part-ii/

Jean-Jacques has questioned aspects of Microsoft’s strategy. Following some issues with posting anything but the shortest of comments on the ebPML web site, I’ll follow Doug’s lead and post a response here.

I strongly agree with Jean-Jacques’ statement that ‘M3 exists’. It seems a little strange to feel the need to state this emphatically, but the existence of M3 has sometimes been challenged. Today, ‘Oslo’ does little to call out or underline the existence of M3. ‘Oslo’ really isn’t expressed in terms of ‘classic’ metamodel architecture. I would expect this to be unnerving to some people in the MOF community, and my interest, in a previous post, has been to attempt to show that, despite appearances, there is actually an underlying and solid foundation of common ground between OMG specifications and Oslo. There is also a lot of history to this.

It seems to me that multiple metamodel layers exist regardless of technology or specification. However, the degree to which we need to express them within any given context, and the way we choose to do so, is absolutely a matter of pragmatics. I’m schooled in the old linguistic philosophy that languages (including modelling languages) are built on the ‘trinity’ of syntax, semantics and pragmatics. It is these three areas that Oslo so directly calls out and emphasises. To date, it has, if anything, overly-separated these distinct concerns and I suggest that a lot of the feedback Microsoft has received from the CTP is, in reality, asking them to look for more effective and practical interaction between these different aspects of their emerging technology. These requests are absolutely driven by pragmatic considerations. So, while I appreciate Jean-Jacques’ comments about pragmatics, I think that this is potentially the area of greatest strength in terms of what Microsoft is doing. If they get it right (and there is no guarantee of that), they will succeed in providing a set of tools that add real and significant value to their platform and support far more effective use of models in both architecture and development.

In terms of the technology, Oslo offers one language – ‘M’, founded on graph theory and expressed through MSchema and MGrammar. M is designed to be used at any level within a metamodel architecture. I’ve always found it difficult to imagine any practical need for M4 or above, but I guess you could extend this indefinitely! What Microsoft doesn’t do in the current CTP is to provide any pre-canned M3 meta-metamodels (actually, that is not entirely true – there is the beginning of some M3 support in the repository). Given that they plan to deliver fulsome support for UML, and have committed themselves publically to XMI, and given their OMG membership, it is possible that we might even see Microsoft exploit MOF. If they don’t do this, themselves, it will only be a matter of time before others do within the Oslo ecosystem. What I don’t expect to see is any attempt to promote MOF as a one-size-fits-all M3 specification in the world of Oslo. That should not be interpreted as some conspiratorial (and completely pointless) attempt to undermine well-accepted standards. It is simply the natural consequence of remaining agnostic with regard to the number of metamodel layers needed, pragmatically, within any given context.

Jean-Jacques engages is an interesting argument about ‘defining M3 properly’ for implementational purposes. There is a lot in what he is saying. MOF was originally bound to CORBA IDL, and Microsoft’s RTIM (an ancient specification that was roughly equivalent to MOF) was similarly bound to COM IDL. The first thing that happened when Microsoft put their specifications into the hands of a standards organisation was that RTIM was rejected as being too proprietary. Similarly, but more positively, the OMG has rigorously decoupled MOF 2 from CORBA. Jean-Jacques is, I think, suggesting that MOF still fails to adequately handle the kind of impedance mismatches that can occur when creating bindings to very different run-time representations. I will leave it to others to argue the finer points of MOF, but in terms of Oslo, the stated intention is to reduce the barrier between models and runtimes to the point of near-invisibility. The Oslo goal is to promote the direct consumption of models (including metamodels and meta-metamodels) within a wide variety of runtimes. No doubt, as Oslo evolves, we will see the advent of tooling and technologies that help developers to build the widest variety of model-driven run-times. I have a suspicion that XAML will end up being central to much of this effort.

To summarise, M3 is always there in some sense, but doesn’t always need to be represented explicitly within a given context. Microsoft’s historic experience of building multi-level metamodel architecture and repository technology strongly indicates that if you try to force explicit representation of M3 on your development and ISV communities, they will often ignore what you offer. Oslo does not require MOF compliance or any alternative, but is perfectly capable of supporting this as required. The ability to bind model representation at any appropriate layer of a metamodel architecture to runtime environments in a thoroughly pragmatic fashion is likely to be a core decider in terms of Oslo’s future success.

I’ll take this opportunity to share an initial attempt I made earlier this year to relate, rather broadly, the core ’M’ language artefacts to multi-level metamodel architecture and also to the ’syntax-semantics-pragmatics’ trinity. This diagram is entirely of my own making and is in no way ’official’ (I don’t work for Microsoft). One major weakness is that it suggests a highly repository-centric emphasis in regards to pragmatics. In reality, I expect that the use of the repository will only be one of many aspects of pragmatics. Consider, for example, the role of MGraph is enabling pragmatics at the M0 layer or, indeed, the use of ’Quadrant’. This diagram is very much a work in progress and I will wait until future iterations before revisiting and refining this. Another issue is that, on the left-hand side, I have suggested the existence of MSchema and MGrammar grammars. These may not necessarily be made public by Microsoft, but do appear to exist.