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

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