I just came back from Mix where we announced details of Silverlight’s programming model. This is pretty much what I have been working on for the last year and a half. It feels great to finally be able to talk about it. I will blog more about the details after I am back from my well deserved vacation.
But more importantly, I am supper excited that there is finally a real programming model for the Web. I am a system software developer, and to me, all existing web programming models felt like smaller or larger hacks. They are all based on technologies invented for something other than writing applications, but adopted to these scenarios over the years. For example, HTML was invented for representing documents with hyperlinks. This is quite natural for immature technologies, so I am not blaming anybody here :-).
When Silverlight’s vision started to crystallize, we realize that we have an opportunity to do the Web programming model right this time:
1. Modern programming languages: In Silverlight, you can program using your .NET language of choice, whether it’s a traditional OO language like C#, VB.NET, or C++, a dynamic language like IronPython or IronRuby, or a functional language like F#, … or choose from the plethora other 3rd party languages.
2. State of the art markup: XAML really shines when you need the ultimate flexibility in representing graphics and GUI.
3. First class garbage collected runtime: The runtime included in Silverlight (“Core CLR”) is basically the .NET Framework’s runtime with features irrelevant to the web programming removed (e.g. COM Interop).
4. Large ecosystem of tools, information, and services: Silverlight’s type system is the same CIL type system used in .NET and the Silverlight Framework is simply a subset of the .NET Framework. This means the most if not all .NET Framework tools work or can be easily adopted to Silverlight. This includes Visual Studio, FxCop, .NET Reflector, MSDN, and new specialized tools like the excellent Expression Blend.
I already wrote a couple of small applications using Silverlight, and I have to say that it makes web programming natural for the first time. The platform no longer forces you to program its way, while your intuition and years of programming experience tell you to code some other way. It makes me say, for the first time in my life, that I am proud to be a web developer :-)