Oslo, Quadrant and the Repository is dead, long live “M”?

What the community (me included) has hoped and feared at the same time and what many foresaw, happened: Microsoft discontinued it’s investment in SQL Modeling Services (aka “Oslo” Repository) as well as “Quadrant”, as Don Box states on the Model Citizen Blog.

One important aspect of that focus is that we will not bring “Oslo” repository to market.

The Winners on the data-side of things are OData and the Entity Framework including EDM.

Given the increasing adoption of both OData and EDM, we have decided to focus our investments in those technologies to make our modeling vision a reality.

But Don also states, that Micrsosoft will further invest in the modeling language codenamed “M”, which also was a former part of Oslo, but clearly didn’t fit into the “SQL” rebranding right from the beginning.

While we used “M” to build the “Oslo” repository and “Quadrant,” there has been significant interest both inside and outside of Microsoft in using “M” for other applications. We are continuing our investment in this technology and will share our plans for productization once they are concrete.

I think, all together this is good news. Both the Repository and Quadrant were very far away from what I consider useful.

Hopefully the “M” team moves over to DevDiv into the ScottGu-Area. Hopefully it then returns to collaborative language design, now that the internal goals are removed.  Hopefully, Microsoft also now listens’ to the modeling community when designing the final language. And hopefully they bring great Visual Studio Support for textual DSLs.

Hey Microsoft, what about open sourcing “M”? This would be a huge step forward, after this very huge step backwards!

Advertisement

What is left of Microsoft “Oslo”? What now with SQL Server Modeling? (Early 2010)

Back in October 2008 Microsoft announced “Oslo” as a new and world-changing modeling platform. While it always consisted of a language, an editor and a repository the community seemed to be mostly interested in the language “M” and it’s grammar features for creating new domain specific languages.

The feedback could be summarized to:

Great! We love model-driven. We love DSLs. But why the heck SQL?

After that they got engaged with that community. Chris hosted the DSL Dev Con. And Doug released “M” under the Open Specification Promise and founded the “M” Specification Community. Mathew Wilson implemented M in JavaScript. Hugo Brunelier elaborated on the possibilities of bridging it with Eclipse Modeling.

Many wrote, spoke and blogged about it. The fellow hope was, that Microsoft could bring model-driven development to a broader audience and by that increase both productivity and quality in software development.

For that community the renaming of “Oslo” to SQL Server Modeling was a slap in the face. Many stated that they were disappointed by Microsoft’s decisions.

Let’s look into the reasoning and the real consequences of that rename.

Even though I think it was a wise decision business-wise both the timing and the messaging was really bad.

The Repository and “Quadrant” were closely tied to SQL right from the beginnings of “Oslo”. The schema, constraints and functions part of “M” had and mostly still has only one implementation: also SQL.

But the languages part of “M” also referenced to as “MGrammar” had nothing to do with SQL at all and it still doesn’t have much to do with it today either.

“M” should have been split out from “Oslo” before the rename and everybody would have been happy.

So where is this going now?

“M” and “Quadrant” today are still code names. The only thing that has a final name is the repository part of “Oslo” which is now named SQL Server Modeling Services. And I think we agree that that is a OK name.

Most probably “M” will not become SQL Server Modeling M and neither will “Quadrant” be named SQL Server Modeling Quadrant.

I think the final “M” will be as much SQL as Entity Framework and OData are SQL today. All those are developed within the same group and I expect it to merge anyway.

“Quadrant” will probably replace the part in SQL Server Management Studio that enables browsing and editing of SQL data – which is horrible today anyway. It also has the potential of replacing Access as a platform for Information Workers.

And maybe some day we’ll see ideas from “Quadrant” in Excel.

Future of DSL Development with Microsoft Tools

Visual: There was a hope, that “Quadrant” could be a better DSL Toolkit. Those teams didn’t talk to each other, but now they do. I think MS gave up on visual DSLs with “Quadrant”. Instead we’ll see the DSL Toolkit getting more attention. In some Demos at PDC we saw diagrams in Visual Studio working together with SQL Server Modeling. That were already DSL Tools operating on “M” models.

Textual: “M” is at maximum a third of the “Oslo” vision. And the languages part again is only a subset of “M”. Maybe that helps seeing the priorities in the big context.

But still the commitment is alive. The November CTP has some great new features. For example more powerful “M” projections for grammar rules or basic debugging support.  Probably some day this will merge with the DSL Tools and we’ll have both graphical and textual DSLs support right within Visual Studio. I think and hope that the connection to SQL will not be very strong in the future.

Model-driven Development

As often when Microsoft starts (mis)using existing terms they or at least many of their employees just don’t get it. At least not in the first place.

An application that uses “M” to define the M in MVC is not automatically model-driven. It’s just a normal application that operates on data as most applications do. If you want to argue like that, then every C# file and all SQL table rows are models.

In my perception model-driven is, when models become part of the implementation. The Workflow Foundation is a good example for what model-driven means. You model something that is the source of truth for your application – instead of C# code.

If tools help building things like the workflow foundation based on either visual or textual DSLs, using interpreters or code generation, then they truly support the vision of model-driven software development.

Migrating WBS from “Oslo” to SQL Server Modeling

I finally found some time to migrate two of my pet projects from the “Oslo” May CTP to the new SQL Server Modeling November 2009 CTP. I didn’t publish the sources so far, but I will soon.

Work Breakdown Structure

The first application that I want to migrate is a so-called work-breakdown-sheet (WBS). Originally it was a Excel sheet containing tasks and task estimates. Some smart calculations apply a set of statistics to give a forecast that is as close as possible to the real effort required.

The technologies I wanted to try out with that were mostly “Quadrant” and the “Repository”, now SQL Server Modeling Services. Also I wanted to test the team on their ambitious goal to make something that gets close to the experience of Access in ease of use.

The project contains of a set of “M”-based models and functions as well as some basic “Quadrant” customization. No plain old C# code needed, so far.

The basic domain model expressed in M (May CTP):

type Project {
    Name : Text;
};

type Story {
    Name : Text;
    Project : Project;
};

type TaskGroup {
    Name : Text;
    Story : Story;
};

type Task {
    Description : Text;
    Comment : Text?;
    Group : TaskGroup;
};

type Estimate {
    BestCase : Double;
    AverageCase : Double;
    WorstCase : Double;
} where value.BestCase < value.AverageCase
     && value.AverageCase < value.WorstCase; 

I’ll write an introduction to the project soon. But now, I’ll just log the changes I had to make in order to be able to get it running on the new CTP.

The Project File

In May, both Visual Studio and Intellipad used a *.mproj-File to collect multiple models in a project. In November this is embedded in a *.csproj-File. The easiest thing was to create a new “Oslo Library” in VS 2010 and just add the files that previously were linked in Wbs.mproj.s

Now I got the project both in Visual Studio 2010 and in Intellipad:

asdf[4]

asdf

Now lets build.

Syntax Changes

Lets walk through the errors I get, and how the syntax has to be changed to fix them.

  • First surprise. Intellipad builds the project without complaining. Well this message still leaves me unconfortable: Skipping target "MCompileCore" because all output files are up-to-date with respect to the input files.

So lets switch over to VS. The Messages I get are:

  • Error: Expected a ‘;’ to finish the extent declaration.
  • Error: Expected a ‘;’ to finish the computed value declaration or a ‘{‘ to start its body.
  • Warning: The ‘item’ expression is being deprecated. Please replace with an appropriate ‘value’ expression.

Those were easy to fix. Although the error messages look more explaining then they are.

Actually both first errors had to do with the new collection syntax. This goes for extent declarations as well as functions. This, for example:

TaskEstimates() :  PersonalTaskEstimate* {
    from e in RawTaskEstimates
    select MixEstimates(CalculateEstimate(e), e)
}

Needs to be changed to:

TaskEstimates() :  {PersonalTaskEstimate*} {
    from e in RawTaskEstimates
    select MixEstimates(CalculateEstimate(e), e)
}

The warning about the deprecated item keyword in:

RawStories : (Story & HasFolderAndAutoId)*
        where item.Project in RawProjects;

is solved by using value plus making sure, that the constraint goes inside the collection.

RawStories : {((Story & HasFolderAndAutoId) 
    where value.Project in RawProjects)*};

After having fixed those I get a next set of errors:

  • The left-hand side ‘value.BestCase’ of ‘in’ must  be compatible with the collection element type ‘LifelikeEstimateNumber’.

This seems to be a implicit change enforced by the new type checker in the current CTP. This is the “invalid” code:

type LifelikeEstimateNumber : Double where value < 24
    || value in SomeFibonacciNumbers;
    
type SomeFibonacciNumbers : {55, 89, 144, 233, 377, 610};

The problem here is, that the compiler doesn’t infer that SomeFibonacciNumbers actually is a collection of Doubles. So we have to tell her.

There are different ways to do so. We can either ascribe the first value in the collection to a Double by writing:

{55: Double, 89, 144, 233, 377, 610}

or we could ascribe the whole collection to a collection of Doubles

{55, 89, 144, 233, 377, 610} : {Double*}

or we can mix it with a collection of Doubles:

{55, 89, 144, 233, 377, 610} & {Double*}

I don’t really know, what the differences will be. I’ll just go for the last one, because it looks so nice 🙂

Project References

The next problem is, that my references to models from the “Repository” and “Quadrant” can’t be found. Sure, I didn’t copy the references from the mproj-file, either. As described here, you now have to reference dll files instead of the mx-files that where needed in May.

In my case, I needed a reference to “C:\Program Files\Microsoft Oslo\1.0\bin\Repository.dll” in order to support the SQL Server Modeling Services type HasFolderAndAutoId.

Now all the “M” code seems to be ok. The only thing is, that some concepts do not compile to SQL.

For this code:

type LifelikeEstimateNumber : Double where value < 24
    || value in SomeFibonacciNumbers;
    
type SomeFibonacciNumbers : {55, 89, 144, 233, 377, 610} & {Double*};

type TaskEstimate : (Estimate & {
    Task : Task;
}) where value.BestCase in LifelikeEstimateNumber
    && value.AverageCase in LifelikeEstimateNumber
    && value.WorstCase in LifelikeEstimateNumber;

i get the following error for each occurence in the last three constraints:

  • Not yet implemented: There is no SQL expression generator to handle the expression ‘TypeRef: Reference, resolve to get the target’.

It seems, that the constraint expressions can’t handle types completely. I’ll just refactor that to an inline expression plus an extent for the allowed high estimates:

AllowedHighTaskEstimates : {Double*} {
    55, 89, 144, 233, 377, 610};

type TaskEstimate : (Estimate & {
    Task : Task;
}) where 
    (value.BestCase < 24 
        && value.BestCase in AllowedHighTaskEstimates)
    && (value.AverageCase < 24 
        && value.AverageCase in AllowedHighTaskEstimates)
    && (value.WorstCase < 24 
        && value.WorstCase in AllowedHighTaskEstimates);

Build succeeded!

Well I cheated a little bit, because I removed the models that drive the quadrant customization. But since those have changed completely anyway, I’ll just rebuild the requirements.

Deployment

For the May CTP I had a bunch of batch files to manage the build and deploy process. This was also, because I had to install a external SQL function before deploying my module. Lets see how this works with the deployment integration in Visual Studio 2010.

I configured the connection string in the M Deploy settings to a local database called ‘WbsTestRepository’. But trying to deploy the solution fails with a couple of errors. It seems, that the repository is not deployed automatically, allthough I added a project reference.

Repository Issues

In Wbs I want to use the Repository (now SQL Server Modelling Services) Rolders as well as the catalog which stores data about my models.

You still need to install the “Repository” on your database using the command line. This should be necessary only once, though.

The commands I ran were (described here):

'create a clean db
mx create /d:WbsTestRepository /s:.\SQLExpress /force
'install the rep
mx install Repository.mx /database:WbsTestRepository /server:.\SQLExpress

But now redeploying in VS yields another expected error:

  • error M6040: Sql Exception: Cannot find either column "itemis.Wbs" or the user-defined function or aggregate "itemis.Wbs.Power", or the name is ambiguous.

Wbs needs the power-function to compute some values. Since M doesn’t know about it, and neither can express it natively, I had to model an so called extern:

extern Power(Expression : Double, Power : Integer32) : Double;

This just makes a concept available to M that has to be implemented in SQL. Since we want to ensure this in the installation, we have to compile it along with the M files. This is done by adding a SQL file containing the “create function [itemis.Wbs].[Power] …” script and set the compile action to “MPreSql”.

As I almost expected, redeploying the model doesn’t work. I’ll post a workaround for that soon.

  • error M6040: Sql Exception: The module ‘itemis.Wbs’ is already present in the database.

But for now we just put the two lines in a batch file to recreate a fresh repository before each deploy.

The next problem I run into is:

  • Sql Exception: Target folder must be specified.

There are two ways to add a target folder to your initial values. The documented one suggests adding your Folder to the FoldersTable and then specifying that value in every single instance. The much cleaner and simpler is, too set the target folder globally for the whole project.

Since there is no Visual Studio support for that, you have to add this property to the csproj-File manually:

<MTargetFolder>Repository/Wbs</MTargetFolder>

You will also have to create the folder along with the repository every time you deploy, using the following command:

mx createFolder "Repository/Wbs" /database:WbsTestRepository /server:.\SQLExpress

The next thing is some complaints about my constraints on TaskEstimate. Since I have no time left, and those constraints should be weak, instead of hard CHECK constraints anyway, I’ll just comment them "away” for now.

Deployed successfully.

Wonderful. Now lets go to “Quadrant” and see, how we can make use of the model with it’s sample data.

asdf[1] 

Summary

It were not really the syntax changes that made trouble, but rather the integration with Visual Studio. I had a couple of simple customizations for Quadrant, but I’ll rewrite them soon.

The only comment I have to make so far, is, that it is totally unacceptable to have a development cycle that takes more than 5 seconds from M over compile, deploy and look at the changes in Quadrant. Now it takes more than 30 seconds.

Future Plans

I’ll probably elaborate more on WBS next week. I’ll also migrate my DSL pet project called “Web Layout DSL” and integrate it with a MVC Client Application over WBS.

So stay tuned.

Updates on what Oslo is and Quadrant not is (September 2009)

It has been more quiet around “Oslo” the last month. Maybe just about everybody is on vacations. Or people feel that everything will change with the PDC in November and are afraid of publishing nonsense.

Nonetheless, I felt it’s time for an update on what I think, heard and read about “Oslo”.

I divided my post in two sections:

  • Information about “Oslo”
  • What I think about “Oslo” today

have fun!

Some Information about “Oslo”

For those who don’t know, “Oslo” is the current codename for Microsoft’s forthcoming modeling platform, which is available as CTP Download since back in October 2008.

If you want to read more about what Oslo is about, I recommend those Resources:

Well, since then Microsoft has released two more CTP releases (January and May), written a lot of documentation and posted quite some videos and samples. If you ask me, it’s yet too much for such a young and undone technology. Oslo’s modeling language “M” has and The "Oslo" Modeling Language Specification, which yet has been implemented in JavaScript by Mathew Wilson (jsmeta).

The community did also care a lot, and there are even companies investing in tools around “Oslo”. Telrik published two projects on their Labs Site. A tool for comparing and migrating M as well as LINQ to M. There are even trainings offered by Agilitrain and PluralSight.

Some recommended links:

What I think about Oslo today
(May CTP + Announcements)

First of all I want to say, that I’m happy Microsoft released Oslo in such an early state. I think they know the pros and cons of such an open process. The community can help with forming the product, and companies can start to invest early in what they think might be valuable for the future. But It also means more friction for any changes that are made.

I have used M for defining schemas and languages and also played around with the Repository and Quadrant. As Microsoft also states, it’s early Alpha. I stumbled over many bugs which I still plan to report and blog about. But that is OK, no one ever said it was production ready.

“M”

So far I like the schema part of M, also called MSchema. It has a very concise (compared to XSD) c-style syntax and covers a lot of what I want to express when modeling information structures. The M-graph (for values) syntax is also OK, while I don’t like the MGraph API. M-constraints let you restrict your types in a nice way. What I don’t like here, is the missing support for weak constraints. Named M-queries (similar to LINQ syntax), are a nice way to query M structures.

M-grammar is useful for DSLs. I think it could be more opinionated. I feel MS is striving for an expressiveness that let you describe all computer languages in the world using MGrammar. This makes it more complex than necessary for covering DSLs. At the same time it doesn’t support nesting of languages, which would be especially useful for DSLs, because you often need to talk to external models (e.g. pinvoke). The support for editor customizing (crucial language workbench feature) as it is today is not sufficient and too hard to configure.

Another feature I miss here is referencing between nodes and even across files (linking + scoping). For now all references are just values (ids), and the output of a DSL program will be a tree model, no graphs!

The Repository

The Repository basically offers some features on-top of SQL server as are row-level security, hierarchies, localization, versioning, additional constraints. All those features are plain SQL “libraries” in conjunction with M-models which also are compiled down to SQL. I don’t yet know what to think about the Repository.

Naming / Packaging

In the last couple of weeks the Oslo team published two posts that confirmed some of my speculations.

Let’s start with Doug’s Post: On “Oslo” at Douglas Purdy

In this post he basically makes two statements:

The only thing that I feel bad about is that we kept the “Oslo” name around so long (you will see that change at the next PDC), which has continued to be a confusing point for customers (“I thought Oslo was your new SOA platform”).

Douglas Purdy

I agree. It was confusing. Although people slowly start to accept “Oslo” as for “Modeling”.

Oslo and EF / Data Programmability

With this in mind, we made a decision to merge the Data Programmability team (EDM, EF, Astoria, XML, ADO.NET, and tools/designers) and the “Oslo” team (“Quadrant”, Repository, “M”) together.

Douglas Purdy

I don’t yet know what to think about this. “Oslo” is not and should not evolve to an O/R-Mapper. M’s type system is structural and doesn’t map well to strongly typed objects as used by EF. I can see this choice limiting the modeling capabilities of Oslo. But I guess we have to wait and see.

Quadrant. A graphical Editor?

The other post, confirming my fears about Quadrant was Model Citizen : What’s So Compelling about "Quadrant" Anyway?.

Back in November last year, when I wrote a sum-up post about “Oslo” I concluded Quadrant:

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

Lars Corneliussen, November 2008, What "Oslo" is and is not

I concluded this from the official statement about Oslo plus some videos and screenshots I had seen.

A tool that helps people define and interact with models in a rich and visual manner

Doulas Purdy, September 2008, What is Oslo?

But here is the smackdown:

Microsoft code name "Quadrant" is a ‘tool for viewing and editing SQL data,’ but… so what?

Michael Murray, July 2009, What’s So Compelling about "Quadrant" Anyway?

As I understand today, and as it shows up in the May CTP, it is not a graphical editor or graphical editing toolkit but rather a light WPF-version of Microsoft Office Access that understands Oslo Modeling concepts and relationships and builds up default editors in a generic manner. This is still useful (if it is free), but not far as useful as what I hoped Quadrant to be.

Please, Microsoft, make Quadrant a graphical editing toolkit with good support for configurable diagramming and any custom WPF editors. It should also have the plug-in model VS2010 offers for sharing any extensions.

The “Oslo” Story

Microsoft tries to sell “Oslo” as if it was all one story. It’s a lie.

There is tons of impedance mismatches that restrict you in many ways.

Modeling Structure

  • M in general uses structural typing (duck typing, supports mix-ins) and supports real graphs (including references)
  • MGrammar ASTs are hierarchal (tree structure) and for now only supporting nodes and strings.
  • Databases store flat relational data,
  • and objects in the .NET world are typed nominally (no multiple inheritance).

DSLs + Repository

There is no story for “DSLs and the repository”, and there is not yet a good story for any runtime support off the repository or DSL files. It’s basically what you had before. You can either access the database via ADO.NET or an O/R-Mapper or you run directly off the parsed MGraph-AST representing your DSL-Script, which feels like visiting xml documents. M has a nice LINQ-ish query language, but that doesn’t work in memory against a graph.

Querying

M has good support for complex data structures. As said there is no support for in-memory queries. But even the database implementation is limited by it’s relational backend. Even though queries can consult complex properties for sorting or filtering, it can only return rows with a list of scalar fields.

Constraints

Most constraints on types are only implemented in the SQL-Mapping. Also here there is no in-memory implementation that would validate your model against a schema. Basically the M-compiler generates a database schema including checks that would not let you insert invalid data into the database.

Data and schema evolution

There is this dream about capturing requirements in quite fuzzy ways and then piece for piece add details to them – until they have reached some formal state that might be executable. This sounds nice in theory, but there is no chance to implement this stuff. M is very easy to change, and it is easy to add constraints and refactor schema structures. But there is no story around how to let your data evolve together with your schemas using the Repository. So, besides nice theories, Oslo doesn’t help here.

More to come

There will be new content and Chris Sells also announced a fresh CTP around this years PDC in November.

So far, only one session has been scheduled, but watch this list for more sessions to come: Microsoft PDC09 – Modeling Sessions

Hope to see you in LA in November!

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 (http://msdn.microsoft.com/oslo) 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.

Oslo CTP available!

The Oslo SDK is available for download: Oslo Developer Center

Microsoft also did a good job writing a lot of examples, documentation and tutorials about Oslo, M and MGrammar and the Oslo Repository.

M vs. MGrammar

MGrammar looks quite interesting. As I can see, M is defined using MGrammar while MGrammar itself is self-describing.

M just seems to be a general-purpose modeling DSL. This is where “building textual DSLs” comes in. When you want to define a model you can either define it with M, or create an own more specific DSL using MGrammar. MGrammar will then generate a parser and hopefully a good intellisense-enabled editor.

Screenshots

I’m really to tired to run all of the samples and tutorials and come up with good conclusions. But I got some screenshots 🙂

That’s what “M” looks like. Unfortunately I could not find any examples or screenshots about Quadrant, which should show the same data just graphically.

tmp201

 

More than 300 built-in models.

tmp1FF

 

The Intellipad helps writing Models with M or defining textual DSLs with MGrammar.

tmp20D

 

A part of MGrammar defined in MGrammar

tmp213

 

A part of M defined in MGrammar

tmp215

 

A textual DSL built with MGrammar

tmp217

 

An instance of this DSL

tmp219

 

More tomorrow!

It’s 01:42 am here in Germany, and I just want to sleep now 🙂

Microsoft PDC 2008 – Sessions on Oslo (M+Quadrant), .NET/WF/WCF 4.0 and Dublin

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

I just “scanned” the PDC Session Timeline and the Sessions I would have liked to attend if I were in LA.

As soon as I find resources like videos or blog entries regarding these sessions, I’ll add the links below each session.

Monday, October 27, 2008 (updated video links)

Keynote – Cloud Computing Takes Center Stage
08:30 AM PST (LA) / 16:30 CET (Berlin) – Video

TL02 Under the Hood: Advances in the .NET Type System
Misha Shneerson, Andrew Whitechapel
11:00 AM PST / 19:00 CET

Enhancements to the type system in the next version of .NET Framework allow for loose type-coupling of components comprising your application. This talk is an in-depth examination of the changes in the Common Language Runtime and managed languages. See how these changes help to simplify versioning and deployment of components targeting either COM based and/or fully managed applications. For Office developers, learn how to eliminate the need to redistribute primary interop assemblies.

TL40 “Dublin” and .NET Services: Extending On-Premises Applications to the Cloud
Jacob Avital, 12:45 PM / 20:45 CET

Would you like to extend your existing SharePoint and .NET applications both on-premises and to the cloud in a non-intrusive way? This session will show you real-world examples of how to harness .NET Services workflow, access control and service bus to enhance business processes and add new capabilities to your application. We will demonstrate the use of “Dublin” Windows Application Server technologies to build extended application functionality. Lastly, you will see how workflow can be used to integrate across multiple organizations and the cloud. For ISVs, this session will provide a blueprint for how to sell more products to your installed base without requiring them to upgrade.

PC20 ASP.NET 4.0 Roadmap
Scott Hunter, 1:45 PM / 21:45 CET

Take a walk through the 4.0 landscape from ASP.NET and learn how you can get involved in shaping ASP.NET future. This talk focuses on the next release of ASP.NET including web forms and MVC. Do you love web forms? See how you can taking control of your control IDs, display images using the new DynamicImage control, learn about better ViewState managment in GridView and ListView, and get more control over the CSS markup of ASP.NET server controls. See how Dynamic Data makes building you data-driven apps easy. If you’re interested in AJAX, we show you further advancements in client rendering and binding. If you’re considering MVC, we look at the feature set and understand how to create applications with this technology.

PC21 ASP.NET MVC: A New Framework for Building Web Applications
Phil Haack, 3:30 PM / 23:30 CET

Learn how the new ASP.NET MVC framework differs from the current ASP.NET Web Forms framework. Learn to take advantage of ASP.NET MVC to build loosely coupled, highly testable, agile applications. See how ASP.NET MVC provides you with fine-grained control over HTML and JavaScript.

TL17 WF 4.0: A First Look
Kenny Wolf, 5:15 PM / Oct 28th, 1:15 CET

Programs coordinate work. The code for coordination and state management often obscures a program’s purpose. Learn how programming with Windows Workflow Foundation (WF) 4.0 provides clarity of intent while preserving the functional richness of the .NET framework. See how easy it is to build workflows with the new Visual Studio workflow designer. Learn about text-based authoring options for WF. Hear how WF integrates well with other Microsoft technologies (WCF, WPF, ASP.NET). If you’ve looked at WF before, come and see the changes to data flow, composition, and new control flow styles. Significant improvements to usability, composability, and performance make Workflow a great fit for a broad range of solutions on both the client and the server.

Tuesday, October 28, 2008 (updated video links)

Keynote – Building the Next Generation of User Experiences
08:30 AM / 16:30 MET – Video

TL38 WCF: Zen of Performance and Scale
Nicholas Allen, 12:45 PM / 20:45 CET

Join us for an interactive lunch discussion about different kinds of performance and scale requirements that are a crucial part of any distributed systems development life cycle. Learn the principles of Windows Communication Foundation (WCF) throughput and responsiveness optimization. Hear about WCF scalability improvements in the next version of the Microsoft .NET Framework.

TL23 A Lap around “Oslo”
Douglas Purdy, Vijaye Raji, 1:45 PM / 21:45 CET

“Oslo” is the family of new technologies that enable data-driven development and execution of services and applications. Come and learn how to capture all aspects of an application schematized in the “Oslo” repository and use “Oslo” directly to drive the execution of deployed applications.

TL27 “Oslo”: The Language
Don Box, David Langworthy, 3:30 PM / 23:30 CET 

The “Oslo” language, at the heart of the Oslo modeling platform, allows developers to quickly and efficiently express domain models that power declarative systems, such as Windows Workflow Foundation and “Dublin.” In this session, we’ll get you started writing models for your own domains by introducing you to key features of the language, including its type system, instance construction, and query. You’ll learn to author content for the Oslo repository and understand how to programmatically construct and process the content to target your own specific runtime environment.

TL20 Entity Framework Futures
Tim Mallalieu , 5:15 PM / Oct 29th, 1:15 CET

The next version of the Entity Framework adds scenarios in the areas of model driven development, domain driven development, simplicity, and integration. See a preview of production and prototype code for the next version of the Entity Framework as well as a candid discussion with members of the development team.

Wednesday, October 29, 2008 (updated video links)

Keynote – From the Lab
08:30 AM / 16:30 CET – Video

TL06 WCF 4.0: Building WCF Services with WF in Microsoft .NET 4.0
Ed Pinto, 10:30 AM / 18:30 CET

Eliminate the tradeoff between ease of service authoring and performant, scalable services. Hear about significant enhancements in Windows Communication Foundation (WCF) 4.0 and Windows Workflow Foundation (WF) 4.0 to deal with the ever increasing complexity of communication. Learn how to use WCF to correlate messages to service instances using transport, context, and application payloads. See how the new WF messaging activities enable the modeling of rich protocols. Learn how WCF provides a default host for workflows exposing features such as distributed compensation and discovery. See how service definition in XAML completes the union of WF and WCF with a unified authoring experience that simplifies configuration and is fully integrated with IIS activation and deployment.

TL61 Panel: The Future of Unit Testing
Euan Garden, Jim Newkirk, Peter Provost, Nikolai Tillmann
12:00 PM / 20:00 CET

Unit testing means different things to different people. To Agile developers, it enables Test Driven Development. To researchers, it enables test generation from static and dynamic analysis. To others, it’s a means to test protocols, APIs, and other functionality below the presentation layer. Others still see it as a means to do conformance testing. Hear four experts debate the perspectives on the advances of the last decade and the trends of the next. Audience participation is encouraged.

TL18 “Oslo”: Customizing and Extending the Visual Design Experience
Don Box, Florian Voss, 1:15 PM / 21:15 CET

“Oslo” provides visual tools for writing data-driven applications and services. Learn how to provide a great experience over domain-specific schemas, and explore the basic user model, data-driven viewer construction, user-defined queries, and custom commands. See how the design experience itself is an “Oslo” application and is driven by content stored in the “Oslo” repository.

BB18 “Dublin”: Hosting and Managing Workflows and Services in Windows Application Server
Dan Eshner, 3:00 PM / 23:00 CET

Hear about extensions being made to Windows Server to provide a feature-rich middle-tier execution and deployment environment for Windows Workflow Foundation (WF) and Windows Communication Foundation (WCF) applications. Learn about the architecture of this new extension, how it works, how to take advantage of it, and the features it provides that simplify deployment, management, and troubleshooting of workflows and services.

TL28 “Oslo”: Repository and Models
Chris Sells, 3:00PM / 23:00 CET 😦

“Oslo” is making news. We’re taking silos of proprietary, platform, and application data and opening it up for sharing. What gets shared? Deployment configuration, web services definitions, workflow definitions, and that’s just a start. Learn how to utilize platform models, how to extend models, and how to add your own models to the repository using the “Oslo” modeling language. Also learn how to version, secure, and deploy models.

ES15 Web Application Packaging and Deployment
Saad Ladki, 4:45 PM / Oct 30th, 0:45 CET

In this session, you will learn how to use powerful new UI and command line tools for Web application packaging and deployment, and you’ll dive under the hood of Visual Studio 10 to see how it will support one-click deployment to IIS. You’ll learn how to transform your development settings to make them production ready and how a real world shared hosting environment may be securely connected to a developer web application in VS10. You will also hear best practices for setting up your server and development environment to get huge productivity gains.

Thursday, October 30, 2008 (updated video links)

TL35 WCF: Developing RESTful Services
Steve Maine, 8:30 AM / 16:30 CET

Learn the latest features in Windows Communication Foundation (WCF)for building Web 2.0-style services that use URIs, HTTP GET, and other data formats beyond XML. See how these features can be applied to AJAX web sites, “REST” applications, and data feeds.

BB12 .NET Services: Messaging Services – Protocols, Protection, and How We Scale
Clemens Vasters, 10:15 AM / 18:15 CET

Look under the hood of the Microsoft .NET Services service bus, the protocols we use, and how to use the services from non-Microsoft platforms and languages. Learn which part of the messages and requests the Building Block service inspects, which parts are not inspected, and how you can verify this. Also, learn how to work through NAT and Firewall limitations Last, hear about the architecture on the Data Center side that enables “Internet scale.”

TL31 “Oslo”: Building Textual DSLs
Chris Anderson, Giovanni Della-Libera,  12:00 PM / 20:00 CET

The “Oslo” modeling language can define schemas and transformations over arbitrary text formats. This session shows you how to build your own Domain Specific Language using the “Oslo” SDK and how to apply your DSL to create an interactive text editing experience.

TL11 An Introduction to Microsoft F#
Presenter: Luca Bolognese, 1:45 PM / 21:45 CET

Learn about Microsoft’s new language, F#, a typed functional programming language for the Microsoft .NET Framework. F# combines functional programming with the runtime support, libraries, tools, and object model of .NET. Understand how F# asynchronous workflows help tame the complexity of parallel and asynchronous I/O programming and how to use F# in conjunction with tools such as Parallel Extensions for .NET.

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, http://blogs.msdn.com/stevemar

 

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.

Top-down

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

Bottom-up

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