Mysterious Microsoft Iris UI Framework “UIX” behind the new Zune software eye-candy

Zune softwareWhilst 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”.

UIX code snippet

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”.

UIX code snippet

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.

55 insightful thoughts

  1. Man! if only my now igly ipod 5th G gets a 3rd party plugin that makes it go with this beautiful software : the most beautiful media player i have seen, I can freaking dump that piece of junk excel spreadsheet itunes. I can’t understand how the great Steve jobs who says “apple does fun stuff” ends up being satisfied from a “functional” but very ugly looking media player. its a media player for heaven’s sake.

  2. I think that the media center extension stuff is based on WPF but rendered on its own (MCML -> XAML), same seems to be with the Zune software, but here i think its more like silverlight with HW acceleration (no predefined controls may be a hint for silverlight since silverlight itself doesn’t have that many predefined controls now)

  3. Long,

    I think you are wrong on this one.

    The UI of the new Zune software is not re-inventing any wheel. It simply uses the Media Center SDK.

  4. @Gael, l don’t think they are reinventions; the wheel. l notice the relationship with Media Center SDK but the reason I’m curious is because it seems to be newer.

  5. hey.. is it only possible to install the zune2 software when you owned a new zune 2? or can you install it on every windows system to use it as your standard music software? i’m from germany and zune isn’t available in europe at the moment! tried to install the quiet good looking software but it says something is missing! thx for your help!

  6. Nice digging, Long. I have heard before that the new marketplace UI will be built on top of MCML, which is a much welcome change from the older HTML UI. I guess they took the opportunity and “updated” MCML as well.

    If you compare this to how Silverlight UI libraries will be deployed, you’ll see lots of similarities. The big joke w/ Silverlight 1.1 is that it doesn’t even have a Text Box control, which it will by release time. But how that Text Box control will be distributed, I think, will be very similar to how the Zune software is being distributed.

  7. Long, this would make sense if the longterm goal is to create something that will be more like a Silverlight application. Of course a Silverlight application would most likely be cross-platform, which would mean possible mac/linux support???

  8. pingpong – and why would that be any different than this UIX? Seems like they are largely based around similar concepts, unless there is something I missed.

  9. sbrown23 – maybe UiX is focused on creating apps like this new Zune software, while WPF tried to be everything to everybody and become solution waiting for its problem.

  10. I installed it on a WinXP virtual PC and it warned me that my video hardware wasn’t suitable for certain aspects of the software but it seems to work fine anyway. This leads me to believe that it does use some 3D for the animated parts.

  11. When you complain about MSFT not using WPF in the new Zune software you gotta realize that if it were based on that, people would have to download the .Net Framework 3.0 if they don’t have it. Right now that could be a lot of ppl, and what MSFT wants is to simplify the Zune experience as much as possible for their target audience, even if it means using a non-standard framework & “sacrificing” more advanced effects they could achieve with WPF.

  12. I’m curious how this relates to future cross-platform support. I’d imagine that at sometime there will be a Mac client and perhaps WPF/E (Silverlight) wasn’t quite up to snuff for things like local file modifications, USB device detect and CD burning without going through some hoops.

    Another thought is that these MCML extensions are for an upcoming XBox 360 update to help support the IPTV functionality or even a native 10′ Zune interface on the XBox itself. What if you could plug in your Zune to the 360 and see the exact same UI? At that point some of the font selections and the very simple UI would make sense.

    Or, in an Occam’s Razor sorta way it could just be that since they borrowed some of Media Center design guys that’s what they knew best and in order to meet the launch date they went with what they know, MCML, vs. relearning a brand new UI language.

  13. Its looks great, and i want my zune now!. The ipods, i think, will be a old boring device.
    1 point to microsoft.

    Why vista doesnt look like the zune software?

  14. Just a few thoughts: both Media Center/Zune and WPF are based on DirectX. Media Center however predates WPF, is specialized for a certain user interface paradigm and is undoubtedly very stable considering it’s been through a number of OS releases. WPF is relatively new, its massive, general purpose, requires the hefty .NET 3.0 redistributable, and is just not as fast as a managed DirectX app. Considering the team apparently had prior experience with UIX it makes sense that they would use it for this since its a natural fit and doesn’t introduce any of the unknowns and overhead of WPF.

    Just because WPF is here now doesn’t mean that every app that currently uses DirectX should naturally migrate to WPF. Because of that it is not unexpected that something like UIX will continue to evolve to meet the needs of its consumers.

  15. Hrm, I guess I was wrong! If you look at zune.exe.config, it very much looks like its a .NET 2.0 application. It does behave a lot like a WPF application (the way it grows/shrinks just seems exactly like every WPF app I’ve played with), I’m liking the theory of backported WPF elements to .NET2 ;)

    @Kenny hefty? Its 2.8meg download?

  16. Yes, Media Center has always been a .NET App. I can’t see the .NET dependency as the driver behind this not using WPF. The MCE/Extender integration is a better possibility – and I think there’s been a few hints about this on the forums.

    The MCE team developed the software, so it was probably also driven by existing skillsets. I can imagine the development schedule being very tight.

    WPF is very similar to the MCE SDK, and I bet a lot of the ideas grew out of it to give us what we have in WPF today. But, I can’t see MCML lasting long term. There really isn’t a good technical reason why we need both. And because it uses DirectX it means it makes it hard to plugin .NET 3 WPF components into the same process.

    Also, look at the social site on zune.net. This site uses Flash for its visuals ! This should be Silverlight, and if the PC software used WPF it could share resources with the app. The Zune could be a perfect showcase for SoS – but it looks like they are not eating the right dogfood.

  17. Man, i really really love this player and WAS happy to switch from iTunes when i figured out that it was somehow messing up Illustrator CS3. If you have Zune Media Player installed, Illustrator just wont save your files, and says “Unknown error has occurred”.

    Just popped over to the zune forums and apparently a few other users are having the same issue – http://forums.zune.net/12136/ShowPost.aspx

    I really really hope the Zune team fixes this problem coz i dont wanna go back to iTunes!

  18. Paul Jenkins: the 2.8 MB figure is the setup bootstrapper. The full redistributable that the user would likely need to download one way or another is around 50 MB for x86 and around 90 MB for x64.

  19. @Paul Jenkins: one would expect that MS teams would know what they’re doing with WPF. I still think they considered WPF to be a performance dog.

  20. @Sajith: I had this issue as well. Just go to add/remove programs in control panel and reinstall Illustrator from there. This fixes the problem.

  21. Hey Long i wanted to ask you how did you open ZuneShellResources.dll to see all the stuff inside.What kind of tool did you use?Might appear noobish question to some of you? still i want to know.
    Thanks.

  22. One of the main complaints from the old Zune software was the installation. So it makes sense that MS would want to eliminate .NET framework 3.0 from the installation process.

  23. I really like this player … Is I always told Apple does not always have the first place when talking about software…

    I am sorry Mac users but … ITune really sucks in comparison with Zune 3 software…

    As a software developer, I really hope that I will can develop all my apps using the same framework that Zune Software use…

    But what it is?? Is it really the Media Center SDK integration in Visual Studio 2008 that allow this?

  24. As I recall the 2.0 version of the Zune Software was released circa 2006 (this was when they introduced the Metro UI style that hasn’t changed much since). WPF was still in beta at the time. The reason Zune runs on a modified MCML is simple…they couldn’t ship a product on a beta framework.

Leave a Reply