Whilst the previous Zune software was something like a Windows Media Player experiment turned Frankenstein, the new Zune software is something worthy of exploring.
Whether or not you agree with Tim Gideon from PC Magazine, “Microsoft’s answer to iTunes….is quite attractive and makes iTunes seem like a big, boring spreadsheet”, you must admit it is probably the only worthy contender to-date.
Whilst there’s a lot to like beyond just the looks – although I still reckon there needs to be more borders/separators – there’s an interesting bit of magic behind how the Zune software is designed and displayed.
The whole application, top-to-bottom and inside-out, is powered by a Microsoft framework no one has ever heard of before. It has several names, simply “UIX” or the “Microsoft Iris UI Framework”.
How do I know this? The most obvious clues are the framework library files in your Zune directory. They are UIX.dll, UIXrender.dll and UIXsup.dll – Microsoft Iris UI Framework, Rendering engine and UIX Debugging Support respectively. On the same note, the product name of all of these files is “Microsoft Zune-MediaCenter Platform” which helps a little later.
Looking a little deeper, all of the presentation markup files are actually embedded in a resource file called ZuneShellResources.dll (also the same file the images are in). In here we find each component of the UI defined in a separate .UIX file. There are literally hundreds of these. For example there is a “AboutDialog.UIX”, “Button.UIX”, “GalleryView.UIX” and “Tooltip.UIX”.
The UIX markup language is distinctively XML-based. Here is a snippet from “AboutDialog.UIX”.
After a little more researching together with the reference to Media Center before, it appears UIX is an extension to Media Center Markup Language (MCML), the presentation markup language used in Windows Media Center to third-party developers. In particular they share a lot of the same namespaces, for example “UI” and “DockLayout”. However they are not identical besides UIX being a 2007 schema whilst MCML is 2006.
The biggest difference in UIX is the inclusion of scripting logic. For example here is a snippet from “Scrollbar.UIX”.
Here they are defining some of the very simple logic behind a scrollbar. This also gives the impression UIX is a very low-level framework as simple controls like buttons, checkboxes and scrollbars are all user-defined and not built-in to the framework itself. The advantage being they can really fine-tune exactly how controls function as they intend it to. Explains why the buttons in the Zune software looks so good. Together, they can pretty much mimic most if not all of the common user interface available in Windows with UIX.
Rendering wise, I don’t have a lot of understanding on how UIX renders its outputs, but in the rendering engine DLL it makes references to DirectX9 functions which makes me want to believe this is 3D-accelerated renderer, which might explain why the animations and transitions run so smooth.
Whilst all of this is all well and interesting, the thing that really captures my attention is why they would invest so much time into developing this framework and implementing it just for his software when they have plenty of alternatives like Windows Presentation Foundation (WPF) to work with. I can’t stop wondering if this is going to become a new framework offering by Microsoft for all developers to use. Or maybe the foundations for the next version of Windows Media Center! In any case, now if anyone ever asks “gee, I wonder what the Zune software is designed with”, they’re not left out in the cold.