New Microsoft Silverlight Features Have Windows Bias
An anonymous reader writes with this quote from a story at El Reg about an early look at the Silverlight 4 beta:
"There are ... major changes to Silverlight's out-of-browser functionality, a loose equivalent to Adobe Systems' AIR runtime for Flash. Even when fully sandboxed, which means having the same permissions that would apply to a browser-hosted Silverlight applet, out-of-browser applications get an HTML control, custom window settings, and the ability to fire pop-up notifications. ... Unfortunately, some of these features are not what they first appear. The HTML control in Silverlight 4 is not a new embedded browser from Microsoft, but uses components from Internet Explorer on Windows, or Safari on the Mac, which means that the same content might render differently. The HTML control only works out-of-browser, and simply displays a blank space if browser-hosted. Clipboard support is text-only in the Silverlight 4 beta, though this could change for the full release. More seriously, COM automation is a Windows-only feature, introducing differentiation between the Mac and Windows implementations."
...thank God.
Only Microsoft has the peculiar genius that allows them to take a relatively straightforward concept (reference counting/smart pointers) add a totally over-the-top, incomprehensible library that was designed around the limitations of the broken template support in VC6 (ATL), then totally abandon it for "teh new shiny" because you lost a court case against Sun (.net).
I have written a *lot* of code in ATL, and I regret practically every moment of it; I liked the idea of COM/ActiveX, it's actually a really cool concept, and it even seemed to have an awesome future (all these COM objects that could talk to each other...Excel could control my toaster via my custom ActiveX dll) but suddenly it became all about the web and the era of a component-laden operating system ended before it really ever began. So for that I slogged through a bunch of ATL books, got to the point where I thought I knew how it all worked, and then all Microsoft wanted talk about was C# and .net.
Obviously this is some kind of mistake. Miguel assured all us Linux users that Microsoft was a changed company, they would NEVER do something like this! Surely Moonlight would be 100% compatible with Silverlight and Linux would be considered a tier 1 platform!
He wouldn't have lied, would he?
Each time I read about silverlight I get angry. Why won't Microsoft invest time and energy making IE html5 compliant instead of promoting this f*** product that nobody wants anyway. I mean, look at the competition for god sake. IE is stuck with Javascript 1.5 since November 2000. Man we are now 9 years since Ms has updated its Javascript engine. Firefox, Chrome, Safari, name it, all have javascript support almost if not ready for ECMAScript 5.
What is comforting in a way is the low deployment of silverlight. Google can give us a slight idea : http://www.google.com/insights/search/#q=adobe%20flash%2Cmicrosoft%20silverlight&date=today%2012-m&cmpt=q
I know at least that it is not deployed at work : 20,000 less pcs for Microsoft + the 2 mine at home.
From TFA:
Unfortunately, some of these features are not what they first appear. The HTML control in Silverlight 4 is not a new embedded browser from Microsoft, but uses components from Internet Explorer on Windows, or Safari on the Mac, which means that the same content might render differently. The HTML control only works out-of-browser, and simply displays a blank space if browser-hosted.
The difference in rendering between IE on Windows and Safari on Macosx is a reality, whether silverlight is involved or not. The purpose of the HTML Control is to allow scenarios dependent on the HTML Bridge, the part of silverlight that blurs the lines and allows communication between the html dom + javascript and C# code, to run correctly when the app is hosted out of the browser. It's essentially a crutch to allow developers that want to use siverlight a way to leverage existing investments in web application development.
More seriously, COM automation is a Windows-only feature, introducing differentiation between the Mac and Windows implementations. Since cross-platform Mac and Windows is a key Silverlight feature, it is curious that Microsoft has now decided to make it platform-specific in such an important respect. Microsoft Office and parts of the Windows API have a COM interface, so access to COM makes Silverlight a much more capable client.
This is a fairly obscure feature, and I'm fairly surprised that it was included at all, but doubt it'll be of use to the vast majority of current and future silverlight developers out there. Like the html control, it's a crutch, to allow developers that want to use silverlight a way to leverage existing investments. The mantra I've heard out of the silverlight team is to focus on unblocking customer scenarios (scenarios they cannot unblock themselves) without compromising the overall feature goals (like keeping the runtime download small).
Nevertheless, Silverlight has crossed a threshold. It is now a runtime that has extended functionality only on Windows. That will not help Microsoft win developers from Adobe AIR, which has the same features on both Mac and Windows.
I don't think it'll matter. Any developer that is seriously considering using silverlight over Adobe AIR, but is then persuaded not to because Silverlight's Trusted Out-Of-Browser scenario has COM support on Windows and not on Mac is "Doing It Wrong". It's an edge case feature that doesn't affect Silverlight's over all "Cross-Platforminess".
Flame On.
We should be boycotting the Olympics then. This is unacceptable.
That may well be true; the Olympics committe doesn't feel it is responsible to anybody and will do anything for money. However; if we judge from history the complaints and problems this will raise will help set back Silverlight acceptance. After the way it was done last time nobody sensible would use silverlight for anything. In fact I'd suggest everybody get ready; set up a system which doesn't work with silverlight and then complain about it, but most of us on Slashdot probably already have several and it really isn't needed anyway.
=~ s,(.*),<sarcasm>$1</sarcasm>,g if any_point_you_wish();
I can't wait for HTML5 to start being widely implemented. Get away from both of them.
My blog. Good stuff (when I remember to update it). Read it.
The full .Net framework has a lot of hacks to support COM. Your STA running managed code can get preempted at any time to Release COM objects behind RCWs that get garbage collected. This can cause interesting stress bugs. It gets even worse when an RCW around an STA gets finalized on the finalizer thread. That blocks the finalizer thread, because it waits for .Net to Release the COM object on the original STA thread. If the STA thread is in a wait state, you can hang the finalizer thread. Another big issue is around supplying alternative credentials for DCOM. .Net has no exposure of the CoCreateInstanceEx API that allows you to specify alternative credentials. Even if you wrap it yourself, you have to make sure you call CoSetProxyBlanket before you do any calls - and .Net does QueryInterface under the hood for you, and you have to make sure CoSetProxyBlanket is called again, then the simple programming interface of .Net becomes more of a hindrance than a help.
They were supposed to get away from COM in the Silverlight versions. Now the waters are even muddier, because WPF is still supported on the Full version of the CLR.