Overall, it looks like Oslo is primarily just a way to provide configuration information for Microsoft applications. If you want to model and generate Java, or something running on Linux, or a standalone Windows program, or embedded software, it's not for you. If you're building in-house IT applications in the Microsoft stack, it could be useful at some point in the future.
From
Aali Alikoski , who ran the DSM workshop at XP with me, knows
the DSL Tools well, and is at PDC:
"Oslo" initially seems like a disappointment for me. I
continue wondering what is the relationship between it and DSL
Tools. It seems that there is no relationship at all, which seems
odd since Oslo has many of the same features as DSL Tools (a couple
of years later), although in a more limited way in my opinion. It
looks from outside like Don Box et al haven't synched their
thoughts with Jack Greenfield, which they should have
done.
Paraphrased from
Martin
Fowler , who got a pre-PDC showing of Oslo from Don Box et al., based on further input from Sam Gentile and what I can glean from playing around for an hour with the SDK:
Oslo has three main components:
- a language (M) for textual DSLs, with three sub-languages:
- MGrammar: defines grammars for Syntax Directed Translation.[think BNF]
- MSchema: defines schemas for a Semantic Model [think C structs]
- MGraph: is a textual data format for representing instances of a Semantic Model [think JSON]
- a design surface (Quadrant) for graphical DSLs
- the "Oslo" repository that stores semantic models in a relational database
You could define a semantic model with MSchema. You could then populate it (in an ugly way) with MGraph. A better way to populate it would be to build a decent DSL using MGrammar, and pass the result to the general parser mechanism that Oslo provides, along with some input in that DSL.The parser gives you a syntax tree, but that's often not the same as a semantic model. So usually you'll write code to walk the tree and populate a semantic model defined with MSchema. Once you've done this you can easily take that model and store it in the repository.
For me, that "write code" is the worst part. If Martin's right, that means that there is no good way to just specify your DSL syntax with your schema, and have statements in that DSL saved to the repository. That seems a step back from what I'm used to in other tools like XText or MPS.