Friday, January 11, 2008

Another one?

We're building yet another UI platform?

According to istartedsomething.com, we have:

  • Windows Presentation Foundation (WPF) - A managed UI platform. Bloated, slow. We spent a bunch of time in 2006 trying to reduce the working set and startup time.
  • Silverlight - A rewrite of WPF in unmanaged code; small, fast, excellently written. But probably too little, too late to make WPF and XAML relevant to the internet.
  • Windows Forms - A workhorse: a bunch of enterprise apps run on this .Net 1.0 and 2.0 technology.
  • Win32 - The oldest one. Ancient technology. And no developer wants to work with this.
  • Media Center Markup Language - Written by the MC team; flashy. But it doesn't do a lot - just enough to draw the MC UI. You can't use it as a UI platform for all of Windows.
We actually have another one - DirectUI - an internal-only UI platform that is used in XP and Vista to draw control panels, and bits and pieces of the Windows Shell. It was a pre-XAML version of XAML. As far as I know Windows 7 will still have it.

This means that we have 6 teams that work on the same thing - a bit of code that draws the user interface for applications on the screen.

If we were a sane company, we would have the following (from oldest to newest):

Win32 (the oldest one)
Windows Forms (the replacement, to make programming UI better)
(A flashy and fast) unmanaged WPF for Silverlight and Media Center

11 comments:

Anonymous said...

so you think that wpf won't be optimized perf wise and get better feature wise in the future?

will 7 finally be on par with os x in terms of ui effects quality? is directUI able to do that? since vista delivers only the fancy stuff (like glass, composition, ...) with the DWM which uses parts of WPF (the unmanaged components, milcore.dll).

Soma said...

I'm sure that the WPF stack will be optimized, perf-wise. I'll bet anything (well...my MSFT stock options) that it will be unmanaged in the future.

Wait! It is! See Silverlight - light, small, fast. Microsoft ended up writing a WPF stack twice - which is expensive, and pointless - we should have released something much better the first time round, imo.

WPF can do anything that the Mac technologies can; they are pretty similar.

Anonymous said...

yes, wpf can do almost anything that mac stuff can do (i have worked with it and my only complains are about perf and some windows architectural stuff...) :)

So you think that the libraries will be unmanaged (which are currently managed) but we can still program wpf stuff managed like now? I can imagine big leaps in perf :)

My question in the previous comment was more about the actual UI of windows 7 (not the technologies) - if there will be more fancy animations like they are used in os x or like vista's only fancy animations in flip3d (but useful not senseless). people want sexy transitions...

Unknown said...

And I have discovered (by Reflectoring assemblies and using depends on unmanaged dlls) that Zune software uses some kind of WPF like rendering, at least similar approach. Is it DirectUI you have mentioned?

Anonymous said...

afaik the zune software uses the mcml stuff from media center software, additionally many folks from the MCE team now work at the zune team :)

Brandon said...

You seem to mix up things a bit in this post.

You make no distinction between rendering technologies, control libraries, or layout systems. These things are not all the same.

Also, "Win32" is none of these things. Win32 refers to the system APIs that shipped as part of Windows 95 and NT, and their successors.

Perhaps you meant to list USER, GDI, and GDI+. Those, plus Direct3D / DirectDraw are the way you get pixels onto the screen and move them around.

Windows Forms is mainly just a fancy wrapper around the shell's Common Controls. Depending on the version, they render with GDI / GDI+. They aren't an alternative to it.

DUI is mainly a layout engine, and the comparison to an early XAML is a valid one. But XAML is public and managed, so they are obviously quite different beasts.

WPF is really a collection of things. It renders using DirectX (Direct3D), and uses XAML for layout.

So what does IStartedSomething suggest is being added? A new rendering path? A new layout engine? A new set of common controls? Something else?

I don't even know why you'd list Silverlight here. Or at least why you'd list is as seperate from WPF since it is a subset of that clearly designed for portability.

Frank Hileman said...

Windows forms has been working fine with with vector graphics, and they aren't bloated either:
VG.net

Joeyw said...

Silverlight is unmanaged? Are you sure? SL 1.0 maybe, but that's just a stepping stone to 2.0 - which is basically WPF light with a different MILCORE layer.

Pretty confusing post. I take it that you're not on any of the dev teams.

Anonymous said...

as i understand he is talking about the runtime and the libraries - in wpf, almost every library is written in managed code - only the rendering stuff (which is milcore.dll) is written in unmanaged code. on the contrary, all the underlying stuff in silverlight is unmanaged, if he states it correctly. that silverlight 2.0 can be programmed with different (managed) languages than JS doesn't imply that its libraries are written in managed code too.

Joeyw said...

grinser00:
I totally dont' agree. Unless I have misunderstood the details - this is how I understand it.

Silverlight pretty much depends on XAML to represent any visual element. XAML is a managed object graph - an XML way of presenting managed objects in memory. In SL 1.0 there was a temporary method of expressing very simple XAML using unmanaged code. These elements transposed directly to MILCORE primitives - that's why it was easy to have an unmanaged layer there. In SL2.0 that all changes and XAML is once again managed only.

I see some people trying to reconcile the excitement around Silverlight and the lack of take-up for WPF by interpretting this as a unmanaged/managed equation. It's not that simple.

On another point. If there is a native alternative UI API used in Vista then this could be a real issue for the monopoly watches. If this API layer uses any undocumented code beneath it then this potentially breaches the consent decree and the recent agreement with the EU about publicly available APIs.

Anonymous said...

battery for COMPAQ M300 N400 146630-001 291694-001 laptop battery
Battery fits COMPAQ Presario 1200 1600 1800 116314-001 laptop battery
Battery For Compaq Presario 311227-001 PP2162S Laptop laptop battery
battery for COMPAQ N150 PP2111X 232060-001 231962-001 laptop battery
Notebook Laptop Battery for Dell D9200 D5318 G5260 laptop battery
6600mAh Battery fits DELL XPS M1210 NF343 HF674 NEW laptop battery

3cell Battery for Dell Latitude X1 T6840 312-0342 Y6457 laptop battery
New Dell Inspiron B130 1300 b120 Battery 312-0416 56whr laptop battery
Gateway M360 M460 M680 8-Cell Notebook Battery 6500949 laptop battery
New Battery for HP M2000 Series DV1000 DV4000 laptop battery
Battery For HP F2019 F2019A F2019B 6000 VT6200 XT6200 laptop battery
Battery For HP HSTNN-IB04 346970-001 HSTNN-DB02 DP399A laptop battery

New F1739A Battery For HP XE XE2 Pavilion N3000 N3490 laptop battery
New Battery For HP Pavilion ZT1000 F2299A F3172B F3172A laptop battery
IBM THINKPAD 600 600A 600D 600E 600X 02K7018 BATTERY laptop battery
Battery for Gateway Solo M500 M505 Medion MD2900 MD6179 laptop battery
Battery Fit Toshiba PA3382U-1BRS PA3384U-1BRS laptop battery
Battery for Toshiba M30X M35X M40X PA3395U-1BRS PA3421U laptop battery