I was working with guidance packages based on the GAT/GAX (http://msdn.microsoft.com/en-us/library/aa905334.aspx) implementation of the Microsoft patterns & practices group for some time and I actually got to like them. It was a neat way to provide the developers help in the context of Visual Studio. I developed guidance packages that automated parts of data-binding, module definitions, glue code implementation, project creation, and O/R mapping.
I found this technique a very efficient way to provide guidance to developers and to automate some of the boring, repetitive tasks of software development. Having said that, I also felt there must be a better way to do this.
- First of all the sample guidance package was very comprehensive and difficult to understand.
- Second the authoring experience was fairly bad. Putting together recipes was cumbersome because of the use of XML without any UI help.
- Third, registering (un-registering) and debugging of the GAT package almost drove me insane.
- Lastly, the lack of compose-ability of different GAT packages was a major drawback.
Last week, at TechReady, I was talking to Michael Lehman and he is working on the next generation of guidance which is branded Microsoft Blueprint. So the question is, what is a Blueprint?
Blueprints are the next wave in implementation of Software Factories vision. They are a branded collection of modular Factories (other brands TBD) that will inspire and/or contribute to platform adoption and will evolve dynamically as technologies mature.
The first example of a Blueprint was released with the S+S blueprint (http://www.codeplex.com/ssblueprints). The S+S Blueprint is defined as:
Software-plus-Services Blueprints are a series of open source frameworks and workflow-based guidance packages designed to provide an architectural bridge and reduce the friction you experience building real-world Software-plus-Services applications. As a starting point for both architects and developers who are building real solutions,, each Software-plus-Services Blueprint includes source code and/or utilities, guidance, structured step-by-step workflow-based guidance and tools delivered within Visual Studio 2008
All that is needed is the Blueprint Manager. Having installed the blueprint manager you can subscribe to RSS feeds which update the available blueprints automatically. No big overhead is necessary and you can have your own "private" blueprint feed for company internal blueprints. The blueprints can be small and easy to handle modules that lend themselves for iterative development and composition.
Another reason why I am so excited about the Blueprints is the fact that the Blueprint runtime will replace the GAT/GAX experience. The advantage is that it will allow to use WF and a designer to define the workflow, or recipe.
How does this fit into the Software Factories vision? Blueprints are the next wave in the Software Factories implementation:
DSL Tools => p&p (GAT/GAX) => Project Glidepath => Blueprints 1.0 => Blueprints 2.0
Currently Blueprints Version 1.0 are publicly available, version 1.1 is scheduled to release any day and Version 2.0 will be released in October (around PDC time-frame).
I will start using the Blueprints to develop guidance for common scenarios and post the results here and on my private blog, so stay tuned if you are interested in Blueprints, best practices, or Software Factories.....