I've been meaning to do a 'brain dump' of why we don't make the Windows Media Center look and feel available to third party developers. Here goes...
Application Compatability Risk
We know exactly who uses our buttons, galleries, templates, etc. -- us. If we change these we break exactly one application -- Windows Media Center. Making them available to third parties imparts a certain amount of risk in that we can break applications without knowing we have done so. For example, we have tweaked media galleries in every version of Windows Media Center to date. Compare the music gallery in Emerald to the one in Diamond, for example of one of the more dramatic changes. What happens if your app is based on our gallery because it assumes certain things about that gallery which are incompatible with our new gallery. Trouble for us -- and you.
Variety Is The Spice Of Life
It would be a very boring world if every application looked like Windows Media Center. We do not have the market cornered in great experiences designed for use with remote control. Now that we have a platform (Windows Media Center Presentation Layer) which allows you to do the same class of animations (including full fidelity remoting to XBox 360 Media Center Extender) as Windows Media Center itself we no longer have this 'thunking down' into a low fidelity HTML experience. I'm excited to see what folks are able to do with this power at their fingertips, and certainly expect developer enthusiasts to start shipping features which surpass our own (have you seen this http://mobilewares.spaces.live.com/blog/cns!78533A1A2E078194!177.entry -- my wife was asking how she could keep track of Law & Order episodes the other night, and this app holds the promise of just that feature --pretty darn cool).
Public vs. Private Platform
Because we are both a product and a platform we only have so much time to create the public platform, and the public platform will always be a subset of the private platform (stuff we use to create our product) due to this time constraint. The Windows Media Center user experience relies in some cases on private platform features not present in the public platform. Let me give you an example: The lens effect seen on the Windows Media Center Start Menu when you navigate items in the horizontal strips. Our design team wanted a very specific (and quite subtle) look and feel in this lens effect which could not be created to their satisfaction without a *huge* investment in MCML authoring (and even then, we still really couldn't give them exactly what they desired). So we wrote new rendering code (which is in itself non-trivial) to accomplish the effect -- but it came in too late to be considered part of what we could expose publicly. At some point in any software you have to make a decision about what you will vs. won't ship (even if you use an Agile method or 'ship daily' as can be done with web apps). All of that to say this: It's not possible to give you the controls unless they can be accomplished with the public platform. Classic chicken or egg first problem.
Focus On The Fundamentals
We are still focused on making sure the platform fundamentals are in place -- for example, expanding on what you can do with web application approach (see http://blog.mediacentersandbox.com/PermaLink,guid,cb622812-d80f-45d2-82d6-a54099e62e21.aspx). For example, you can't use session cookies in web apps today -- it's way more important to get this in than trying to recreate Windows Media Center look and feel for the public platform (see previous point).
I'm sure some folks will zero in on this particular point and say 'I knew it -- it's all about the money!' So, up front I'll admit this could also be titled 'who pays our bills' -- which is why I put it at the bottom of this list -- so you would read the prior items first and hopefully see it's a wholistic decision process. We are, after all, out to make a profit for ourselves and shareholders. With but a few exceptions, everyone who has a day job does it to make a living. This puts food on our table and a roof over our heads. But I digress... We make the platform for multiple audiences -- big, brand name partners and individual developer enthusiasts, and many, many medium and small entities in between (think in terms of Large, Medium, Small and Individual audiences). Unfortunately, the needs of these groups will inevitably conflict in some ways -- and this is one of those areas. The big companies who have well established brands will never use a Microsoft brand for their experiences -- it diminishes their brand if they do (and they spend GOBS of money and resources into maintaining their brand -- sometimes too much, and at the expense of great experiences, but that's a topic for another day). We could do a bunch of work to expose our look and feel, but the large and medium shops will never use them. Never. And increasingly, neither do the small shops. Honestly, it's never come up in the list of feature requests from large or medium shops and only very rarely from the small shops. That means we can realize a zero return on investment in this area in terms of dollars. At the end of the day, those partners are what makes or breaks our platform from a 'budget' perspective. It would be great if we could make a platform solely for the individual (aka developer enthusiast) audience, but at this point in the Windows Media Center platform life we can't build a business on this alone. As we grow, and developer enthusiasts grow, we hope to do more things specifically for this audience. The Z sample application is a great example of where I specifically added 'features' to our SDK which would target and assist the individual developer enthusiast -- and hopefully it's a great start.
Our platform provides for maximum design flexibility at the cost of reuse. We propose 'one size fits all' is not a true statement -- therefore the platform is one which can be tailored at the extreme for any purpose. We understand this precludes many development folks who are used to other types of platforms which provide controls. We've been pretty honest and straightforward the platform may be difficult to grasp for the mass market developer or weekend coder.
As with any software product or platform there is a finite amount of resources to put into the project. We've evaluated the idea of including the Windows Media Center controls in our platform resources with each release. And with each release it's been deemed as less valuable than improving the features of the existing platform of visual primitives. Of course, we are still very early in the lifetime of this platform -- at the time of this writing, just over a year since it's been commercially available to consumers. Stick with the platform for 10-15 more years and let's see what happens to this request over time.
[3/26/2008 Edited To Add the Maximum Flexibility and Resource Constraints sections.]