Scott Hanselman

Putting Mix, Silverlight, the CoreCLR and the DLR into context

May 1, '07 Comments [28] Posted in ASP.NET | Javascript | Mix | Programming | Ruby | Silverlight | XML
Sponsored By

Updated: I got some feedback from some MSFTies and this is an updated ecosystem diagram. For reference, here's the original ecosystem diagram. This version is better, but still who knows, eh?

I'm over here at Mix. There were some big announcements at Mix07 this year. Many were expected, a few were not. I've been following WPF/E with interest for the better part of a year.

Overheard: "There's a lot of college kids, lotta high school kids out there who expect more things to move." - CEO of MLB.com referring to the increased expectations young folks have while on the web.

I'm off in a corner here at some party trying to put it all into context. For a complete list of links, I'll suggest you head over to Sam Gentile's site.

Most Awesome Marketing-Guy Quote of the Day: "This announcement opens up significant opportunities in both the 'lean-in' and 'lean-back' environments." - MLB Marketing Guy refererring to folks watching MLB.com at their desks, or on their couches.

 Here's what was announced in the driest terms:

  • Silverlight 1.0 Beta - Lightweight Browser plugin that can render XAML, play HD 720p Video with included VC-1 codecs and be accessed via JavaScript. Supports Windows and Mac OS X.
  • Silverlight 1.1 Alpha - All of the above including a CLR 2.0 (Whidbey) compiled CLR and Type System along with select BCL (Base Class Library) classes from the .NET Framework 3.5 (Orcas) including DLINQ. Also included is a new dynamic language runtime (DLR) layer and support coming for Python, Ruby, VBScript VBx (Visual Basic "10") and JavaScript (ECMAScript). Compiled/JIT'ed JavaScript is at least 1000x faster than interpreted. Supports Windows and Mac OS X.
  • Expression Studio - Design, asset management and interaction design application suite with XAML editing and Visual Studio integration, along with a Media Encoder.
  • Silverlight Streaming - More developer focused than YouTube, this service gives you 4GB of free storage and virtually unlimited streaming of video clips using Microsoft's content deployment network. Why? Because Silverlight looks bad if your web host sucks, and if Microsoft hosts your videos, you, Microsoft, and Silverlight all look good.

Some good places to start learning are:

Now, what follows is just me talking. Not my company, just me and everything here is just my opinion and ruminations. 

Everyone who saw the keynote has a different take on what they've seen, and what Silverlight means to them. While the Microsoft messaging was pretty spot-on, I think that some context couldn't hurt.

Silverlight has Flash-like qualities, and Adobe was brilliant to counter the coming announcement with the Open Sourcing of Flex. All this means more choices for me, the developer.

Overheard: "This is the biggest thing since God talked to Moses. Well, maybe not, but it's still up there."

While folks are justifiably stoked about the rich media and interaction benefits of Silverlight, and I don't mean to draw attention away from those good things, but I want to touch on the most game-changing aspects of this announcement while you all are watching 720p HD video over Silverlight and thinking this is a direct shot over the Flash bow.

1. The impact of the new Dynamic Language Runtime should not be underestimated.

This new layer on the CLR adds a number of features around code generation and dynamic type systems that take the CLR's already decent support for dynamic languages to a considerably greater level. This DLR will enable support for Python, EcmaScript 3.0, Visual Basic "10" (VBx - VB as Dynamic Language), and Ruby. Initially this support will be enabled in Silverlight in the browser sandbox, but will no doubt move to the server side soon.

A cool side note; John's team added a subtle nod to the Ruby team in their demo. If you want to access a .NET library, like say, List.AddRange(), when you access it from Ruby it'll be list.add_range. Subtle, but an important (and classy) statement of respect for one of the things that Ruby programmers feel strongly about.

1a. Code for the DLR, IronPython and IronRuby will be released under the Microsoft Permissive License.

This is nothing but a good thing. I look forward to seeing what the folks who use Boo (another alternate .NET language) and the MonoRail and Castle Project guys come up with in to exploit these new dynamic services for their languages and environments.

2. There's a "new" CLR in town, and it's for more than just animation.

During the demo, ScottGu showed a Windows Developer connecting to a "CoreCLR Remote Debugging Service." The text "CoreCLR" appeared briefly in the Attach to Process Window in Visual Studio.

Check out this great diagram of the Silverlight 1.1 world, at right - click for the giant version.

The CoreCLR term refers to the CLR that powers the Silverlight 1.1 Alpha. I like to think of this as a "reimagining" or refactoring of the current CLR. The Silverlight CLR isn't tiny, micro, or crippled. It's refactored, modularized, tightened, simpler with fewer dependencies. This new CLR design will likely power and influence future CLR versions. The diagram above is my own speculation, memory and from Googling around.

Also, the CoreCLR in Silverlight can live in the same process space as the existing CLR. So if Internet Explorer has a .NET plugin or toolbar loaded, Silverlight keeps working fine.

2a. You can use and re-use existing .NET assemblies, business logic even, in Silverlight

The assembly format is the same - it's the same CLR - so things that you've previously used on the server-side and potentially (depending on the libraries in the BCL you used) reuse them on the browser-side and finally put all these Core2Duos to work doing more than just waiting for <angle brackets to show up> for rendering.

2b. It works on a Mac. Same binaries, no cross compilation, just IL, working cross-platform.

The Mac version of Silverlight is a Universal Binary and runs the same code and renders the XAML exactly the same on the Mac as it does on Windows. There's also, as mentioned before, support for debugging Silverlight client apps running on a Mac directly from within Visual Studio.

Overheard: "It's the new smart client. It's a chubby client. Everyone knows chubby girls are smarter."

One great prt of the demo was done entirely in TextMate on a Mac where ScottGu created a Silverlight XAML file and CodeBehind in IronRuby. There was no Visual Studio or C# to be seen. The potential for Silverlight to energize the LAMP stack and complete with mXml is great. Silverlight might be the only Microsoft technology in a solution. Everything can be served by any Web Server as long as the mime-types line up.

3. Your XAML can be used all over.

One thing to know about the XAML rendering that's happening on Silverlight is that it's a different XAML parser/renderer than the one included in WPF.

If you're on Vista, try this cool test. Open up the Accessibility Magnifier and hover over any WPF app, like the New York Times Reader. Rather than little raster/bitmaps becoming large raster/bitmaps, you'll see beautiful scaled vectors. As long as what you're looking at is a XAML vector rendered on Vista with WPF, you can scale it forever.

I speculate - I haven't tried this yet - that if you put the Vista magnifier over a Silverlight XAML-created vector I suspect you'll get a scaled bitmap, not a smooth vector. This is because Silverlight will run on a bare-naked Windows XP (not even SP2) machine, and Silverlight's XAML renderer is painting via GDI. This is not a huge bummer, but it's a significant and very clear, visceral way to illustrate that there are two XAML renderers. Fortunately XAML is a clear spec, and both WPF and Silverlight (on both platforms)should both render identical XAML identically. It's not open to interpretation the way that HTML was/is.

4. It's a JavaScript/CLR Type bridge

Silverlight can act, it seems, as a bridge between the world over in-browser Javascript and in-Silverlight CLR-code. Your CLR code can get ahold of the DOM and manipulate it just as your in-browser Javascript can reach into Silverlight and access properties and dispatch events.

Overheard: "This is the most significant launch since .NET 1.0 and I don't think 10% of the audience gets that."

I'm pretty stoked about this whole thing, and I'm going to dive into both Silverlight and Flex, along with other options like OpenLaszlo as there's many ways to create a Rich Internet Application these days. The addition of an integrated client-side CLR will allow for greater scalability in large systems where the server is called upon to do calculations that really belong on the (increasingly powerful) client-side.

<disclaimer>I don't work for Microsoft, nor is any of the data on that diagram from NDA'ed sources. It's very likely wrong, so enjoy.</disclaimer>

I may also have overheard myself saying all those quotes, but one can't be sure about these things. :)

About Scott

Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. I am a failed stand-up comic, a cornrower, and a book author.

facebook twitter subscribe
About   Newsletter
Sponsored By
Hosting By
Dedicated Windows Server Hosting by ORCS Web
Tuesday, May 01, 2007 12:31:49 PM UTC
I broke down the Silverlight bits you get on OS X on Inner Exception:
http://www.innerexception.com/2007/04/silverlight-differences-between-10-beta.html

It appears Silverlight 1.1 Alpha is a superset of Silverlight 1.0, agcore appears to be the same across both releases.
Tuesday, May 01, 2007 3:22:18 PM UTC
Compiled/JIT'ed JavaScript is at least 1000x faster than interpreted.


Seems unlikely. 1000% (10x) as fast maybe?
Sean
Tuesday, May 01, 2007 5:18:31 PM UTC
Sean, 1000x is the correct number, although it certainly depends on what's going on (in some cases the gap is much wider). Despite the perceived speed of javascript powering AJAX apps, the native javascript engine in IE is quite slow in comparison to javascript running on the DLR/CLR. Roughly the same can be said for the js engines in FireFox and Safari.
Tuesday, May 01, 2007 9:25:13 PM UTC
Well, since i heard about Silverlight in one of your podcasts, I have been trying to get a project going using SilverLight where I work. We were considering flash earlier, but now we have begun on a POC using SilverLight. Let's see if it comes out well, and if we can achieve all that we want to, then I will be really happy.

Good Luck to self. :)

Cheers.
Tuesday, May 01, 2007 9:51:39 PM UTC
Nice diagram. But seriously, I found it on your website. What would I expect? :)
Kirk Jackson
Tuesday, May 01, 2007 10:32:20 PM UTC
Hi Scott,

Your email link is broken. I wanted to send off a comment on a closed blog entry and have no way to let you know. Sorry for spamming the wrong post.

Scott
Tuesday, May 01, 2007 11:59:21 PM UTC
As I recall, the LINQ support in Silverlight is limited to LINQ to XML (caveat: my impression from public information). After all, why would we want browsers making direct calls to databases? Serializing/deserializing XML and querying over it easily is more realistic.
Wednesday, May 02, 2007 1:02:14 AM UTC
Scott,

It's NOT VBScript. It's VB.NET. See the VB Team blog and http://blogs.msdn.com/vbteam/archive/2007/04/30/what-do-the-announcements-at-mix-mean-for-the-visual-basic-developer.aspx .

Cheers,

Brian
Wednesday, May 02, 2007 1:03:16 AM UTC
I think al the references to VBX above should be about VB 10, the next version of VB.NET, not VBScript.
Wednesday, May 02, 2007 1:47:04 AM UTC
Agreed with Brian and Bill regarding VBx. As for LINQ to XML, I believe I read that the initial release's compiler includes support for XML literals, but System.Xml.Linq is not included as part of the core CLR, thus it does not currently support LINQ to XML. It does support LINQ to Objects which only requires System.Core and the compiler magic.
Wednesday, May 02, 2007 6:47:11 AM UTC
I fixed the VBScript/VBx (VB "10") stuff....
Wednesday, May 02, 2007 7:27:24 AM UTC
are you sure that Silverlight works in Windows XP without SP2?
Ariel
Wednesday, May 02, 2007 7:31:11 AM UTC
ScottGu told me that during a discussion, and he said that the machine he demoed on was a FRESH Windows XP machine that had *nothing* on it. I am 90% sure, but someone will have to prove it.
Wednesday, May 02, 2007 11:51:11 AM UTC
I was wondering if the diagram might be a little clearer if you try to separate some of the .NET 3.0 stuff (WPF, WCF,WF) as being temporally before the .NET 3.5/Orcas stuff (LINQ, C# 3.0, etc.) You could also, optionally, add VB9 to the C#3.0 label (and VB7/C#1. VB8/C#2), and add VBx in alongside the "Iron" range feeding the DLR...


Michael Dorfman
Wednesday, May 02, 2007 12:41:22 PM UTC
my head is spinning. i set that huge silver-light picture as a background on my desktop (wiping out some stupid baby photo that was there previously)

so much new stuff. just hope i can finally get my dynamic fortran.net programs to compile on the web-enabled commodore 64 emulator i run on my ipod.

lb
Wednesday, May 02, 2007 3:13:52 PM UTC
Pingback from http://dotmad.blogspot.com/2007/05/net-ecosystem-visualization.html
Wednesday, May 02, 2007 4:08:38 PM UTC
also be sure to check out another john lam interview: http://channel9.msdn.com/Showpost.aspx?postid=304924
Wednesday, May 02, 2007 4:39:36 PM UTC
"Lean-in vs. Lean-back" - That was such a smooth term I had to google it. Looks like it's a good 10 years old:
http://www.verista.com/points/dec98_point.html

Wonder how far back it really goes?
smithee
Wednesday, May 02, 2007 4:42:26 PM UTC
Oh, and Silverlight, yes, it looks exciting. Rich WPF demos are bluescreening my pc these days, though, so waiting for the other shoe to drop on this one.
smithee
Wednesday, May 02, 2007 4:46:09 PM UTC
I'm getting too old for this.
--IDL
ILAH DUNLAP LITTLE
Wednesday, May 02, 2007 6:28:56 PM UTC
What tool did you use to draw your diagram? Thanks for all of your excellent posts!
CB
Wednesday, May 02, 2007 10:42:52 PM UTC
I just drew it in Visio.
Thursday, May 03, 2007 2:14:54 AM UTC
So Powershell is another dynamic language from redmond...
any talk of whether it will utilise the DLR?
Thursday, May 03, 2007 5:06:09 PM UTC
"The Mac version of Silverlight is a Universal Binary"

The Silverlight.plugin is packaged as a Universal Binary, but the 1.1 alpha doesn't work on PowerPC machines and the system requirements for 1.1 only list Intel processor on a Mac.

http://www.lazycoder.com/weblog/index.php/archives/2007/05/01/silverlight-11-for-os-x-is-intel-only/

It's hopefully just a bug in the CLR loading routines that only shows up on PPC machines. I hope they are able get it working on PPC before the beta. Maybe my wife will go for the "I need to buy a Macbook so I can do Silverlight Development" reason?

So, if you hear of people saying "the plugin crashed my browser on my Mac. MS sucks". Ask them if they have a PowerPC Mac or an Intel Mac. If they don't know, they shouldn't be using alpha software anyway. :P
Thursday, May 03, 2007 5:12:48 PM UTC
I think your diagram is great, but I have a quibble: why are C# 3.0 and LINQ shown as happening to the left of the integration of WPF and WCF? For that matter, shouldn't you separate out .NET 3.5 from .NET 3.0?
Friday, May 04, 2007 5:54:16 AM UTC
The 1000x boost is the max, not the minimum. At the keynote it said the difference was 400-1000 times, and this number was repeated in other sessions as well.
Tuesday, May 08, 2007 8:18:09 PM UTC
Will Silverlight have the ability to run outside the browser? I am thinking along the lines that Apollo apps (like the E-bay sample) can run outside the browser. That would be very powerful to be able to do desktop apps on both Mac and Windows without the browser.
Mark Tucker
Wednesday, May 09, 2007 9:14:20 AM UTC
In your schema there are two pieces missing: SSCLI (Rotor) and the Compact Framework.
Comments are closed.

Disclaimer: The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.