Microsoft Has Released “Oslo” May 2009 CTP

| by Abel Avram on May 28, 2009. Estimated reading time: 4 minutes |

Major features of “Oslo” May 2009 CTP are: “Quadrant”, a visual modeling tool, changes of the “M” language specification and the addition of predefined domain models to speed up development.


“Quadrant” has suffered major changes from its initial form as previewed during PDC 2008. It has two related purposes:

[“Quadrant” is a] tool for browsing and editing data, including entity model data. “Quadrant” features new ways to view and explore data. Collections can be viewed using through table, tree, or list viewers. Individual entities can be viewed with property viewers, or list viewers. The data viewing experience is created by switching from one viewer to another at any time. Exploring data is accomplished by dragging and dropping items from a viewer onto the workspace.


“Quadrant” is a graphical tool for viewing, editing, and exploring data found in any SQL Server database. A user can connect to an arbitrary number of SQL databases, and open multiple windows (called workpads) for viewing and editing data in connected database sessions.

Types created with the “M” language are not necessarily tied to a specific storage space, but the default extent is created on an SQL 2008 database server. Consequently, “Quadrant” allows users to view and edit both the entity models and the underlying SQL database tables.


The “M” and MGrammar language specifications have been merged into one spec called the MGrammar Language Specification which includes the SQL Mapping Specification.

Other notable new features are:

  • The scope-resolution operator :: that explicitly scopes an identifier to a module.
  • The about() keyword that queries the catalog for data about "M" declarations
  • You can reference external functions using extern, for instance: extern PreDefinedFunction() : Integer32;
  • There's a new MGraph Object Model (also known as the AST API) for working with grammars dynamically. We have a big write-up for that on the way, so stay tuned.

One important breaking change in the language is the change of the binding operator from ‘=’ to ‘=>’. Being a functional language, the assignment operator ‘=’ created confusion so it has been deprecated. As a result,

Person {   
   John { Name = "John", Age = 25}


Person {   
John { Name => "John", Age => 25}


The Intellipad has a quicker start-up and is generally faster. Also, it offers “the ability to pop up the member completion IntelliSense using Ctrl-Space, just as in Visual Studio.”


The most important change is the addition of five modules containing predefined domain models written in “M”. These models can represent a starting point for developers who do not want to start from scratch. The pre-existing modules, stored as SQL schemas, are:

  • Base Domain Library (BDL). This domain set (which consists of the Repository Schema, Repository.Item Schema, and System.Globalization Schema modules in “M” – SQL schemas in the “Oslo” repository) contains models that you can use to support the separation of logical data access (views, in SQL Server 2008) from physical storage (tables); establish Folders, which can be used to secure data access and version schemas and data; establish efficient ID patterns for data; support globalization; and control auditing and other security features in SQL Server 2008. The BDL defines storage extents and utilities for several commonly occurring kinds of data that can be referenced from other domains as well as a set of domain-neutral types and functions that can be incorporated into the definition of other domains. The image file is
  • System_Runtime. The common language runtime (CLR) domain targets the Microsoft implementation of the ECMA CLI specification. It contains the schema of the metadata of a .NET Framework assembly and is installed as the System_Runtime SQL schema. With the CLR loader (LoadAssembly.exe) that is also provided with the “Oslo” SDK, you can load metadata from your own .NET assemblies into the code name “Oslo” repository to examine .NET metadata across a product, a division, or potentially an entire enterprise. The image file is
  • Microsoft.Uml2. The Microsoft.Uml2 domain targets the Object Management Group’s Unified Modeling Language™ (UML™) specification version 2.1.2; it is installed as the Microsoft.Uml2 SQL schema. UML 2.1.2 models in the Object Management Group’s XML Metadata Interchange (XMI) version 2.1 file format can be imported into the code name “Oslo” repository with the UML loader (LoadUml.exe) that is included with code name “Oslo” modeling technologies. The UML model is work-in-progress that shows approach and direction; it is not a complete implementation of the UML specification. The image file is
  • System.Identity. The System.Identity module exists to support applications such as directories which are concerned with storing, searching, and retrieving information (called claims) about physical and digital subjects and resources that can be uniquely identified. At the highest level, the System.Identity schema is about entities called Parties that have PartyToPartyRelationships. Parties include People, Organizations, Groups, Devices, and Software Services. There are also special relationships called Roles that one party can play for another. Parties and Roles have IdentityKeys, or unique names in multiple dimensions issued by Authorities and described in Tokens. They also have (potentially multiple)Locations. Parties access Resources according to Policies. The instances in all these Extents can be specialized through a system of Kinds. In addition, Parties can be arbitrarily extended without schema changes through PartyAttributes. Since information about physical and digital subjects transcends conventional use in directory applications, federating subject and claim information to the code name “Oslo” repository is an important goal.
  • Language.Catalog. The Language.Catalog module represents a structured representation of an “M” program, also called the “M” semantic graph. The schema for the catalog is written in “M”, and the compiler can generate instances of a “M” program into that schema.

Useful links: Oslo Content on InfoQ, “Olso” May 2009 CTP Download, Release Notes, Developer Center, “Oslo” Downloads, Oslo Forum.

Rate this Article


Hello stranger!

You need to Register an InfoQ account or or login to post comments. But there's so much more behind being registered.

Get the most out of the InfoQ experience.

Tell us what you think

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread

Data-centric? by Michael Hedgpeth

I see the data, but where's the behavior? Isn't behavior the most interesting aspect of any domain model or domain-specific language? I know Microsoft has gotten this far without that philosophy, but the developers of Oslo seem to be from the smalltalk crowd and should know better than to be as data-centric as they are.

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread

1 Discuss