First Impressions of Oslo

  • Oct 29, 2008 at 2:59 AM
  • Shawn Wildermuth
  • 9 Comments

Url: http://msdn.microsoft.com/oslo

Silverlight Logo

I've spent a number of hours since I downloaded the Oslo SDK to look around. In this post I want to tell you what I've found out.

Oslo is a funny beast because its multi-layered. With only a couple of hours on its hard to even know if my assumptions are all correct. I am sure we'll see in comments if I am far off or not.

As I read stories about Oslo before I was able to look at actual bits, I felt confused. I heard two stories: "Oslo is about Modeling and Model Driven Development"; and "Oslo is about building Domain Specific Languages". So which is it?  Both.

I used to be "The ADO Guy" so lets start with the modeling:

Modeling Features

Oslo's Modeling Platform is a layered technology that is made up of several pieces:

  • Quadrant: A Visual Designer for flowchart-like models.
  • The "M" Language: A Textual DSL that supports creating your own system models or extending the built-in models.
  • "Oslo Repository": A Database for storing models to be used at design-time and runtime.

In the SDK that I have played with, Quadrant isn't included (it is in the Oslo Virtual PC that is on the PDC attendee hard disk) so I haven't had any opportunity to look at that. What I did spent time with what the "M" language and a simple editor for it that is included called "Intellipad". The "M" language allows you to define quite a lot about an application, but the only part I played with so far is the modeling of data. Using Intellipad I attempted to model some Video Games data that i've been playing with in demos and the Silverlight 2 workshop.  Intellipad simply lets me define the types including the data extents:

What is particularly interesting here is how the "M" language can be used to generate SQL scripts to create the storage.  In Intellipad we can show a panel that shows the generated SQL:

(Click for a larger view of the SQL)

This is enough to keep my interest. I like where this is going but until I can really see what Quadrant does its hard to see how this fits into the bigger picture. So now lets look at the Domain Specific Language underpinnings:

Domain Specific Language Features

Of even more interest to me is the infrastructure that they used to build the modeling features. The "M" language is actually a Domain Specific Language called "MSchema" built with the Oslo Domain Specific Language ecosystem. MSchema defines a "little language" that is used to define models. But how is MSchema defined?  It uses a lower level Domain Specific Language called MGrammar. MGrammar defines a "little language" for defining Domain Specific Languages. Beneath both of these is another language called MGraph that I haven't totally grok'ed yet. 

I haven't had time to try and build one but in the SDK is a cool small example called "Song". This small Domain Specific Language defines a "little language" that supports songs as a list of notes and rests, for example:

Music
- - - D
C C# F G
E E - D
A E - E
G F - E
D C D E
A E D D
D E A C

More importantly, we can use the MGrammar to define what this language is composed of:

In most other instances I've been pushed to think of Domain Specific Languages being build either in a language (usually something like Ruby with lots of Macro'ing) or in data structures (like JSON or XML) since both of these ideas allow for avoiding building my own parser. The Oslo stack changes this idea for me an really allows me to define small languages without the need for these scenarios.

You may be asking how Domain Specific Languages impact you as a developer though? I recently gave a talk at the Atlanta .NET Users Group to try and cement some of these ideas. My overarching idea is that by writing "little languages" that use the same semantics as the domain, we can 'code' the intent of users in a domain (e.g. a business) and then the domain's stakeholders can validate the 'code' since its written in the language of the domain. But that's a story for another post.  Understand that I see Domain Specific Languages as a powerful idea for everyday programmers, not just academic scenarios.

This is just a tiny taste, but so far I am incredibly intrigued by the possibilities of Oslo. In the coming months you can expect to hear quite a bit from me about this topic.  But I am no expert.  I started down this Domain Specific Language path by trying to read and study information on the topic. By far the best thing I ran across was this great video by Martin Fowler that everyone should watch...its well worth your time:

Since Martin Fowler is important in this space, I was thrilled to see he was shown a preview and had time to give his first impressions as well:

What do you think?

 

Comments

Gravatar

Fergal Breen Wednesday, October 29, 2008

Good unboxing of Oslo.

I was also very disappointed that Quadrant was not included. I read elsewhere that the Oz team were "pleased" to have met the PDC deadline for product release but I felt without Quadrant that claim was "butt saving" rather than factual.

That said, I too am fascinated by the opportunities that DSL via Oslo can bring to my coding and hope that Quadrant ships soon so I can visit Oslo from a demo app perspective and then consider real-world solutions.

Gravatar

Shawn Wildermuth Wednesday, October 29, 2008

Fergal,

In fact Quadrant is in CTP quality I am told, just that its only available to PDC people right now (I think it will require VS2010 which is why its on their VPC but I am not sure). I'd expect it to come soon.

Gravatar

Custom Logo Thursday, October 30, 2008

This is just a tiny taste, but so far I am incredibly intrigued by the possibilities of Oslo. In the coming months you can expect to hear quite a bit from me about this topic. But I am no expert.

Gravatar

Insider Friday, October 31, 2008

Shaun - apparently your guess about Quadrant depending on some other bits is right. I hear that Quadrant has some dependencies on other Microsoft bits that aren't CTP quality and can't be installed properly without some magic, so the VPC release was the only option for the PDC.

Gravatar

Colin Jack Friday, October 31, 2008

Good write up but I'm still puzzled by Oslo.

To me the most exciting part of DSL's is the idea we can take some of the DDD/domain model ideas even further by building DSLs on top of and around them. In a DDD sense taking the ubiquitous language even further than we can currently.

However this looks to be a totally data focussed approach where as a good domain model is as much if not more about behaviour as about data, and I'm not sure where this behaviour fits in.

Gravatar

Chris Sells Sunday, November 2, 2008

I'd like to hear more about what kinds of behavior you expect to see in Oslo modeling that you're not seeing. I'd love it even more if you started a discussion on this topic on the Oslo forum [1] so we can track it. Thanks!

[1] http://social.msdn.microsoft.com/Forums/en-US/oslo/threads/

Gravatar

Shawn Wildermuth Monday, November 3, 2008

I've created a thread there...

Gravatar

Colin Jack Monday, November 3, 2008

@Chris
I've posted up a thread. I'm not saying Oslo can't be used for behavior rich models, having not used Oslo I don't really understand its limits, however it has surprised me that all the models I've seen so far have been very anemic.

In fact the entities I've seen so far look like passive DTOs that other parts of the system work on, which matches the XSD analogy used in one of the PDC videos and other comments I've seen/heard.

However I'd definitely say that rich behavioral (perhaps DDD) models are a big improvement over that style and I'm wondering whether Oslo supports rich behavior models and if so where I can find examples?

Gravatar

John Monday, November 3, 2008

It would be great if the Oslo team could do a Podcast on Software Engineering Radio (SE-Radio.Net). Markus is a big proponent of MDSD/MDA and DSLs. The NDR episode that Box and Purdy did was ok, but it would be great to hear them interviewed by someone who is knowledgable in the field of MDA.


Leave a Comment

*
*
*