Can (and will) Microsoft keep Silverlight compatible across platforms?

Microsoft is adding more and more WPF features to Silverlight (and vice versa). But there is a downside to this strategy: By adding technologies like COM support to Silverlight, Microsoft is doing damage to its story that Silverlight is a cross-platform browser plug-in that supports Windows, Mac -- and, thanks to the Mono folks at Novell , Linux -- equally.

As Microsoft made plain at its Professional Developers Conference last week, there's no end in sight to the list of new features and functionality it plans to add to Silverlight.

Some developers who have been on the fence about whether they should be developing Windows applications using Windows Presentation Foundation (WPF) or Silverlight applications see a light at the end of the tunnel of confusion. Microsoft is adding more and more WPF features to Silverlight (and vice versa). But as Tim Anderson, an IT journalist/blogger noted last week, there is a downside to this strategy: By adding technologies like COM support to Silverlight, Microsoft is doing damage to its story that Silverlight is a cross-platform browser plug-in that supports Windows, Mac -- and, thanks to the Mono folks at Novell , Linux -- equally.

(The Register's Gavin Clarke and I talk more about the risks of making Silverlight better on Windows than other platforms during our latest episode of the Microbite podcast.)

The COM object support that Microsoft is promising for Silverlight 4, the version of Microsoft's Web application framework/plug-in due to ship by mid-2010, is applicable to Silverlight running on Firefox or Internet Explorer on Windows only. Neither Mac OS X nor Linux support COM.

Microsoft officials were quick to note that adding access to COM components was a customer request, not something Microsoft did in a vacuum. When I asked Microsoft about its plans to keep Silverlight in sync across platforms, a spokesperson sent me the following statements:

"In Silverlight 4 we addressed over 8,000 customer feature requests. One specific request was adding support for accessing COM components, enabling common enterprise scenarios such as automating Microsoft Office and providing developers easy access to hardware capabilities such as scanners and security card readers."

But check this out: Microsoft officials say they are evaluating how to add some kind of COM component access to the Mac version of Silverlight. From the aforementioned spokesperson:

"Unfortunately, the Mac offers no support for COM interfaces and we’re actively evaluating options to get COM-like features on the Mac."

There's no further word on when or how Microsoft plans to add this kind of support to Silverlight for the Mac.

Meanwhile, it looks like Novell's Developer Platform Vice President Miguel de Icaza is itching to create support for the new Silverlight 4 functionality to future implementations of Moonlight, the Novell/Mono team-developed implementation of Silverlight for Linux. After the PDC, de Icaza blogged:

"For the Moonlight team, this means that there is a lot of work ahead of us to bring every Silverlight 3 and 4 feature. I think I speak for the whole Mono team when I say that this is exciting, fascinating, challenging and feels like we just drank a huge energy boost drink."

Microsoft's latest Silverlight moves mean that Silverlight is evolving to become a universal run-time for Microsoft's Common Language Runtime (CLR), the heart of .Net, according to de Icaza. Developing a desktop suite of Silverlight apps isn't just a pipe dream, de Icaza said; it's a real, doable project.

Some developers are already dreaming of the possibility of a Silverlight operating system. (For some reason, I think the Windows team might try to derail that effort before it could ever happen, but who knows?) Microsoft has more immediate and pressing concerns, though: It needs to keep Silverlight in sync across platforms if the company plans to play up the "available everywhere" piece of its Silverlight message.