Introducing Microsoft Silverlight

It is with tremendous pleasure that I can reveal Microsoft Silverlight: our next-generation, cross-platform, cross-browser web client runtime. Silverlight (previously codenamed “WPF/E”) is a lightweight subset of XAML for building rich media experiences on the web.

  1. It supports playback of WMV files on both PC and Macintosh, with many options for interactivity during playback; with just a couple of lines of code, you can provide a platform-neutral way to handle all your movie files. Silverlight supports full-screen 720p video and offers seamless transitions between full-screen and windowed mode without losing your position in the video (something that media sites are crying out for today).
  2. By separating markup (XAML) from code, Silverlight provides a familiar web metaphor for designers and developers. You can embed XAML directly within an HTML file if you want a simple, monolithic solution, or you can keep the two separate to enforce a delineation between different web development roles.
  3. Silverlight and HTML integrate seamlessly together. Every XAML element can be accessed or manipulated from the same client-side JavaScript that would be used to interact with any DHTML element: there are no artificial boundaries or barriers, and you can even overlay HTML elements on top of Silverlight content (simply by creating a windowless frame). We’ll also make it very easy for an ASP.NET AJAX developer to add Silverlight content.
  4. You can embed XAML directly into your HTML pages; there’s nothing binary or opaque about the format. There are only three steps necessary to add animation or media to your RIA application: (i) include a standard JavaScript file in your HTML header; (ii) call a function to create the Silverlight object anywhere on the screen; (iii) add some XAML content (an animation, some media) for runtime delivery.
  5. You have full runtime interactivity with Silverlight content. The contents of the XAML file can be completely server-generated, to contain information populated from a database. From JavaScript, it’s just a matter of calling the createFromXaml method to add or remove elements dynamically at runtime. There’s nothing that you can only create or manipulate at design-time.
  6. Silverlight is just a 1MB download on a PC (slightly more on a Macintosh because the universal package contains both Intel and PowerPC versions); it supports Windows XP and above, with Windows 2000 support to come.
  7. Silverlight is blindingly fast – for example, you can play many videos simultaneously without stuttering or dropping frames (subject to network bandwidth, of course). We’re introducing a new video brush in Silverlight that allows you to use video as a texture for any 2D object (a rectangle, an ellipse or a path). This is going to allow designers incredible power to use media in new ways that have never been accessible through other existing technologies.
  8. Silverlight is both client- and server-agnostic. There’s no difference between the Macintosh and PC runtimes; you don’t need any Microsoft software on the server if you don’t want to – you can deliver a great Silverlight experience from an Apache / Linux server to a Mac OS 10.4 client.
  9. Silverlight is almost 100% upward compatible with WPF. Animation, 2D vector graphics, media, text – they’re all present in Silverlight and the concepts you’ve learnt in WPF carry forward (although Silverlight is a subset – it doesn’t support WPF features such as 3D, data binding or templates). You can use the same tools (e.g. Expression Design) to generate content for Silverlight; you can take XAML from Silverlight and use it in a WPF application when you want to scale up and take full advantage of your local machine.
  10. Ah… #10. I can’t reveal this yet – there’s a big surprise up our collective corporate sleeve that will be announced at MIX. I hate to hold back on you, but anticipation is part of the pleasure, as my mother used to tell me as a child when I was waiting impatiently for Christmas to come!

Now that Windows Vista is done, I’ll be shifting the focus of my blog slightly – I’ll still write just as much about WPF, but I’ll also start to write about its web-based little brother, since they both are part of the same continuum and my day-to-day job incorporates both technologies equally. Rich interactive web-based and Windows-based content; it’s an exciting time to be a client platform evangelist!

Categories: Microsoft, News, Silverlight

Microsoft Silverlight rivals Flash, AJAX

Microsoft’s much-touted and much-anticipated RIA (rich Internet application) entry, Silverlight, lets Web developers and designers create “rich, engaging user experiences with 2-D graphics, animation, images, media, and video,” to use Microsoft’s own description. Silverlight competes in this arena with Adobe Flash and Flex, with OpenLaszlo and Curl, and with a variety of AJAX (Asynchronous JavaScript and XML) frameworks.

As I’ve written before, RIAs comprise a spectrum of application types and technologies. Silverlight is Microsoft’s entry in the middle of the “weight” spectrum. It joins the Microsoft AJAX Library, which falls at the lightweight end, and Microsoft .Net Smart Client applications, which occupy the heavyweight end. Microsoft Silverlight 1.0 incorporates a subset of the .Net Framework and supports JavaScript. Microsoft Silverlight 1.1, currently in alpha tests, incorporates a larger subset of the .Net Framework and supports JIT-compiled C#, Visual Basic .Net, IronPython, and (eventually) IronRuby as well.

Unlike many of Microsoft’s other offerings, Silverlight was designed from the ground up to be a cross-platform, cross-browser plug-in. It currently supports Windows and Mac OS using the Internet Explorer, Firefox, and Safari browsers. In the future, it will also support Linux and the Opera browser.

As you might expect from Microsoft, Silverlight is supported by excellent development tools. You don’t absolutely need those tools: Silverlight 1.0 is largely straightforward enough that you could develop applications using free HTML and JavaScript editors if you wished, supplemented by a free XAML (Extensible Application Markup Language) editor, such as XAMLPad from the Windows SDK or Charles Petzold’s XAML Cruncher. On the other hand, the time savings from using Visual Studio for development and Expression Studio for graphics design and video preparation should more than offset their cost.

The Silverlight 1.0 SDK can install a Silverlight JavaScript Application project template into Visual Studio 2005. For the best development experience, Microsoft recommends using Visual Studio 2008, which includes Silverlight 1.1 C# and VB project templates and is currently in beta test, and a preview version of Expression Blend 2. Setting up the Silverlight 1.0 JavaScript Application project template in Visual Studio 2008 takes some effort, which I discuss in this blog entry.

Silverlight is a browser plug-in and, as such, needs to be launched from an HTML page via JavaScript. The Silverlight runtime can parse and render XAML to the browser, animate XAML elements, and respond to user input and other events. It can also download and display media, and handle “ink” input from a pen, a touchscreen, or a mouse.

The Silverlight 1.0 plug-in provides mechanisms for setting and changing the XAML content to be executed by the runtime; for retrieving objects from the runtime; for manipulation of objects through JavaScript; and for downloading image, text, glyph, audio, and video content incrementally.

I found Silverlight development easy to learn, but I had a head start: I was already familiar with XAML, JavaScript, HTML, and Visual Studio. Expression Blend was new to me, but was similar enough to other graphical design tools that I didn’t have to climb much of a learning curve. That said, I’m no graphical designer: I appreciate the division of labor between programmers and designers that is facilitated by having XAML and code-behind files.

he online Silverlight QuickStarts should give most developers enough of a feel for the product to get started with simple projects. Additional reference information on MSDN and in the SDKs helps a bit, but a number of Microsoft Technical Evangelists and bloggers have created videos to make the process even clearer. Some of the videos go further afield, covering useful topics you never expected to hear about from Microsoft, such as integrating Silverlight with PHP and Java, and using SVG (Scalable Vector Graphics) assets in Expression Design. 

Silverlight 1.0 performance is adequate as long as you don’t do too much work in JavaScript; it’s certainly more than adequate for streaming videos (which is done by the runtime) and simple XAML animations. I found Silverlight 1.0 sites to be about as responsive as AJAX, Flash, and Flex sites, but less responsive than Curl sites.

The use of JavaScript in Silverlight 1.0 helps make Silverlight compatible with multiple browsers and operating systems, but it also limits Silverlight’s performance. There are two relevant issues. First, JavaScript is an interpreted language that is inherently much slower than native code. Second, when JavaScript is running, the Silverlight plug-in stops drawing. Silverlight 1.0 can be used for simple user interfaces that don’t spend much time processing events, but it’s not appropriate for creating highly interactive applications, such as games. For that, consider Silverlight 1.1.

Now that Silverlight 1.0 has been released, the Silverlight team is devoting most of its energy to Silverlight 1.1, now in alpha, which has a number of additional features over 1.0. Foremost among these is support for development in C# and Visual Basic .Net, offering a speed boost over JavaScript of roughly 200X, judging by the Bubblemark animation test. The Silverlight Chess demo, however, reveals the computational speedup is close to a factor of 1,000. I wouldn’t be surprised if the final computational speed of Silverlight 1.1 applications was comparable to that of Curl applications, and Curl is fast enough to do ray-tracing.

Silverlight 1.1 supports a larger subset of the .Net Framework than Silverlight 1.0, enabling the development of some fairly serious applications, not to mention some fairly cool games. In Silverlight 1.1 you can do networking and communication, process XML, use isolated local storage, upload files, and use compiled dynamic languages such as IronPython.

But Silverlight 1.1 is still a work in progress. In the meantime, should you jump for Silverlight 1.0? If I had a site that could benefit from streaming media and simple animations, and was intended for viewing on Windows and Mac computers, I wouldn’t hesitate to use Silverlight 1.0, especially if I had a development staff familiar with Visual Studio and XAML. On the other hand, I wouldn’t spend the time and money needed to convert an existing Flash or Flex site to Silverlight 1.0. If performance were an issue, I’d revisit the question when Flex 3 and Silverlight 1.1 are released.

If I had a site that displayed embedded videos from YouTube, I’d have to decide if the additional interactive features I could get from Silverlight made up for the additional bandwidth cost. If my videos fit within the free 4GB hosting restriction of Silverlight Streaming by Windows Live, bandwidth wouldn’t be an issue, and I’d strongly consider moving my content.

Categories: Ajax, Flash, Microsoft, Silverlight

Microsoft posts new Windows XP SP3 build for public download – Release notes, Vista’s pattern may hint at SP3 wrapping soon

Two weeks after it last handed a new build of Windows XP Service Pack 3 (SP3) to several thousand invitation-only testers, Microsoft Corp. today posted that version for public downloading. “We’re broadening the availability of the release candidate in order to receive further user feedback prior to the release of Windows XP SP3,” a company spokeswoman said in an e-mail Tuesday afternoon. “Windows XP SP3 RC2 will be made publicly available today at 5:00 p.m. Pacific time.”

On Feb. 7, Microsoft seeded Release Candidate 2 (RC2) with the 15,000 or so testers who had been working with SP3 for several months. At that time, the company said nothing about taking the version public. This is just the second time that all Windows XP users have had the chance to try out SP3, the last scheduled major update to the six-year-old operating system. The only other public posting was of SP3 RC in December.

Microsoft, however, followed precedence today. Earlier this year, it did the same thing — sent code to its beta testers, then released it to all comers — during the run-up to finalizing Windows Vista Service Pack 1. In fact, although Microsoft has stuck to the vague schedule of delivering XP SP3 sometime in the first half of 2008, Vista’s pattern may signal that the XP Service Pack release is imminent.

Microsoft seeded the RC Refresh build of Vista SP1 on Jan. 11, then two days later posted it for public download. Twenty-two days later, it called a wrap on SP1, saying the code had met its RTM (release to manufacturing) criteria.

Another Vista indicator — the posting of revised release notes just days before SP1 went RTM — may also hint at XP SP3 be finished sooner rather than later. Today, Microsoft published the first version of the XP SP3 release notes to its Web site.

Once SP3 ships, the next major milestone for Windows XP is June 30, when the popular operating system is slated to fall off the reseller and retail availability list.

Microsoft is delivering SP3 RC2 via Windows Update, but users must first download, install, and run a small registry hack available from the company’s Download Center. The hack allows the PC to “see” the SP3 RC2 update on Windows Update. Microsoft also told users to uninstall December’s RC version of SP3 before applying this latest.

Categories: Microsoft, News

Opera: Browser market is broken—thanks to Microsoft

With recent news about Internet Explorer 8’s imminent beta, Microsoft’s long and checkered history with web standards compliance has been hurled back into the harsh, unflattering spotlight. Even though IE8 will have a new “standards compliant” mode, it won’t be perfect, stirring up a new wave of grumbling about Microsoft’s attitude and position in the browser market.

Opera CTO Håkon Wium Lie has weighed in with a new editorial at The Register about “How to fix Microsoft’s browser issues.” He begins by stating that because of Microsoft’s monopolistic practices, no real browser market exists, and the company doesn’t feel the need to actually listen to its users. “A monopoly doesn’t have to consider its customers’ wants or needs. In a functioning market, vendors must consider such things in order to compete successfully. But the market isn’t functioning,” Lie wrote.

Lie has a number of suggestions for Microsoft that he believes would improve both the IE experience and the overall browser market. For one, he says that IE needs to support Acid2 and Acid3 by default—without requiring users to select standards mode first—and that Microsoft should commit to supporting the underlying specifications of the Acid tests. He also demands a publicly-available set of documentation for exactly which standards IE uses, limitations, bugs, and extensions.

Finally, Lie calls for an end to mode switching in the future and a commitment to interoperability. “If two or more major web browsers, in official shipping versions, add standards-related functionality that’s generally considered useful to the progress of the web, and described in a publicly available specification, Microsoft must add the same functionality,” he said.

These are good suggestions for any browser, of course, although Opera has a particular bone to pick with Microsoft because it produces a competing product to IE. Opera, along with Firefox, Safari, and a smattering of smaller browsers, have been fighting tooth and nail to grab market share from the browser giant for some time now. That has proven to be somewhat difficult—at least for Opera—as Microsoft still ties its browser into its dominant operating system. And as long as Internet Explorer doesn’t (by default) work towards the same set of standards as the other browsers, standards don’t carry the significance they should.

That’s the crux of Opera’s recent antitrust complaint to the European Commission over Microsoft’s dominance. In addition to requesting that Microsoft be forced to unbundle its browser from Windows, Opera also asked that the company be forced into “fundamental and open” standards. If IE came close to rendering things the same way as Opera, Firefox, and Safari (none of which are perfect, of course), then web developers of the world wouldn’t have such a headache on their hands when creating new sites.

The one shortcoming with Opera’s antitrust complaint is that Firefox has made significant headway against Microsoft. From its 1.0 release in November 2004 to the present, Firefox has gained over 125 million users worldwide, and as of July last year, Firefox held over 40 percent of the market in several EU member nations. Firefox has managed a huge surge in popularity where Opera has failed over the last 10 years, demonstrating that it is possible to make inroads against IE’s dominant position.

Lie makes some excellent points in his editorial, and, although Microsoft’s recent actions with regards to web standards are encouraging, the company’s history in that area speaks for itself.

Categories: Microsoft, News

Report: Yahoo Board to Reject Microsoft

View larger image
SAN FRANCISCO (AP) – Yahoo Inc.’s board plans to reject Microsoft Corp.’s bid to buy the Internet pioneer, The Wall Street Jornal reported on its Web site Saturday. Board members concluded the unsolicited $44.6 billion offer massively undervalues the Web pioneer, a person familiar with the situation told the newspaper.

Categories: Microsoft, News

UPDATED: Hackers – 1 : SP1 – 0

[UPDATE 02/11/08 4:55pmFurther information has been posted about this hack here.]

[UPDATE 02/11/08 3:30amJust to answer a few questions I’ve received with regards to this post:

  • No, the hack is not complicated – download, run, wait a few seconds, reboot, done.
  • I have no idea whether it has any side-effects. Given how it works it is possible that it could hose a system.
  • Yes, I have video, but no, I’m not posting it.
  • No, I’m not making any links to hacks available.
  • No, I won’t publish virtual machine images of the compromised OS.
  • I’m not sure if Microsoft can sift out real genuine systems from fake genuine systems … probably can though.

I hope you understand.]

[UPDATE 02/10/08 5:05pmIt does seem that Microsoft hasn’t been successful in closing off all the hacks that allow non-genuine copies of Vista SP1 to pass off as genuine ones. After a few minutes of searching the darker corners of the Internet and a few seconds in the Command Prompt I was able to fool Windows into thinking that it was genuine, turning this:

Microsoft slams the door on Vista pirates (a little)

… into this:

Microsoft slams the door on Vista pirates (a little)

Microsoft slams the door on Vista pirates (a little)

Close, but no cigar. ]

[UPDATE 02/10/08 4:00pmI’m getting scattered reports claiming that there is still a hack for Windows Vista SP1 that works. I’ll investigate further later.]

With the launch of SP1 Microsoft promised to put an end to two popular hacks used by pirates to allow a non-genuine install of Windows Vista to function in the same way as a genuine install. Testing that I’ve carried out in the lab today suggests that Microsoft has been true to its word.

Microsoft shuts the door on Vista piratesThe two most common hacks used were the OEM BIOS hack and the grace timer hack (of which there were two flavors which were widespread).

Testing both these methods of circumventing Windows activation and Windows Genuine Advantage (WGA) has shown me that SP1 effectively ignores both these hacks. Systems that previously were shown to be genuine prior to the installation of SP1 then require activation – and if the system isn’t activated it is marked at non-genuine and enters the nag state.

Pirates trying to apply these hacks to new installations of Vista which include SP1 will find that neither method works.

I’m certain that when SP1 hits the Windows Update servers that there are going to be a lot of people out there surprised to find that their systems aren’t as genuine as they thought they were. This will no doubt put a few more bucks into Microsoft’s coffers.

Will this put an end to the counterfeiting of Vista? Some I’ve spoken to in the underground community say it will, while others are confident that new circumvention methods will be discovered.

Adobe Flex goes open source

Adobe Flex goes open sourceAdobe is announcing tonight that the Flex SDK will be open sourced under the Mozilla public license, the same license that they open sourced the Action Script VM under (the Tamarin project). The move is just the latest in a trend of an increasingly open ecosystem around Flash and Flex which started with the Tamarin project.

The News Rundown

The Flex team has talked about open sourcing the project since its very beginning and did things like starting and giving people very early access to the betas of Flex 2. In chatting with them, it sounds like the impetus for this was just that the Flex community had grown large enough where a lot of exciting open source activity was happening, and they wanted to be involved. As part of the initiative, Adobe will be releasing the source to the following parts:

  • The Flex Compilers (mxmlc, compc, asc) – the command line tools that compile flex code
  • Flex command line debugger
  • View source utilities
  • Automated Testing Framework
  • Flex core component library – this includes Apollo components
  • Build Scripts
  • Web tier compilers
  • Flex-Ajax Bridge – already open source, but moving from MIT license to MPL License

Adobe will start by opening the Flex bug base in June and providing daily builds of Flex 3 at that time. Then between June and December, Flex 3 will be released under its current license. Shortly after this they will fully open source the SDK and open it up to external contributors. Adobe also has plans for a “second phase” in which people outside Adobe may be granted commit privileges to the core SDK and granted ownership over “sub projects” of the SDK. They would then be in charge of managing those projects. In chatting with David Wadhwani, the vice president of product development for Flex, he had this to say about how external community members can contribute code to the Flex SDK:

“Initially people will be able to contribute code by attaching it to a bug or enhancement request in the public bug database and we’ll clearly state our development philosophies at this time. After a few months we’ll start looking for external committers. We’ll look for individuals who have been active contributors of high quality code that most closely maps to our development philosophies.”

Developers Win

For Adobe and developers, this is really win-win. Adobe gets to leverage the community and ecosystem of open source, and the framework fits very well with an open source model. Developers can now actually contribute code and fixes to the framework and have those appear in the core distribution. One of the most exciting things for me is that some of the better custom components could, in theory, make it into the core release. This gives a lot of incentive for the people out there extending Flex by themselves, and gives developers using the framework the best components out there.

In talking to people, the general consensus seems to be quite good. Adobe is going to offer a commercial license for the companies who want support and warranty from Adobe, but there are no plans to branch the two code bases. As a result, the companies who want to have more openness in their technologies will be happy and those that still want Adobe to stand behind it can feel secure. I do wonder about the implication for OpenLaszlo, which has, until now, been able to carry the banner of open source in the Rich Internet Application community. I’ve also been hearing a lot of rumors about Microsoft having more open intentions behind Silverlight, so we may hear about that at MIX next week. Interesting times ahead. Adobe has set up a Google Groups for anyone that wants to discuss the news and project over at