One of the nicest moments for me at Code Generation 2007 was sitting on the same table as Alan Cameron Wills during Jos Warmer's presentation. Alan had a white package that he was unwrapping with some glee, and when I saw the contents I could understand his happiness: it was a copy of the DSL Tools team's new book, Domain-Specific Development with Visual Studio DSL Tools.
I reached over and shook his hand to congratulate him, knowing what it feels like to finally finish a long project. He pushed the book over to me for a look, and I had a quick browse. Pretty cover, inside lots of pictures, big font, and loads of information about how to use their tools. I gave him the thumbs up and slid the book back to him. He smiled and pushed it back to me... He whispered that this was copy #1 in the world as far as he knew, and I could have it! After the talk he was kind enough to write a short message inside, as you can see from the picture: "Steven -- Hope this is good for a Blog! Alan". It certainly is! Many thanks to Alan for his generosity.
Unlike the Software Factories book, which was a broad general vision of DSM and existing techniques like AOP and patterns, this book focuses on how to accomplish individual tasks with Microsoft's DSL Tools. In effect, the book is the manual for the tools. There are short introductions to each section, saying why you might want to do that particular task, but the vast majority of the book is a description of the tools. It describes the user interface for the tasks, and for areas that still have to be hand-coded, covers the methods and classes of the framework they provide.
There are a good number of examples throughout, which helps the reader understand by making the ideas more concrete. At some points, particularly where the examples are not possible to achieve using just the DSL Tools UI but require hand coding, the amount and length of code listings starts to get in the way of that understanding. To the authors, the code and the reasoning behind it is clear, but not always I suspect for the readers. The individual lines all make sense, there are nice comments, and you can probably write your own tweaked version for your own case, but I wonder whether there is a danger that looking at things on this low level makes it hard to see the wood for the trees.
Of course, this worry is a common one when dealing with frameworks, and is actually one of the main reasons we need DSM. When coding gets to the stage that you can copy and paste (or retype) 15-20 lines of code from a book, and just tweak a couple of parameters to fit your case, it's often time to look at finding a higher level way that allows you to write a single line of code with just those parameters, or even better a language or tool that knows what parameters to expect. Since in this case that new framework, language or tool will hopefully be DSL Tools 2.0, there is of course little the authors can do at the moment. They're giving the best help they can to current users by writing the book, and now I'm sure they're happy to get back to writing the new versions of the tools.
In summary, this is a great book for users of the current version of DSL Tools. In fact I guess it's pretty much a "must have" book, and is a rare case of the developers of a tool being able to write a decent manual for that tool. Farming this out to some technical writers at this stage probably wouldn't have worked. However, if you're not already committed to making your own modeling language with the current version of DSL Tools, there's not really all that much in this book for you. It's interesting enough to read, but can only give brief snippets of information and guidance about the general task of creating DSM languages and generators, using them in projects and maintaining them. For instance, there are only two pages on "DSL evolution", a topic which provided one of the most interesting and enlightening sessions at Code Generation 2007. Whilst this is more of a manual than a general book about the DSM approach, I'm sure the users of Microsoft's tools will find they need some help in that area too. So, I'm sure DSL Tools users will be overjoyed to get this book, but also eagerly await the next book: "Advanced Domain-Specific Development" -- no pressure, Alan! :-)
PS There's a great picture by Clemens Reijnen on Flickr of Alan handing copy #2 to Jos at the end of the talk. Unfortunately, the network is down at the moment so I can't link to it: follow the Flickr link on Clemens' home page. [Edit: added picture]