New Role, New Challenges

I have to say that my last year at Microsoft has been a little strange. Since the Acropolis project, err, took a new direction I've been working on a few different projects which at first glance were all kind-of related but distinctly separate yet, it turns out, all leading to same point in time and space.

I spent the last few months in late 2007 on a team looking at componentization and composition. We spent a lot of time in Acropolis trying to deliver a component model that directly and elegantly supported composition but, unfortunately, a lot of that work didn't see the light of day, though we had most of it implemented and working nicely.

As is the way at Microsoft there are often a number of teams all working in the same area. As well as the Acropolis component model, there was Object Builder (which later evolved into Unity) from the Patterns and Practices folks, the Managed Add-In Framework (part of .Net 3.5) and other internal efforts that were looking at other aspects of composition, including structural type composition (duck typing) and dependency management. So our first task was to look at these component model efforts and see if we could reconcile them to come up with a singe story.

That team later became the Application Framework Core team and the unified component model became the Managed Extensibility Framework (MEF). An early drop of MEF was released recently on CodeGallery. Krzysztof Cwalina, lead PM on the MEF team, wrote a great introduction to MEF on his blog. And, in a happy turn of events, P&P's own Glenn Block joined the MEF team recently, strengthening the already strong ties between the P&P team and the MEF team. More on this a little later...

As well as looking at the component model, I started to look closely at Silverlight and the world of RIA's. In particular, I spent a lot of time trying to figure out what an application model would look like in Silverlight land. The RIA space is particularly interesting from an app model perspective - RIA's are very appealing to both web developers and to client app developers, but for different reasons...

So the first half of this year was spent looking at Navigation, Deep Linking, Data Validation, Placeholder Based Visual Composition and Separated Presentation Patterns in Silverlight. For those attending PDC this year, there are a number of sessions that will be describing this work, as well some other really exciting work being done by the UI Framework team.

During this time I was also involved with the Patterns and Practices Prism project, which later become the Composite Application Guidance for WPF. Prism provides a range of guidance - including documentation, supporting library code, a reference implementation, quick-starts and hands-on labs - to help folks build composite client applications in WPF. The P&P folks did a great job with Prism and managed to deliver amazing guidance in a very short period of time.

And that brings us to the latest news. A couple of weeks ago I left the UI Framework team to become an architect in the P&P team! I can honestly say that I have never been more excited to join a team at Microsoft. I have worked very closely with the P&P team over the years on a number of projects - including the Smart Client Architecture Guide, the Offline Application Block, the Composite UI Application Block and most recently Prism - but to be a true part of the team is a great privilege.

We have a very exciting year ahead of us too: We're busy gearing up for the next release of Prism (which will focus on patterns and guidance for composite applications in Silverlight as well as WPF) and on the next release of EntLib. I'm also working with Glenn and the MEF team to see how Unity can evolve to complement MEF once it's released (in fact Glenn and I are scheduled to deliver a session at the PDC to talk about our initial thinking here), and we're also working on emerging guidance for cloud based computing. And that just scratches the surface...

So, hopefully, spending the last year thinking about component models to support composition, and application models for Silverlight and WPF will stand me in good stead :-)