What the heck is Microsoft Iris? Here are my notes thus far.

17 Mar
2010
5 Comments

During the Windows Phone 7 debut/craze in February (Mobile World Congress), I made a connection between its UI and the Zune software’s “Iris”-powered UI. While I don’t purport to know exactly what drives the phone experience – I could be way off – I’m merely making an educated guess based on two facts: the experiences share the same look, feel, and behavior; and the team responsible for both the Phone and Zune are one and the same.

So, Windows Phone 7 aside, what the heck is “Iris”?

Microsoft Iris appears to be an offshoot of Microsoft’s Media Center .NET-based UI framework, with changes in areas such as its markup language, providing sophisticated scripting opportunities; and in its structure, increasing its modularity allowing it to be ported to various (.NET enabled) platforms with minimal effort. Its only to-date retail manifestation is the Zune PC software, residing in assemblies UIX.dll, UIX.RenderAPI.dll, and UIXControls.dll specifically. As there’s no documentation whatsoever, writing a complete piece on Iris is impossible. Instead, I will provide notes regarding its capabilities, sectioned off for organizational purposes. None of the information below has been confirmed by Microsoft. Your mileage will vary.

NOTE: This information was put together based on information sucked out of the Zune PC software. I have yet to disassemble the Windows Phone 7 components released at MIX today. I will examine these components and create a new post as needed.

Input

  • Remote control support (your usual button scan codes)

Imaging

  • Anti-aliasing support, “method” used is unknown.
  • Raw image formats (A8R8G8B8, X8R8G8B8, A8)
  • Surface image formats (A8, ARGB16_1555, ARGB32, YUY2, etc.)
  • External image formats (extensible)

Animation

  • 3D space support (cameras, axis support)
  • DirectX 9 w/ GDI (software) fallback (likely to be upgraded for DirectX 10+)
  • Rendering quality profiles, adjustable on-the-fly depending on conditions
  • Slew of built-in transitions (e.g. alpha blending, camera twirling, orientation shifts, scaling, etc.)
  • External input support (extensible)

Data

  • External input support (extensible)

Sound

Markup

  • XML-based w/ scripting support (UIX)
  • Loaded and compiled into a platform-agnostic byte-code
  • Platform-specific virtual machine to support byte-code input
  • Supports various ‘types’ (e.g. UI, Class, Effect, DataType, DataQuery)
  • Approximately 47 tuned virtual machine “opcodes” (e.g. MethodInvokePeek, PushNull), not including the 18 “operations” (e.g. MathModulus)

Video

  • Television and monitor support (NTSC, PAL, PAL60 baked in)

Accessibility

  • Right-to-left support
  • High contrast modes available

Intellectual Property Protection

  • Uses a method of signature comparison to ensure only Microsoft (at this time) can fully utilize the Iris rendering platform. Subverting the assembly check is possible but Microsoft offers a useful “tool mode” which disables rendering code (e.g. useful for scripting).

5 Comments

Austin Wise

Have you seen Visual Studio 2010 Express for Windows Phone. It let’s you use Silverlight or XNA to create apps. The Silverlight ones come with a pile of style definitions that make it look like Metro or whatever type are calling that look.

I wonder if Iris will still yet see the light of day. It’s kinda amusing how many of these UI frameworks Microsoft has made.

It’s possible to get around Application.Initialize()’s check of it’s caller’s public key by having some other code in Iris call Initialize(). DeferredCall would work for example.
It’s kinda hard to get much farther than an empty window because it seems you need to be able to create UIX files and :effort: on creating those binary files without tools.


Joe

No surprise really, given it’s the Zune team and they have an aversion to WPF and Silverlight. This is simply another .NET library built on top of DX. Same as Zune app and Media Center.
The downside to this (for consumers) is that the Phone GUI (and even Zune desktop) will be harder to port to the web as a Silverlight app. I was hoping that we would see elements of the Metro in Windows Live wave 4.


Brad

I just bounced around the code for the UIX stuff in the Zune folder in .Net Reflector. It is not a small amount of code. Really smells like they reinvented the wheel instead of going the WPF route. They do some very bizarre things over there at MS sometimes…


Machiventa

Sorry to jump off topic but do any of you know how to change things in the Zune software such as font colors? We used to be able to do it quite easily without much coding knowledge but I’m stumped on the post-4.0 software.


saivert

what about the UI language/framework that was used to build the UI stuff in Windows XP Explorer’s sidebar.
I know someone managed to edit this code and design their own stuff with it. MS also used this in some of the control panel applets.
You can use a resource editor to peek at the code.