« Intro to Sparkle | Main | MS MIX06 top story »

March 20, 2006

WPF Notes I

WPF Notes I: This session I'll report a little differently, more with an expanded version of my raw paper notes than with any type of personal analysis... my mind is fading right now, and I don't really feel I have the full picture yet. There will be more sessions on Windows Presentation Framework later on during this conference. It was presented by Michael Wallent, a longtime contributor at Microsoft, and had one of the key items of interest for me in attending this conference: How will Microsoft balance the "works best in Vista" angle with the "we won't disenfranchise your audience" angle? In the extended entry....

My big takeaway: They will be making a browser plugin. There was mention of Firefox, Safari and Opera... mention made of older Windows systems and Macintosh too. I'm not sure of minimum versions of those browsers, and Linux support was a Fred Astaire & Ginger Rogers kind of thing. (I told you my mind was fading. ;-) Delivery date was not described, range of supported functionality was not described, download size is currently about 200K but is expected to increase.

(The Linux runtime problem is a hard one, though... see the essay from Player engineer Tinic Uro last summer for context.)

Caveat: For this report I'd encourage you even more to seek out corroborating info from others, because I still don't trust my understanding of the situation. More will be revealed on Tuesday and Wednesday.

-- There's a "reach vs rich" range between in-the-browser work, in Safari IE and FF, and beyond-the-browser work, in full Vista. (ie, "rich applications" are, by their definition, Vista applications.)

-- The session was about two-thirds presentation, one-third Q&A... cool, I appreciate that. Questions were slow in coming by the end, however.

-- Theme: "Unleash the power of your (Microsoft) PC."

-- I caught an initial emphasis on portability among PCs... there's the hardware-assisted Vista thing, and the weak-hardware-with-Vista thing, and the WPF-for-WinXP thing. At this point there was mention of scaling down in some way for non-Microsoft PCs (non-MSPCs, should that be the term?).

-- At this point in my notes I wondered about China, and Lenova, and places where Windows operating systems will not be purchased. I also wondered about India and the use of low-cost PCs and mobile use. I'm not convinced that "personal computer" is where the growth will be in the future. Bill Gates gets paid more than me, though, so I guess he must be right.... ;-)

-- There's a distinction drawn between fixed-format documents (Acrobat, eg) and flow-based docs (the HTML model).

-- Long demo of Microsoft Max, a photo collection management tool. The emphasis seemed to me to be on the development rather than the use of this project... "And each resizing pane of photos uses the exact same code, which I didn't have to write!" (They do have a nice way of animating drag'n'drop interactions here, where things move out of the way to let you insert an object... the little visual eyecandy is effective in helping the user figure out what's going on, I believe.)

-- Long demo of iBloks, a presentation tool for the LiveJournal-like crowd, where you could sequence music and photos to share with friends. This wasn't what I came to see, but I did learn that WPF offers high-level control over mapping of images into 3D space... if you've used quads in Lingo then you know how it's possible to individually set the corner coordinates of a rectangular image to give the impression of an image twisting around in space... in Lingo you have to calculate each desired coordinate yourself, though, and it seems like WPF handles this at a much higher level, leading to reduced development time. Similar effect, just faster to code.

-- Long demo of My Yahoo for Vista... prettier than their HTML version... in my notes I have "And our serverside APIs did not have to change to accommodate this new clientside presentation!" which, I thought, was sort of like the definition of a serverside API. There was mention of animation cues to alert the user that some data in the page has changed (think of the "yellow fade" routine in DHTML a year ago). But I also noticed that the URL in the browser did not change despite various different interface screens... we've really got to solve the problem of handling both sets of user expectations about what the browser's "Back" button "should" do.

-- Wallent promotes WPF as "an integrated platform for UI, documents and media". (Welcome to my world, Mike. ;-) Other key WPF points were "declarative programming" and "designer/developer integration".

-- There was a brief bit in the My Yahoo demo where Arik "changed the trust level" of the project through a menu item, then recompiled the Vista XAML as worldly HTML. There was audience applause but I was asking "Wait, if that project *could* be done as HTML, then why did you first do it as XAML? Did you drop some features during the recompile, or was this a deliberately simple project which didn't use Vista-only features, or what?" (I was asking myself, so I didn't really get an answer. ;-)

-- A demo for the Northface sporting stores... my notes at the time say "Yes, attractive flashy interfaces are good. Is this some kind of surprise?" The "flashy" stuff was something that looked like an animated GIF but was vectors rendered to pixels at runtime, and a photo of a jacket that you could spin around.

-- Then we got into the meat, WPF/E, the worldly "reach" vs the Vista "rich". There *is* a browser plugin (or will be), that turns a browser into more than just its base HTML/JS/CSS renderers. There was mention of JavaScript control over this engine. (Aside: I'm guessing this JS control uses the old ActiveX Scripting for IE/Win and the new NPRuntime API for Firefox, Safari and Opera, as "externalInterface" in Flash 8 did.)

-- I noted "devices not just a player" but I forget what that means.

-- There was a stack chart where the "WPF Runtime" is built atop a Platform Abstraction Layer at bottom, then the UI Rendering Core atop that, then the "Native WPF/E" atop that... atop the WPF Runtime box were a few other boxes which I didn't have time to copy down, but there's probably a graph on the web somewhere.

-- Michael described that you could control this plugin from the outside with JavaScript, but then also mentioned that you could control it through C# or VB.NET too, although I'm guessing that those latter two MS-only technologies will only be available in their Internet Explorer for Windows browser. (This is similar to how Netscape's LiveConnect could be addressed through JavaScript, so ActiveX Scripting was addressable by JavaScript too, although it could also be commanded by VBScript, and could only catch messages in VBScript... what I saw in the late 90s was that this multiple-language handling increased development costs so much that browser/plugin intercommunication was rarely used in practice.)

-- WPF projects can either consist of an instruction file and various media files, or everything can be packaged up into a single file, as you'd do with linked or imported assets in Shockwave or Flash.

-- There was something about the server writing either an OBJECT or EMBED tag depending on how the requesting browser identified itself, and something about a new MIME type which would be a test to see if that browser could understand the new Microsoft filetypes... my kneejerk was to think back to how IE/Win avoided MIME types in favor of identifying media types by filename extension, and the security problems this later caused through spoofed files. But this seems like an interesting approach to "graceful degradation", where the server gives different content depending on what it thinks a particular browser can understand.

-- My notes: "The WPF/E plugin -- 200k now, will grow in time". I had a recollection of the ChromeEffects plugin, in the LiquidMotion era. I don't know how big it will grow or what you get per kilobyte of user download. (One thing that puzzled me was that I think some video was shown -- it's hard to combine a general media/interactivity engine *and* a video codec in anything resembling that size, which made me wonder whether they were using "device video" to render a file, which again seems like it would get into a lot of useragent-testing. Don't know yet.)

-- The demo page had multiple plugin instances per page. One was a GIF-like anim sent as vectors, another was that video clip, another was scrolling through a photo series of a jacket via a DHTML control which communicated with the plugin.

-- There were quotes of eventual audience size, "sometime in 2007 or 2008", "multiple hundreds of millions", "sometime in 2007, if we're lucky, half-a-billion customers"... stats quotes are tricky, and I'd defer to source information with corroborating evidence for such projections.


Q&A section

(Q) "What of graceful degradation? We don't want to deal with multiple engines. How can we assure the User Experience?"
(A) There's a "Tiering API" so an app can rephrase itself. The server uses MIME types for routing. Mention of styling changes, possibly the key to their degradation handling.

(Q) "What distinguishes all of what you've been talking about from Flash? Do you feel the need to convince all these people you've flown out here to switch?" [audience intake of breath]
(A) [jd literal notes:] "2 solutions: WPF vs WPF/E, we're trying to do complete solution." [literal quote:] "I hope we provide a good competitive situation." [paraphrased quote:] "We're committed to a seamless solution." [jd note:] Nice moves there, Ginger, but let's run through that routine just one more time.... ;-)

(Q) "What of other Microsoft platforms, like MediaCenter and XBox?"
(A) [jd literal notes:] Keynote tomorrow on MediaCenter. Maybe two years finish. Xbox in negotiation.

(Q) "Can you get the WPF/E plugin into the Firefox default installation? What about Linux?"
(A) [jd summary:] Anyone with a plugin would be happy to get into the default Firefox installation, but the Firefox team has been really focused on keeping download size small, to boost adoption rates. Still, Microsoft has tons of money, as was shown by this event, so any surprise is possible. For Linux, I wrote down "There will be one, maybe we'll have it next year." Certain OS they must port their plugin to: Macintosh and Windows XP... I'm not sure about Win2K. Devices are on their own tricky manufacturing schedule.

(Q) "What about WPF/E and accessibility?"
(A) Mention made of Microsoft Active Accessibility. [jd: Still, Flash has supported MSAA for years, and this doesn't suffice towards satisfying those who wish richer experiences described as linear text streams... hard issue.]

(Q) At this point there was a lull, and I got up and did my "emperor's new clothes" routine: "You know, instead of making a new plugin, and porting it, and hoping consumers worldwide will adopt it, I'm wondering why you don't just do it in Flash? The Player is already out there in the world, doesn't this seem less risky?" (At this point I'm sure I made at least two or three of my Adobe partners throw their hands up in the air at my naivete, but heck, if they've got a technical problem, why not choose the most practical technical solution?)
(A) I couldn't really take notes on the reply, but what I wrote down a moment later was "We've got a different direction. We're a big believer in our own format". I didn't get the sense that there was really a direct answer to this... my new gut feeling is that they don't wish to "risk being held hostage" to technology from some other company... that "go it alone, not invented here" type of approach really colored my subsequent understanding of the whole "everywhere" approach of the Vista project.

(Q) "Will your format be normalized by a standards body?"
(A) There's a difference between de jure and de facto standards, and there will be a session tomorrow on just this very topic....


Posted by John Dowdell at March 20, 2006 11:28 PM

Trackback Pings

TrackBack URL for this entry:
http://weblogs.macromedia.com/mtadmin/mt-tb.cgi/7197

Comments

Great reports. Very insightful and valuable. I see your struggle to report objectively and appreciate it. I can't believe MS is coming to this party so late.

Posted by: anon at March 21, 2006 02:31 AM

I've been waiting to hear more about WPF/E since PDC back in September, so I appreciate you posting detailed notes. Unfortunately, through no fault of your own, I didn't hear much new. The questions about "what" and "when" still seem no closer to answer.

Also, if I heard correctly back in September, WPF/E applications would be built using JScript, not JavaScript. So this begs the question: how does WPF/E relate to building WPF apps in anything but the acronym? If I have to use different languages for my WPF and WPF/E applications, what development advantage do I get and why wouldn't I just choose a platform like the Flash Runtime that already has global market share?

From what I can tell, there is still no definitive site on this topic, so I guess the questions continue.


Puzzled,
MB

Posted by: Mark Belanger at March 21, 2006 05:40 PM

Thanks, folks. There was a much more detailed session yesterday, but I was off the keyboard last night... hope to type up my notes this afternoon, but I may not be connected to post until late Thursday evening, Pacific time.

Size was described as having a *goal* of two meg... public beta expected "Q3 06" (I'm assuming that's calendar quarters rather than financial quarters, so I'm assuming it's expected autumn of this year)... "web release first half 07"... "device release" (not sure what that means) expected second half of 07. Of course, with Longhorn slipping yet again, I'd assume these dates are more guidelines to expectations than they are strict delivery dates.

For interactivity, it's ECMAScript in browsers, but C# or VB.NET in standalones... there's also a way to compile Windows-native code to "PLI" pseudocode which can drive interactivity in browsers... I'm still not sure if one set of JavaScript will suffice for all browsers, but this will be easier to figure out once they ship an actual consumer-level 1.0 version.

Lots of folks were in on Joe Steggman's WPF/E session yesterday, and I liked how he presented a lot of information... he did a good job. My notes are extensive but my schedule is wacked... others may have gotten some info up into the aggregators already.

Posted by: John Dowdell at March 22, 2006 08:04 AM

Ben Galbraith summarizes the Wallent session at Ajaxian. Uses phrases "flash-killer" and "pdf-killer". Different perspective; worth a read.

Posted by: John Dowdell at March 25, 2006 10:03 AM