|
One of the things that amazes me most about Oslo isn't all of the functionality it provides or the productivity it claims to enhance. No, the most amazing thing about Oslo is the fact that nobody I talk to understands what the hell it is or why they should care about it. Worse, it usually takes me nearly an hour to explain to these people enough about Oslo so that they're convinced one way or the other if Oslo should be on their radar. To me, this is a clear sign that the information available on Oslo right now isn't cohesive enough. Sure there is a LOT of information, including a ton of videos - but the information is all at the bottom level. If you want details of how the underpinnings work or if you want syntax examples then you're good to go. But if you want info on what Oslo is and why you should care, it's harder to find - even if you watch some of the "lap around" videos.
I don't claim that my information will be any more cohesive than Microsoft's, but I'm writing this post as much for my own edification as I am yours. I often gain better insight about things I'm working on by blogging about them or trying to explain them to others.
This is, of course, a loaded question. The fact that Oslo appears to be so many things is one of the big problems. In short, Oslo is all about modeling. Not just data modeling in the traditional sense of sketching out ERDs but in the abstract notion of simply creating models. More specifically, Oslo is what I would call a platform for model-driven development. Everything that Oslo has and does is designed to enable developers to do model-driven development.
Model-driven development is what a lot of us do without knowing it. We start with abstractions of the models on which our application needs to operate (whether these models become C# classes or tables in a database is irrelevant at this point). As work progresses the models become more refined until finally we're working with code. Some of the classic problems that come with model driven development are:
Wouldn't it be awesome if we could do model-driven development in a way that allowed our developers, architects, designers, and business stakeholders to all communicate about that model using a unified language? Better still, wouldn't it be awesome if we could take that same shared model, store it in a repository of models that can be re-used throughout an enterprise, and then actually use that model directly to build data, generate code, or even execute the model directly? This is the crux of what Oslo is attempting to do.
What you get with Oslo is the following:
The bottom line is if you build data-heavy applications or applications with large models or you are currently doing your development in a model-first fashion, then you should definitely be looking into Oslo and experimenting with it. I will be showing an example of what this looks like in an upcoming blog post, but the simple benefit of being able to define your model in the easy-to-read "M" instead of writing your own T-SQL directly is a beautiful thing.
There are other things that are all worthy of their own blog posts like integration with Dublin (Microsoft's new Web Application Server Extensions... think of it as a container for WCF and WF services), using the repository to query and version shared models, and much more.
I've already experienced how different it feels to start with a simple .m text file to define my model. I can see what kind of SQL it would generate on the fly. Once I'm happy with the model, I can put it in the repository. Now if I want to I can create my own Domain-Specific Language (DSL) for defining instances of my models in a way that makes sense to the domain experts, not necessarily in a way that requires a programmer.
Anyway, this is just a quick overview of Oslo... the more lengthy I make this post the more I run the risk of confusing people with too much details too soon. I will be posting subsequent blog posts that go into the details of all the different parts of Oslo that interest me and that will hopefully interest you as well.
But how is Oslo different from: a) MS UML (so a Microsoft flavor of an open
standard) and b) a MS implementation of a (UML) modeling tool ?
Just the fact that the models can be saved in an SQL repository is not
revolutionary.
Maybe the fact that 'Oslo' cannot be described (distilled?
;-) ) in one or two lines of text indicates a problem?
In short because Oslo is a modeling platform... It isn't a single dialect
like UML and it isn't inherently visual, though it can be visualized. The
key difference is that "M" allows you to create your own grammars to suit
the needs of your own domain experts in defining the models that will drive
your application. This is different than UML (whether it's from Microsoft
or someone else) that you can hack and poke until it generates code, but
the code is crappy and isn't really what you want. What you want is a
single authoritative model that can be viewed in different contexts but is
_always the same model_. This isn't what you get with UML. A UML doc is
some representation of some concept in your head. When you write code using
the UML document as a base, it's different. It might be inspired by the
UML, but the code model is working against some concept in your head and
the UML model is working against a concept in your head, and both are
incomplete implementations. "M" allows you to take the concept that was in
your head before and put it down on disk so that it can be searched,
queried, stored, and used to generate SQL or XAML or Mgraph or whatever. I
don't think you're going to have too many conflicts between Oslo .m files
and Cocoa/Objective-C .m files since you won't find the two coding
environments on the same platform :)
Hmm. The generated code by the Oslo 'platform' can be as messy as code
generated by any modeling tool...
Even if the code is not really what you want, as it is generated it can be
used while coupled to the model...
What is the difference between Oslo and UML 2.0? Both seem to be extensible
platforms?