In case you haven't noticed, the patterns & practices Factory Factory assembly line is well and truly moving! Last month saw the release of the Smart Client Software Factory. Last week we followed this up with the Mobile Client Software Factory. And, Real Soon Now, we'll have the first official release of the Web Service Software Factory (note that I've been here long enough to know not to promise exact release dates, and even if I hadn't, you should know better than to ever believe Microsoft on this topic 🙂
So why are we spending so much time and effort on this "factory" idea? Quite simply, we feel that software factories have the potential to revolutionize the way that software gets built, much as "real" factories once revolutionized the manufacturing process. Despite all of the advances in hardware, platforms, tools and languages, developing software is still far too unpredictable and costly, and far too often the quality of the result is below par. Software Factories provide a new approach to development via an integrated set of tools and guidance that are optimized towards building a certain type of application. By using an appropriate factory, you should be able to get a more consistent, higher quality result with less effort. And if the factory wasn't designed to build applications quite the way you want them, you should be able to customize it to meet your needs.
Now before you accuse me of being delusional, I don't think we are close to realizing the full potential of this idea with our current generation of factories or the enabling tools such as GAT, GAX and the DSL Tools. We do believe - and hope you agree - that our first crop of factories are valuable - but we know we need to produce more factories, include more features and flexibility in the factories we have, improve usability, simplify authoring and customization, and make it possible to combine multiple factories in different ways.
As we continue to release new and improved factories, we hope to start making progress in a number of the areas listed above. However in addition to the incremental updates for factories on the current platform, we have just started a new initiative aimed at defining what our "next generation" factories, runtime environment and authoring tools should look like. By "next generation" we are thinking of those that will run on the "Orcas" release of Visual Studio, which will be released after Windows Vista and Office 2007. At this time we have a whole bunch of ideas about what kinds of capabilities should be included in these factories and tools - but as always we need you to keep us honest!
Even though our current factories have not been out for long, I know a lot of you have been participating in the communities and have evaluated technology preview builds, or have built your own factories or other automated guidance using GAT or DSL Tools. If you have any ideas on what it would take to bring our factory initiative to the next level, we'd love to hear from you. And if you or your organization is making a big bet around factories and are interested in having a deeper dialog with our team, please drop me an e-mail via this blog. We plan on setting up an "expert advisory" community with regular conference calls and discussions as this project progresses, and if you are in an exotic enough location we'd love to pay you a visit 🙂
Let the industrial age begin!