A Lap Around "Oslo"

Pretty sad actually. I'm sitting here with Alex Thissen and Dennis van der Stelt on my left. All three of us blogging the same stuff ;)

Douglas Purdy and Vijaye Raji are about to lap us around Oslo.

What is a model?

Basically it's a description of given domain.

  • Drawings (models used to communicate with others; dataflow, use case, ..)
  • Model-assisted (models used to understand or manipulate code; static structure, sequence, ..)
  • Model-driven (models executed by the runtime, HTML, CSS, XAML, BPEL)

Model-driven platform

pic

According to Don Box we're making the sort of progression in which we try to solve the impedance mismatch between humans and code COM+, .NET 1.0, webServices, .NET 3.0. Currently we're at the landmark at which we tend to deliver build software which increasingly uses declarative constructs.

It's not only the programming languages and tools focusing on DLS's. Applications often come with textual or graphical DLS to manage and maintain facets of the applications.

Why is this happening?

  • Transparency (better understanding)
  • Flexibility (faster changes)
  • Productivity (more essence, less ceremony)

What is Oslo: The platform for model-driven applications

  • "M" (the language for authoring models and DSL's)
  • "Quadrant" (the tool for interacting with models and DSL's, aimed at developers)
  • Repository (the database for storing and sharing models)

Language, tool and repository

Microsoft recognizes we're living in a model-driven world and is building this technology to bring their products forward. They did the same with OLE back in the days, and are determined to do the same with Oslo. According to Microsoft textual DLS's are the biggest thing to happen in programming looking forward.

Key Oslo concepts

pic2

M Example

module Microsoft.Samples
{
  type MusicItem
  {
    Id: Integer64 = AutoNumber();
    Album : Text;
    Artist : Text;
    Rating : Integer32 where value <= 3;
  } where identity Id;

  MusicLibrary :MusicItem*;
}

With M-schema to database you can, in two steps (m-compiler and the mx-tool) translate this code to T-SQL and add it to the repository. With a standard data tool such as excel you can view this data.

module Microsoft.Samples
{
  MusicLibrary
  {
    album = " Four;
    Artist = "Led Zeppelin";
    Rating = 3;
  }
}

This code-snippet is enough to write data to the repository and query it using excel. This is called concrete syntax.

With M-grammar you can translate arbitrary uni-code characters into structure data.

"Led Zeppelin" is awesome!

This is a simple way to write textual DSL's using M. The current tooling supports syntax highlighting. In the future the editor will support symantic analysis and intellisense.

We get to see a sneak peek of quadrant consisting of generic viewers you can see as a series of bundled controls. Stock views are provided out of the box which can be used to create your own editors. Quadrant also has a data flow engine which provides the multiple views of data and updates it accordingly. It also has a nice canvas that can pan, zoom, etc to process the information in a visual way. The same underlying system is used to customize the visualizer and language.

We've now seen a custom model, textual-DSL and visual DSL, next up is a custom runtime. This is done by transforming the same textual-DSL syntax as seen above into an XML-DSL. Creating a runtime is as simple as reading the XML file into an ASP.NET page with a datagrid component. Incredible!

This technology will be applied to WPF, the cloud, etc. Microsoft is modeling the Microsoft world.

Oslo value is one model driven architecture applied to Microsoft particular domains, we can use for our clients and their domains. In the CTP there are about 500 models to review and learn from. The tooling currently also supports debugging your own domain-specific languages.

Development domains

Web (ASP.NET with "MWeb"), services (WCF/WF ("Dublin") with "MServices" , entities (Entity Framework with "MEntity") and database (SQL with "MSchema").

What could a domain-specific language for a service look like? Look an shiver...

module Service25
{
  service Service
  {
    operation Echo(str : text) : Text
    {
      .UriTemplate = "echo/{str}";
      WriteLine { Text = "Message : " + str }
      return str;
    }
  }
}

Years ago I dreamt on this blog to be able to write domain-driven design constructs directly into our language. public class Customer {} or public class CustomerRepository {} now becomes entity Customer and repository Customer {}. Guess this is the time to say "we can"!

Two announcements

  • Public "Oslo" SDK CTP
  • "M" language specification to be released under open specification promise (OPS)

This means that anyone can implement the M language. Microsoft is going to work hard to have third parties and open source communities to implement this particular language and have a rich ecosystem around it. Microsoft want's this to become as large as XML today is.

How to get ready for Oslo

  1. Use model-driven runtimes (WPF, WF, etc)
  2. use XML or a database to drive applications or services
  3. Embrace model-driven assisted development VSTA, DSL Toolkit, ..)

5 Comments

  • Thanks alot! Awesome post. I'm looking forward to find posts about the other Oslo sessions, too.

  • Hi Paul, when will "Public "Oslo" SDK CTP" be ready to download? It looks interesting in this context.

  • One's real value first lies in to what degree and what sense he set himself.

    -----------------------------------

  • -----------------------------------------------------------
    "Well it feels like this web site is relatively sizzling, congratulations for the proprietor! I attempt to examine as considerably as possible on-line when I've additional time. Unfortunatley it is beginning to be the norm for men and women to spend all working day on the web instead of of truly dwelling, what a disgrace. All the exact same, carry on while using excellent creating anyhow.!!!.leastwise the flocks can have selection content material to feed thier dying minds. Maybe its ideal off, the common people arn't fairly good at any rate."

  • "Why are there no considerably far more such facts internet sites? Your content material are fantastic and appear in themes, which usually are not capable to be identified anyplace. Be sure you continue creating these kinds of wonderful stuff, it might be really useful. The web is total of amazing waste, as a single is delighted in situation you come across a thing else. Why usually are not there much more? Don't leave me hanging!"

Comments have been disabled for this content.