Open Letter to Douglas Purdy: Eclipse, Oslo, and how to invent the future together

(Find his answer here)

Dear Douglas Purdy,

Over the last several months I followed the development around “Oslo”. I couldn’t attend the PDC, but I watched all Oslo videos, read a lot of the reactions, and also spent some hands-on time writing a few schemas and grammars.

The subject I want to write to you about is particularly your talk A Lap around “Oslo” at PDC as well as your post What is Oslo?.

I’ll just quote some of your spoken and written words and put my comments below. Just for easier referencing I’ll group them in sections.

Feel free to answer on your blog in order to avoid endless comments. I suggest using the tag “Oslo2EMF”.

1. Preamble

I’ve been developing using Microsoft technologies for 7+ years now. I’m absolutely positive to Microsoft and I love .NET. Nothing here is intended to be disparaging about Microsoft.

We have realized that we live in a model-driven world.

Compared to the Java and Eclipse camps, I’d say, you realized that quite late, but still welcome and congratulations. Talking about models and particularly model-driven software development, they seem to be far ahead in both methodology and technology (more later). In a way MS also acknowledged this, by joining OMG [1]* after kind of criticizing it for a couple of years.

* see link index below for all following links

2. Terms

Now when we talk about models, and one of the things we talk about particularly with modeling inside of Microsoft, particularly with Oslo, is this notion of a very key term that I like to get across, which is Model-driven Development, Model-driven Software Development.

If you want to upset the community, just take an established term “B”, rename it to “A”, and then reinvent something slightly different branding it “B”.

My Point is that MDSD is an established term in the community. It has already been defined and there are several books available [2].

The term MDSD – as the community uses it – has its roots back in the OOPSLA in 2003 [3]. Many of the attendees did MDSD before that, but they didn’t have a term that wasn’t  trademarked (as MDA, MDD are). – Prove me wrong!

“This” MDSD stands for using models in the software creation and building process. In most cases this is done using code generation frameworks such as oAW[4] or androMDA[5].

In the Microsoft world MDSD was almost unheard [6], but Software Factories and the DSL Tools, as well as some Visual Studio built-in designers could be grouped into that category.

Now, in your talk, you renamed that approach to “model-assisted”. I think this is an appropriate term and I also understand your next point about “model-driven” in the sense of models directly executed by runtimes. But in that sense, “driven” means to drive applications and runtimes, not the development process.

To make my point: Please don’t call executing models MDSD. I think Model-driven Applications, as you also call it sometimes and as written on the slides (14:50), too, is more adequate.

3. Runtimes vs. Code Generation

To stick to your terminology, you said model-assisted development is a great way of creating software today. I do totally agree with that.

And you see some great examples on that on the slide. One of the canonical ones is HTML.

You are right. HTML is a model which is driven by several runtimes and it’s even openly specified. But it’s also an great example of how hard it is to write runtimes – All browser vendors struggle – I guess, I don’t have to say more here.

Another “great” example is the Windows Workflow Foundation. I like it. I even gave talks on it. Microsoft did well, but not good enough. They have to rewrite the runtime, the tools, …

Textual DSLs – I tell you this thing is hot!

Exactly! I totally agree, and I love MGrammar.

Q: “10x more productive with Oslo than with their current set of tools” to do what?
A: To write an .net application.

We are giving you mservice, mweb, etc.

You can, of course, write your own DSL, but we think that that will be the province of mainly ISVs and people that write frameworks today.

I totally disagree. Do you really mean what you’re saying?

DSLs are broadly used in projects, not only frameworks. You’ll miss quite a bunch of (growing) audience, if you focus only on ISVs. Big companies do big projects. And there is written millions of lines of code in such projects. MDSD, already today, boosts productivity in such projects – not 10x, but still a lot. [9]

I don’t say, runtimes are bad. But it is just not realistic to create runtimes for everything you want to base on models.

One of the reasons code-generation has so bad reputation – especially in the MS world – is because it’s often too ugly. When I talk about code generation, I mean generating well-structured, nice formatted high-quality code.

For now, Microsoft’s only answer to code generation is T4. Nice, but usually it leads to ugly code. It doesn’t even support creating multiple files for different classes.

What do you think? Do you have any plans on leveraging a code generation framework?

4. Open Microsoft and the Eclipse Modeling Project

Early, open and often. This is Pre-Pre-Pre Alpha, its raw. We want to get your feedback.

Love it!

M will be released under the Microsoft Open Specification Promise(OSP)

Does it mean, the source code will be published as a reference implementation, too? And what is M? MGrammar, MGraph, MShema, MWeb, MService, …? Will the mapping to the repository, and the definition of the repository be opened?

Anyone can implement it. We want this approach wide spread on a variety of different platforms. We want it to be as broad as Xml is today.

Quite ambitious. Where is the standards consortium, then? What about JSON?

We want to engage, particularly with the Open Source Community, in order to make sure that we can invent the future together.

I’m quite interested in what that engagement could be like, when it comes to investing effort or money.

Are we going to do anything to build a bridge to EMF, ehm, the answer is: …. ehm, we will see.

The key thing is: What I’d love to see is, I’d love to see the Eclipse Model Project, I’d love to see that community to come up with a bridge for this. So that’s part of the open – I’m not kidding.

So if they want to develop a bridge for this, absolutely I’m going to support doing that. That’s one of the key reasons we do the OSP.

I’d love to see an Eclipse “M” Project. I’d love it.

Could somebody quote me on that, so we can get that ball rolling?

Quoted. So now lets get the ball rolling. We’ve got two points here. Who is “that community”, and what kind of “bridge” do you mean?

I don’t think, Eclipse just throws their well tested products away in order to use “your” pre-pre-pre-alpha code. Asking Eclipse to implement “M”, at the first glance, sounds arrogant and kind of ridiculous to me.

But, being open, lets imagine EMF was a place and we want a nice bridge to and from Oslo.

Of course there will be the feeling of competition…
But in the end, the success of modeling is the most important thing.

Ed Merks, EMF project co-lead

Where to build the bridge? And what to archive with it?

  1. EMF (Ecore) <-> MGraph/MSchema
    If you understand both models on both sides, you’ve won alot. But mapping the schemas to Ecore could be a hard issue. EMF uses explicit inheritance, while MSchema uses structural subtyping. But still, it could be done.
  2. xtext <-> MGrammar
    Both languages transform unicode to semantic models. The concepts match, while the syntax is quite different.
  3. TBD, T4? <-> openArchitectureWare
    When it comes to code generation, M2M transformations and model checks, as said before Microsoft doesn’t offer anything even approaching openArchitectureWare.

I think the people you should get involved with are Ed Merks (EMF co-lead and Ecore-developer) as well as Sven Efftinge(xtext and oAW Project lead),  Markus Völter (xtext, oAW) and Peter Friese (xtext, xtend, oAW). [7]

Could you imagine an open space conference on this collaboration? You say “I’d love it” so often that I have to ask, how much would you love it?

Sincerely yours,

Lars Corneliussen

Links Index

Since this is a letter, I didn’t want to confuse it with links. So I indexed them and put them below.


What "Oslo" is and is not (November 2008)

See also: Open Letter to Douglas Purdy: Eclipse, Oslo, and how to invent the future together

The PDC is over, and most contents including the Oslo SDK (without Quadrant) and all PDC Session Videos on channel9. Thanks! But where are we now? If you want a “brief” overview, you should at least have a look at A Lap around “Oslo”.

Jump to “What Oslo definitely is!”

Oslo Resources

What Oslo is not!

I’ll start with correcting some of my former assumptions in DSL Tools, T4, the Software Factories and “Facts” Rumors about Oslo.

Built upon DSL Tools?

No, Oslo (M and Quadrant) is not built upon DSL Tools, T4 and the UML Tooling in Visual Studio 2010. It’s totally apart. The DSL Tools are the here and now, while Oslo still is “Pre-Pre-Pre-Alpha” (Douglas Purdy).

Douglas promised that his team is working tight with the VSTX team in order to bring this together. He mentioned the possibility of using M as the backing metamodel format for the DSL Toolkit. Graphically edited DSLs could then be converted, described in MSchema and stored into the Oslo Repository or MGraph files. Update (12.Nov): Later in his talk “a lap around Oslo” Doug also said his the team is discussing to schematize the DSL Toolkit, and let the graphical DSLs live within Oslo.

A move towards UML/OMG?

No. I don’t think so. Microsoft joined the OMG and they support some UML Diagrams in Visual Studio 2010. But so far this has not to do much with Oslo.

Update (12.Nov): Someone asked about how Oslo relates to XMI and UML. Doug’ promised that they will model the UML-Domain and let the UML Designers in Visual Studio live within Oslo.

Talking of Model-driven Architecture (MDA) it seems that Microsoft avoids this abbreviation. They rather talk about Model-driven Development and Model-driven Applications – I’ll write more on this in a separate post.

A Application/Process Server?

Dublin is announced to be Model-driven, but it is not a part of “Oslo”, but rather related to Windows Azure and IIS. The plan is to host cloud-enabled services both locally on Dublin and in the cloud on Windows Azure with maximal control and minimal effort for deployment and configuration.

Read Workflows, Services, and Models by David Chappell to see how Dublin relates to Oslo.

A new Version of WF and WCF?

WCF and WF were model-driven right from the beginning, but in the next versions the source for the models that drive Workflows and Services might come from Oslo.

MService is a textual DSL that combines service configuration, implementation and workflow definition into one resource.

What Oslo definitely is

A new Modeling Language Family

Yes, it’s definitely about a new modeling language family “M”, consisting of three core languages. These languages do all have similar Syntax and a shared type system.

  • MSchema
    Defines schemas for data instances. Quite comparable to XSD and DTD.
  • MGraph
    JSON-like format for capturing concrete data instances.
  • MGrammar
    Defines grammars for textual DSLs. Could also be looked at as a Unicode-to-MGraph-tranformation language.

There are other languages planned for some horizontal domains as Database, Services and Web. But here you can even put some more “Pre”s before the “Alpha”.

A Language Workbench for textual DSLs!

Well, I’ll just copy Martin on that.

At some point I really need to rethink what I consider the defining elements of a Language Workbench to be. For the moment let’s just say that Xtext and Oslo feel like Language Workbenches and until I revisit the definition I’ll treat them as such.

Martin Fowler Bliki: Oslo

A new Storage Repository!?

Oslo Repository is a tool and a framework that allows storing models into SQL Server.  I’m still quite torn on this idea.

  • Design-time story: Many tool vendors tried backing repositories supporting simultaneous changes. But sharing them in files is just easier. If it was on the web – ok, then we had to talk about security and stuff – But as it is tied to SQL Server 2008, it looses a lot of my attention.
  • Runtime story: Having models in a database at runtime at least seams more natural in my opinion. What then to store there is another thing to figure out. Is it meant to store operational data or configurations and application definitions? That’s what is left to the customer to decide.

The repository compiler (mx.exe) generates T-SQL code out of your models, while it supports two modes:

  • Plain T-SQL: Mapps your explicit MSchema definitions or implicitely “guessed” schemas from MGraph data to data tables.
  • Repository SQL: A Repository is a database pre-populated with tons of schemas describing the “Microsoft IT world”. It also supports some core services, as are:
    • Deployment: Import and Export from and to M + Webservice Deployment to Dublin
    • Security: Tables hidden behind views, claims-based security
    • Catalog: Keeps the semantics you have in your MSchema as not everything maps directly to T-SQL.
    • Versioning: Sadly not instance data versioning. But you got full SQL Server 2008 capabilities including SSIS, Change Tracking, Replication, … + Due to the separation of views and tables you can support backward-compatible schema evolution.

Oslo does not come with a own data-access technology stack. It rather gives you a generator for EF-Models.

A Graphical Modeling Toolkit!

Yes. Quadrant lets you interact with models graphically. It’s highly generic, customizable and it looks great.

But as I’ve understand, Quadrant only works on models stored in the Repository, hence SQL Server. Really interested to see how this works together with your textual definitions you might rather store in Version Control.

Release Dates, Packaging and Pricing

From Microsoft “Oslo” Frequently Asked Questions

Q: What is the timeline for shipping “Oslo”?

A:  We are not disclosing the release schedule at this time. We are committed to releasing regular Community Technology Previews (CTPs) after PDC and will engage with the developer community on an on-going basis. The Oslo Development Center ( will also be the place to learn about the latest Oslo-related downloads.

Q: Is “Oslo” shipping with the rest of the Visual Studio 2010 product line?

A: We are not currently disclosing schedules or packaging.

Modeling Through the Ages – More on Oslo

Update: Post-PDC: Again, what is “Oslo”? M, MGrammar, Quadrant, Repository, textual DSLs, DSL Tools, UML-Modeling (November 2008)

Just a couple of minutes ago the Session “A lap around Oslo” (Link added) began at PDC 2008 in Los Angeles. But sadly I’m sitting at home in Germany and just have to wait 24 hours to get to see the records.

But I found an really interesting Video on Channel9 with the first “Screenshots” of Quadrant I got to see so far. Enjoy it!

Another website Microsoft made on OSLO: MODELS remixed.

Modeling Through the Ages


Interview with Michele Leroux Bustamante

In my opinion the most interesting interview from MODELS remixed. Absolutely worth listening!

  • Somehow embedding videos doesn’t work here. Go on Videos on the Site MODELS remixed and then click on the fourth video.

Screenshots from Modeling Through the Ages

Bild 54Bild 56Bild 57Bild 58Bild 59

Paul Gielens:ThoughtsService

Microsoft Buzzword-bingo with Oslo, M, Quadrant, Dublin and some facts about .NET Framework 4.0 and Visual Studio 2010 (October 2008, Pre-PDC)

Update: Post-PDC: Again, what is “Oslo”? M, MGrammar, Quadrant, Repository, textual DSLs, DSL Tools, UML-Modeling (November 2008)

One month ago I posted on Microsoft and their heavily discussed facts and rumors about the “Oslo” modeling initiative. Since then VS2010 and .NET Framework 4 has officially been released. But still “Oslo” isn’t totally unveiled!

Oslo Facts and Rumors

Microsoft will be showing a lot of new technologies on PDC. Many topics that were mentioned in context to “Oslo” are not that related anymore. Have a look at the Microsoft PDC Session Calendar in order to get an overview over all the new buzzwords.

In my last post about Oslo I cited David Chappell and Douglas Purdy saying what Oslo is about. Now Steve Martin took Douglas’ list and just decorated it with some nice code names.

M and Quadrant  – Modeling Language, Tools and Repository and Oslo

We got new code names! M and Quadrant.

  • A language – codenamed “M” – that helps people create and use textual domain-specific languages (DSLs) and data models
  • A relational repository – that makes models available to both tools and platform components
  • A tool – codenamed “Quadrant” – that helps people define and interact with models in a rich and visual manner

Steve Martin, Introducing “M” and “Quadrant”

As I understand, M textually defines models, while Quadrant can be used to view and build those graphically. Where textual DSLs comes in here, and wether M defines meta models, represent models, or both is still not clear to me.

Don Box, Oslo – Don Box’s Spoutlet – Pluralsight Blogs

With Oslo, we’re doing two things:

  1. We’re making it easier for people to write things down in ways that make sense for the domain they are working in – the common term for this in the wild is modeling.
  2. We’re making the things people wrote down accessible to platform components during program execution.

… so we’ve built a design tool for working with the same information our text-centric friends produce and consume….

…Our goal is to make it possible to build real apps purely out of data. For some apps, we’ll succeed – for others, the goal is to make the transition to traditional code as natural as possible…

I can’t yet figure out what he means by saying “out of data”. I hope, Microsoft does not try to make the world even worse with their data-centric viewpoint.

“The language was designed with an RDBMS [relational DBMS] as very, very, very much top-of-mind, so that we have a very clean mapping,” Lovering said. “But the language is not hard-wired to an RDBMS or relational model. And the language is actually built against an abstract data model. We represent the program itself also in that same abstract data model, which is a very LISP-ish idea—you know, where the whole program itself is the same data structure on which it operates.”

The Oslo language also is partially based on TLA+, a language developed by Microsoft researcher Leslie Lamport, Lovering said.

Page 2 – The Origins of Microsoft’s Oslo Software Modeling Platform 

I’m really looking forward to see some samples written in this language!

It’s been tried before and it’s never worked – I have to admit that was my first thought…

…So it’s going to really interesting to see where this all goes. I hope Microsoft pulls it off.

Some Thoughts on Oslo by Andrew Tokely

Windows Workflow Foundation and Oslo

The new WF comes with a new designer and a new runtime which most likely will be a part of the .NET Framework 4.0. The relation to Oslo seem to be the ability to define workflows using the new Oslo Language and to store them in the Oslo Model Repository.

WF 4 is announced to be 10 times faster and will contain a lot new built-in activities and workflow types.

Dublin – The Process Server and Oslo

The process server David mentioned got a own code name, too: Dublin!

Dublin will be extending the IIS Information Services with a more managed way to host distributed WCF and WF Services. Firstly it will be available as an extension to Windows Server 2008, but it is planned to become a part of new Windows Server releases.

Is this the Application Server we have been waiting for so long time?

The fun doesn’t stop here. Next week, you’ll hear more from us on how “Oslo” fits into the picture…

Steve Martin,


Visual Studio 2010 (formerly Rosario) + .NET Framework 4.0

Visual Studio Codename “Rosario”, has now officially been dubbed Visual Studio 2010 and was announced at September 29th.

General Information

Some general information links VS2010. But what I’m interested in more, is the Architecture Section below 🙂

Architecture with VS2010

David Skinner talks about the features VS2010 leverages for .NET Architects. Generally VS2010 suppose to support both Top-down and Bottom-up modeling approaches. One of the key features is the linking between the models at all different abstraction layers.

All the diagrams were built with a improved version of the the DSL Toolkit. The six main diagrams shipped are:

  • The Layer Diagram
  • UML 2.1 Use Case Diagram
  • UML 2.1 Component Diagram
  • UML 2.1 Activity Diagram
  • UML 2.1 Class Diagram (Logical Class Diagram)
  • UNL 2.1 Sequence Diagram

Model = Code?

The diagrams shipped in VS2010 are not just other views on code, they are real abstractions. But still, there is a connection. One feature I really like is to validate code against models. This validation can even be ran within the build process. Using the Layer Diagram for example, it is possible to enforce that developers don’t violate the relation constraints. If someone then would code a call from business to data layer, the build just fails.


I’ll just show some screenshots I took while watching the video “Top-down” design with Visual Studio Team System 2010 on Channel 9.

Top-down in this context means, starting with modeling and then creating the software and code.

Bild 20

Bild 22

Bild 23

Bild 24


Means exploring existing code and use models to understand how things work or don’t work.

“Bottom-up” Design with Visual Studio Team System 2010 Architect | VisualStudio | Channel 9

Bild 35

Bild 29 Bild 30

Bild 31

Bild 34