
After spending the weekend hacking a mate's laptop to re-install Windows XP, I thought maybe Microsoft has lost the plot. He was legally licensed but as he lost his recovery CDs he couldn't reinstall and activate XP (if you've tried it you'll know the product key on the bottom of your computer doesn't work in a normal Windows XP retail version installation). Sending the computer away was an option, but most manufacturers charge for that service, not to mention the time involved. Why Microsoft can't enable that OEM key I'll never know. Wonder how Apple handles a lost recovery CD procedure...
Anyway,
Microsoft's MIX 07 conference opened today, and the announcements about Silverlight (
consumers here,
developers here), Microsoft's Flash-style alternative, started coming out. Ryan Stewart has summarised the announcements quite nicely in
this post. Just quickly:
- A cross-platform subset of the .NET framework will be implemented for Silverlight, allowing C#, VB etc. code to be used instead of javascript to control Silverlight apps.
- A cross-platform open-sourced dynamic language runtime (DLR) for dynamic languages, including support for Python and Ruby, so you can use those languages and others later to control Silverlight apps.
- A free (with paid options available) Windows Live Silverlight hosting service for users to store videos and Silverlight apps.
From a developer perspective, the ability to use a assortment of languages to control it, vs. Flash's ActionScript is quite cool and will have an impact. Maybe not so much on existing Flash designers, but it will be quite appealing to traditional ASP.NET, Ruby, Python etc. developers who wants to create a richer user experience, richer than what can be achieved using HTML/CSS/JS/AJAX, and easier too without having to learn a new language. Yes, they'll have to learn XAML, but
Expression Blend fills that gap, as does the new
'Orcas' Visual Studio, including the free
Express versions. The fact that they're making examples of Ruby and Python is significant - they're catching on and reaching out beyond the ASP.NET world, and trying to get on the Ruby wave that's massive at the moment.
Using .NET languages, there are some pretty cool functions too, including the ability to use the new
LINQ technology to access data sources. The detailed MSDN documentation for Silverlight's subset of .NET framework isn't up yet, so I don't know what functions are available - be interesting if there are any IO functions, and other system functions. Checking out
'Orcas' Beta 1 plus the
Silverlight extensions will tell you this, but I haven't had time to download that yet. Knowing that will let us know how well it compares with
Adobe's Apollo too. (see update #2 below).
Open-sourcing the DLR is a good move, probably designed to encourage developers to adapt other languages to it. Remains to be seen how well it will be taken though.
It's nice to finally see Microsoft seeing beyond the Windows platform. The Mac support will go a long way in helping its adoption, given we all know how loud they are. So the Linux fanboys will still whinge, and I reckon there should be Silverlight support for it to complete it, although licensing and its current graphics systems could be difficult, but if Adobe can do it, surely Microsoft can. Some say the lack of development programs like VS and Expression Blend on Macs will hold it back, and it probably will to a certain extent, but the advantage of Silverlight is that all of it are just simple text files, no proprietary binary formats like Flash. And if you do want to use the .NET languages, the compilers and IDE are free and can run within a Boot Camped Windows. Or maybe you can use Mono to compile it, don't know. It won't be long until something will emerge for Macs anyway. Effectively, Silverlight apps can be developed without any software costs on any platform, except it's easier on Windows thanks to VS 'Orcas' Express. To be fair,
Flex's SDK is also free, and it is text-file based as well (MXML), plus now
open-sourced too.
Personally, I'm most excited about the .NET language support, as it means I can write cross-platform WPF-style .NET apps. I'll hold out until they reveal the complete subset of the .NET framework supported, but its a great move. The
ability to debug them is awesome too - you can set breakpoints in VS when running the Silverlight app, even remotely on a Mac! The size of the runtime is great too - with a target size of 4MB, containing Silverlight and the .NET framework subset.
The developer 'getting started' video is a great into to the whole thing -
http://silverlight.net/GetStarted/ - weirdly enough it is WMV, so you have to be using Windows to watch it, or Flip4Mac. Not a good start when you're reaching out... More screencasts
here, in WMV also.
More announcements to come I reckon (and hope), as this is only day 1 of MIX 07. Microsoft has finally picked up their game. They've left the Windows-only mentality behind and are embracing technology as a whole, rather than playing silly games with operating systems. They used Macs during their MIX presentations, and even have a
section on SourceForge on open-source compatibility! [via
Berno's Blog] Yes, it's only the beginning, and Microsoft hasn't always be great at following through, but hey, it's a start. Now if only they'd change some other things, like get rid of the crappy activation program, or at least make it easier for users to recover their machines without being locked to certain recovery CDs

P.S. It's quite amazing how Adobe and Apple have changed Microsoft so much, and will continue to at all angles, from development platforms/frameworks, to operating systems, to mobile phones, music players and other consumer electronics. Finally Microsoft isn't getting competition that they can stomp all over - and that can only be a good thing for Microsoft and consumers.
UPDATE (2/5/2007): There seems to be an
IronRuby implementation too, to go with
IronPython so you can use both as a .NET language, rather than just a scripting one. Speaking of the DLR, I wonder how it works - does it include a python, ruby etc. parser with it, or is an external parser required? How it that distributed, what happens if your destination computer doesn't have it? Another, more technical summary
here with a nice diagram showing how everything fits in
here. I have to get this stuff and play with [:D)]
UPDATE #2 (2/5/2007): Just checked out the diagram
here, listing all the .NET classes available, and there's are System.IO and System.IO.IsolatedStorage classes. Looks like offline storage to me. Now, I wonder how well it integrates with the desktop...