22/08/2007

Tafiti: Under the Silverlight hood

I'm particular. I looked through the www.Tafiti.com source code and noticed a bunch of stuff that I didn't like about how Silverlight is building the underlying RIA.

In www.tafiti.com there is a function called startSkipjack that uses a Silverlight.createObject function. Back in the day's that used to be a call to ActiveX or some sort of COM object in the browser - but this function is obviously a JavaScript wrapper for the creation of the Silverlight plugin. I'd assume an actual plugin is loaded that is not 100% JavaScript - I'm sure Microsoft would like me to think that too.

Kind of a strange strategy to make a plugin dependent on XAML and JavaScript at the page level but then again I guess any scripting language will suffice and XAML is just XML.

After seeing a working demo certain things escape me ...

Use of Styles

It's use of styles ... Consider this EX//

SJ.Hyperlink(0, 0, 55, 0, "feedback",
"FontFamily='Verdana' FontSize='9' Foreground='#ffffff' Opacity=' 0.8'",
"mailto:tafiti@microsoft.com ");


One would think inline styles would be replaced with CSS. By externalizing CSS developers would be able to modify styles by simply modifying the underlying CSS template. This just makes things easier to maintain. But Kudos for actually using the same syntax in the inline style declarations.

Text Content in JavaScript

My final criticism is: Isn't a huge problem with these Rich UI's (Flash) that search engines have a ton of trouble indexing the actual text and links? In Silverlight text and link info is included in the JavaScript which most search engines will just ignore. Consider this EX//

signInSignOutLink = new SJ.Hyperlink(0, 0, 35, 0, userIsAuthenticated ? "sign out" : "sign in",
"FontFamily='Verdana' FontSize='9' Foreground='#ffffff' Opacity=' 0.8'",
userIsAuthenticated ? userSignoutUrl : signInSignOutLink.openWithName = "_self";
if (!userIsAuthenticated) {
signInSignOutLink.onMouseEnter = function(sender, args) { SJ_ShowToolTip(sender.visual, "Sign in with your Windows Live ID so youcan access your stacks from multiple computersand post stacks to your Windows Live Space.", args.getPosition(SJ.topCanvas)); }
signInSignOutLink.onMouseLeave = function() { SJ_HideToolTip(); }
}

They (Microsoft Silverlight) could have easily put time into developing a sort of hide region feature whereby things like the sign in sign out link could be defined in markup to be hidden and then merely organized using Javascript / Silverlight. They could then subclass the hyperlinks into external and internal Silverlight hyperlinks. This would support search engine indexing ... Consider this alternative to above EX//



Site Size:

I'd be curious to get a Flash developer to develop a simple "Hello World" application and then compare the size of that application to a Silverlight application. My guess is that Silverlight will be significantly larger than Flash merely because it requires XAML and JavaScript to run before launching the application and it's provided in the raw mark-up files. I see this as a drawback for anyone wanting to develop a high performance RIA in Silverlight.

Threadding:

My understanding is that in using Silverlight you may effectually write a client side multi threaded interface. I'm curious to understand how we can actually multi thread when communication between the browser and Silverlight is dependent on JavaScript. Possibly Microsoft can better explain this.

Conclusions:

I'm very suspicious. Is this a plugin or a cached clientside JavaScript library. Or is it as it looks, a hybrid mash-up of a bunch of trendy technologies: Plugin + XML + JavaScript. And if it is the later, why in the lords name wouldn't they make indexing the content a priority and why would they leave crap like inline styles in the source. I'd assume that would be a huge win over Flash etc. especially if the search crawlers can already crawl html.

My Quick Asks For Silverlight:

1) Show me how Silverlight can be used to create Virtual Earth Mash-Ups.

2) Make Silverlight work on Opera Mini.

3) Show me a multi threaded UI example.

Let me know what you think about Silverlight.

Over and Out

No comments: