At Mix 2007 in Las Vegas, Microsoft announced Silverlight (formerly known as WPF/E) to much fanfare. Silverlight is very intriguing in concept, as it further travels the path previously laid out by WPF (Silverlight’s big brother), and it aims to bring the worlds of Windows and Web development, as well as the worlds of software development and graphical design, much closer together. As more and more details emerge (and the first released version is now available), it becomes clear that Silverlight is not just an intriguing concept, but it is for real! I think it is safe to say that the developer and designer communities-even beyond Windows-stood up and took notice of the Silverlight announcement…
So what exactly is Silverlight? Simply, it is a lightweight and scaled-down cross-platform version of WPF. While WPF aims to build next-generation Windows applications based on the full-blown .NET Framework 3.0, Silverlight brings many of the WPF concepts to the Web browser, and it does so on various platforms (such as the Apple Mac and Windows Mobile). When you take a break and think about this for a moment, you realize that this is a lot to take in. So let me take a closer look at why Silverlight is so exciting.
I have previously discussed the importance of professional UI design. If you need a good example of what good design can do for your product, take a look at what Apple has done recently with the iPhone. Many would argue that the iPhone is not a really great device from a functional point of view. It is plagued by a number of issues from bad phone service and quality, to a browser that lacks support for important Web features (such as Flash or Silverlight), to lack of Exchange e-mail, task, and calendar synchronization, to a bad service provider, and so forth. Nevertheless, many users find the device extremely compelling, which so far has resulted in great sales success for Apple. And that success is really due to its awesome user interface.
You Can Do It Too!
WPF enables developers to build these types (and even drastically more advanced) user experiences. However, WPF leaves some Web developers out of the picture since WPF is a Windows-only technology. You could deploy WPF to a browser through XBAP (XAML Browser Applications), but XBAP applications still require Windows. Silverlight is different in that it provides similar experiences cross-platform. Silverlight applications run in browsers such as Internet Explorer and FireFox on Windows, but they also run on other platforms, such as the Safari browser on an Apple Mac as well as on mobile devices. Silverlight is a subset of WPF, which means that some WPF features are not supported by Silverlight (such as hardware accelerated 3D). This is due to platform limitations as well as Microsoft’s desire to keep the Silverlight runtime environment very small. Silverlight requires a runtime installation on the client, similar to the runtime requirements of Flash. For a good user experience and rapid adoption, it is important that the runtime install for users who have not previously used a Silverlight application is very small. Silverlight currently installs in a matter of seconds in a very painless fashion.
One confusing thing about Silverlight is that there currently are two different versions: Silverlight 1.0, and Silverlight 1.1 alpha. Despite the small increase in version number, the difference between the two versions is quite drastic.
Silverlight 1.0 is a relatively simple environment that uses WPF techniques and technologies (in particular XAML) to define a user interface. This provides intriguing design possibilities, such as rich client interaction within the browser, great support for animation, and outstanding media support. In fact, if you are interested in high-res video streamed over broadband, Silverlight is the ticket and far superior to any of the competing technologies.
The Future Starts Tomorrow
However, Silverlight 1.0 so far does not have a good programmability story. When it comes to adding code to the UI, the Silverlight 1.0 developer lives in the Web world of JavaScript programming in the browser. It is doable, but certainly not as powerful and comfortable as .NET development. This is where Silverlight 1.1 alpha comes in handy: The 1.1 version sports a cross-platform version of the .NET Runtime and the .NET Framework. Not the whole enchilada, because that would result in a very large install. Instead, Microsoft has identified a subset of features from the .NET Framework that make sense for Silverlight scenarios. For instance, it does not make sense to provide framework support for Windows-specific features, since Silverlight can run on non-Windows systems.
The significant result of Silverlight 1.1’s cross-platform support is that it is now possible to write code in C#, Visual Basic, or one of the new dynamic .NET languages such as IronPython or IronRuby and have that code run on any client Silverlight supports. In other words: Your .NET code can now run on a Mac client. You can even build a Silverlight application, hit F5 in Visual Studio to start a debug session, run the application on a Mac, and debug the code right on the Mac (or any other Silverlight-enabled client).
What makes Silverlight a true winner is how it integrates with “regular” Web pages. Using Silverlight you can simply create parts of an HTML page and then cross-interact between various HTML and Silverlight components. This means developers can easily enhance existing Web sites with Silverlight components without having to abandon what was done before.
Furthermore, designers and developers can easily work together on Silverlight applications. They can use tools such as Expression Blend and Visual Studio interchangeably, making for a great development and design experience that to my knowledge is not available elsewhere in similar form. (And it sure was interesting to see how Mac and Windows people both embraced Silverlight at Mix 2007.)
What is the downside of all this? Well, not all that much really. Of course one can always mourn the WPF features that Microsoft did not include in Silverlight, or the .NET Framework components that do not run in the cross-platform CLR. But then again, Microsoft has not even released Silverlight yet, so let’s wait and see what happens between now and the Silverlight 1.1 release (or even subsequent releases). Admittedly, Silverlight 1.1 is very rough at this point. Microsoft doesn’t provide a lot of controls yet (in fact, there really is only a label control at this point, but Microsoft is providing a set of additional example controls in the Silverlight 1.1 SDK). The Silverlight community has already come up with a fascinating set of examples to make up for this alpha-shortcoming. The biggest disappointment for me personally is the lack of 3D support and the lack of support for document services and document rendering.
Give It a Go!
Take the beta and alpha bits for a test-drive, and make sure you provide Microsoft some feedback. And expect lots of technical content (beyond this editorial column) in upcoming CoDe Magazine and CoDe Focus issues.