This morning was Rick Rashid’s keynote with “the big announcement“: a framework and tools for developing Domain Specific Languages in VSTS. Essentially, this is a toolkit for building your own modeling tools on top of the infrastructure that powers the VSTS Distributed System Designers (aka WhiteHorse). Personally, I think this is pretty exciting stuff and I can’t wait to play with it more in the coming months.

As part of the announcement, they demoed the toolkit with a DSL for programming the flow of pages in a web application. Typically, you would use a framework like User Interface Process for this. However, the UIP comes with 130 pages of documentation and a variety of classes and configuration settings. By building a DSL on top of the framework, we can make the developers significantly more productive. I’ve posted a screen shot of the designer – it’s essentially a box-and-stick modeling environment – boxes are pages and sticks are transitions. Dragging a new page onto the design surface from the toolbar generates a new web page in the solution. Dragging a transition onto the design surface changes the config file. That’s much more productive than mucking around in source and config files to accomplish the same task.

Of course, the standard question when we announce stuff like this is “when can I get my hands on it?” We’re going to release a tech preview version of the DSL Toolkit “real soon now”. You’ll be able to download it from the newly minted VSTS Workshop page. I hear that this project, now that it’s public, is going to be very transparent to the community, so keep an eye out for more info (of course, I’ll blog it when the toolkit is released). Honestly, the version we’re shipping “real soon” is much rougher than what we previewed in the keynote this morning, but we’ll be updating it periodically as it marches towards release.

I’ve had several good conversations in the booth with people wanting more info about VSTS and the DSL toolkit as well as Software Factories in general. As is typical, I learn as much as I teach in these sorts of discussions. For example, I met Gan Deng from Vanderbilt who showed me GME – the Generic Modeling Environment – which is DSL modeling environment similar conceptually to what we announced today for VSTS. Not sure when I’m going to get to play with it, but it’s nice to see academia support for DSLs.

The only downer is that some of the OOPSLA crowd was put-off by a product demo during the keynote. Stuart described it as a “commercial break”. Several people gave me “brutal feedback” that brazen marketing displays like product demos don’t work in OOPSLA keynotes. But others thought it was cool. Good to keep in mind for next year.

Update: Alan Kay, in his Turing Award Lecture, made a joke about about our product announcement this morning and everyone laughed, including me.

Update 2: After making a joke about our morning’s product demo (and several other assorted jabs), Alan Kay ended his Turing Award Lecture with…wait for it…a product demo. Two product demos, actually. Squeak is educational programming environment, based on Smalltalk. It is freely downloadable and has an associated community and wiki. Alan did a simple little demo where he drew a car and a steering wheel and was able to steer the car as it moved by rotating the steering wheel. Cool. Alan’s other demo, Croquet is a “massively multi-user virtual learning environment” which is built on top of Squeak. While I liked Squeak, I don’t know many people who spend significant time in a virtual 3D space who aren’t gaming. Frankly, Croquet doesn’t seem particularly practical or useful – check out this screenshot of document collaboration in Croquet. In this example, the 3D space is more of a distraction than an enabler. The only place Croquet seems useful to me is for dynamic 3D simulations, such as this screenshot demonstrating the Coriolis effect.


There was a big difference between Kay's lecture and the keynote that I don't think you are capturing. - The product demo during the Keynote was delivered by the Program Manager for the tool; not from the primary speaker (Head of MS Research) - The product demo was very hard to follow and didn't seem to re-enforce any of the topics that the speaker had let up to; it felt very disconnected: hence the commercial feel to it - Kay's lecture was really his business; the lecture is the reward he gets for all the great contributions he has made during his career; if he wan't to show some products that's his choice. A Keynote is different; its supposed to setup the theme of the conference: there are plenty of other times during the conference for product demos - Kay's demo wasn't really pushing a vendor or a product; but rather (IMO) trying to show the lack of innovation in computing science; this fit very well with his entire lecture which was positioned as a challenge to the community to teach better, and innovate more. (BTW: it is clear that he views MS as one of the companies NOT innovating I would be interested to see you blog about that) I saw MANY people just walk out during the MS Keynote demo it was clear that - Many (more than 50%) were Java developers that really have no use for MS only tools - Many felt it inappropriate to be doing a product demo at that time - MS "abused" its priviledge of the Keynote by resorting to blatant produt advertising cheers b PS: One my Day 1 highlights was Ward Cunningham's lecture did you attend that?
GME has been around for a long time - your comments display a patronizing attitude. If I were Gan I nmight very well say it's nice to finally see DSL support from Industry.
If all Microsoft has got to offer is a highly bespoke VS specific tool that is based on XML to VS translation, then this is a weak effort indeed, and certainly not the vision of DSL's that people had in mind. Metatools such as GME and EMF and standards such as MOF have emerged because DSL development is very much dependent on a technology independent meta-data foundation. Because MS has chosen to ignore this, it will end up producing tools that are ultimately constrained by what they can offer the community.