Noah Mendelsohn: it looks like Oslo is in part being positioned as a competitor to XML.
I don’t believe that Microsoft is explicitly positioning Oslo as an XML competitor, though that may very well be a completely unintentional side effect.
To those familiar with Rails, its focus is the “M” in MVC, or more precisely Active Record plus a DDL (which is one of the functions migrations do). It can express things that could also be expressed in JSON or XML only in the sense that an sqlite3 dump does too. It can also express constraints and relationships, things that aren’t as native or built-in to XML (some parts of which you can get via a Schema language). A concrete example of such a data declaration.
type Person {
Id : Integer32 = AutoNumber();
Name : Text;
Age : Integer32;
Spouse : Person;
} where identity Id;
One interesting fallout of the schema aspects of M is that its pattern matching aspects when applied to text enables M to be useful as a DSL.
Apparently the “Oslo” SDK CTP contains Intellipad, and requires Microsoft Visual Studio 2008 if you wish to compile and execute the samples. I would be interested in knowing if Visual Studio Express would be sufficient, but I haven’t tried it yet.
I hope it’s clear that I have no first hand knowledge of how Microsoft is “positioning” Oslo or M, though I am curious. My blog entry was mainly quoting James Clark’s impressions from his visit with the Oslo team.
Sam Ruby posts M as in MVC commenting on Noah Mendelsohn talking about the M language being closer to JSON responding to James Clark’s post, one of the co-inventors of XML, on his week spent working with the Oslo team at Microsoft....
Oslo is essentially the next evolution of the DSL Toolkits and Microsoft’s “Software Factory” initiative. Essentially, the idea is to create a declarative language that deals with more abstract constructs than classes, functions, and properties. This “Domain Specific Language” can then be consumed by a graphic designer for manipulating elements and generating an intermediate syntax tree (not unlike XML) that can then be used by code generators to spit out the code final code the model represents.
In the “Person” example above, the constraint that spousehood is symmetric is not expressed, so far as I can see. Is this: because my eyesight is poor; because it would add distracting clutter; because it can’t be; or because it isn’t necessarily so?