MS DLR and Silverlight


Some time ago MS did the Mix’07 conference. We didn’t publish any articles on this mostly because there is a lot of material to digest but I think we can sum the most exciting things that came out of it as DLR and Silverlight.

Q1: What is your language of choice?

Q2: Would you like to deliver your app to anyone through the browser?

Q3: Would you like to offer some sizzling graphics?

Now, if you answered Q1 with Java, you’re in luck as Java has this thing called applets and you can reach a lot of people but not too many as folks don’t like big downloads and difficult installs, you might have issues with Q3 but you could do some nice apps. If you answered Q1 with ActionScript, Flash is your tool of choice. Of course you’ve got great graphic tools, market penetration, but how big and complex can your application become, also what is the performance you can expect?

Notoriously .Net already runs a bunch of languages, and it already has the capability to run applications in a browser. Has anyone seen any in all these years .Net was out in the wild? Not me.

What the “cool guys” doing right now is Ruby, JavaScript and Python. All these languages have one thing in common, they are dynamic in nature. That opened a possibility for MS to further extend .Net in adding a layer that would expose .Net runtime internals and enable implementation of many more dynamic languages on top of it. This I think is the killer move. The “cool guys” don’t do things because they are just cool (which, let’s admit it, they are) but also because it helps them do more (stuff) in less (time) with (hopefully) better quality. The “cool guys” are also pragmatic and they appreciate a platform that can host their application to an potential audience of 1.1B users. The “cool guys” actually produce applications or what people call killer-apps and they drive the industry.

So, some people went in a room and said, let’s get some cool basic stuff out of WPF, make it really small and lean and add beside the .Net runtime the DLR, make it cross platform (initially MS ships a Windows and MacOS plugin that will run under IE, Firefox and Safari, mono has produced a Linux prototype in just 21 days) and lets call it Flash-Killer. Someone objected and they renamed it so it became Silverlight, but that is another story.

Just think, you can build an application that can run in any browser, on any platform in any language.

Silverlight is definitely a step backwards from WPF as new tools will have to be created but that does seems to be a small price to pay if people adopt it early and start developing as time to market is indeed even more critical then ever. Graphically WPF is in my opinion best served with the Expression suite and has a great component model, Adobe has great experience and when finally Apollo ships it’ll be just as good if not better, but they target a single language. JavaFX (could they choose a worse name with all the Java/JavaScript confusion?) at the moment seems to have rather poor tooling support but rather live open source community and have the muscle to push the runtime to many devices, big and small, they also would seem to be moving to a smaller runtime at the cost of dropping some compatibility (yet reifying generics is still a no no, geez).

What will this bring? We still don’t know. Will we see the Web fracture having Web (2.0), Flash, Silverlight, JavaFX+applets all chasing the same goal? It’s hard to tell, on one hand these new platforms offer applications that were not possible to create before thus giving more value to the web and to the final users, but on the other it’ll fracture developers, tool sets and bring more interoperability problems. SOA’s and WS’s will finally find their ultimate cause of existing (REST and JSON as well).
If I see one thing in danger of this fracture is loosing ontology’s, loosing global knowledge that can be harvested and automatically linked together on the web if we keep the web simple. Something tells me in the end both worlds will coexists and we’ll just have more and more options instead dumping one for the other. What do you see?