Sree Kotay, my department SVP,
spun a great yarn (a bit fatter than a thread heh) about our interface technology, Boxely. As most people know (especially my wonderful wife Wendy), I've lived and breathed the project for over a year and a half now - and my wife considers her (Boxely) to be the "other" love of my life. So I'll try to remain as impartial as I can.
To provide a bit more history, Boxely has certainly come along way from the initial exploratory prototype
Joe Hewitt poured himself into a couple years back. Sree did not mention XUL to a great degree in his post, but without going into too much detail (
Joe does), we did not set out to build your grandma's UI toolkit.
All of the core team members came from different backgrounds, but we'd all felt the pain of building hi-gloss, highly dynamic UIs, without there being a tool to make it easier. Joe initially set out to evolve XUL. I came from the Macromedia Flash world, and longed for the power of Flash in a desktop UI language - with the
performance of a desktop app. A toolkit with the high-octane dynamic nature of Flash that was integrated with the OS (native clipboard, drag and drop, shell support). All of our original thinking was pre-XAML but was inspired by what XAML promised for the future - we just couldn't wait.
What Sree calls self construction, I call element composition. One of the most compelling aspects of Flash to me (later generations) is the ability to composite movie clips (within movie clips, within movie clips) to construct just about anything one can imagine. Combined with a styling engine and code-behind Boxely is Lego-Mindstorms for UI development.
As for other aspects of Boxely worth note - animation w/interpolation as a primitive (whether you like the syntax or not), is a huge plus. And (thanks to Platform Basics), raster based transitions, layout transitions, imaging effects, affine transformations, and
procedural UI are the heart of Boxely. (Much more to evolve too though, more on that in another post).
I have to disagree with Sree a bit about CSS. I despised CSS as well, though primarily only for its syntax - which Boxely solves by defining a more intuitive and consistent (XML) language for styling gadgets based on their property "state". Boxely does not support CSS in the W3C sense. It does support "cascading styles" that allow one to "style" the visual properties of an element, or an element's sub-component (part), or a class of elements - essentially providing for the same types of selectors that CSS does in the HTML world. Cascading styles is invaluable and core to the power of Boxely's themability and flexibility of visual style. I would guess there are a ton of CSS zealots out there who might disagree with Sree's take on the value of cascading styles.
As to the implementation of said style language and its complexity - I would separate the language from the implementation. I am convinced that the implementation does not have to be quite as complex (forests of graphs, the busy-ness of recascading). We have made huge dents in the efficiencies of the underlying styling engine since its inception - and I agree we have room to improve.
Briefly, on why not to style attributes - (trying not to start a flame war with my SVP, heh) - it is pretty simple IMHO. Style rules, and the triggers that dictate what visual styles are applied when - is 100% based on the state of an element. Specifically the style rules are fully attribute and property driven (e.g when hovered == true for this element apply a procedural color transform). The current complexity of cascading style engines is all due to the need for resolving ambiguity and precedence given the layering of selectors. Not to say its impossible but if we were to allow cascades to also style attributes, which could in turn trigger other cascades and other style rules, which could in turn trigger additional cascades - you will have bigger problems than just ambiguity - you will have much more complex chain reactions occuring which would not be conducive to a performant application.
As for the JavaScript language binding and some of the memory related issues we've run into because of this - that to me is also quite separate from Boxely as a UI language. As Sree knows the original code-behind languages of choice (as implemented) were Python and C++. I believe the factors behind moving to Javascript were valid - and the approachability by classic multimedia developers to the toolkit was a huge benefit internally. As with life too much of anything sugary sweet is bad for you. And by tweaking our best practices internally (how to properly use Javascript efficiently, when to promote procedural code to native code, etc.) its certainly not an unsolvable problem.
Not sure what Sree means entirely by his aversion to flex and flow. Boxely, along with most other next-gen declarative UI languages, provides plug and play layout models on a per element basis. While flex and flow are the most common - vertical flow, stack, grid, and absolute positioning of elements are available stock as well. If Sree again meant the core implementation - not the language - I concur. We already smoke MXML, XAML, and even XUL in many layout related tests, etc. we have many more no-brainer speed improvements we could make.
Per Sree's note, we'd love to release our little toy (Boxely) to the general UI geek community to play with. Maybe when we're complete with the current round of lypo and post 1.0 tweaks? I want to stress - our little team is not out to "save the world" by any means - Boxely currently is simply just an enabling technology for us here at AOL - but in alot of ways it's what DHTML should really be - or what XUL 2.0 should really be. At a minimum if we inspire enough folks to finally push ourselves away from HTML as the primitive layer of distributed UI - I'll be a happy camper.
PS. One unfortunate side affect of the next-gen UI layers is that they well, are *never* as performant as raw win32 apps. XAML (WPF), XUL, MXML, even .NET forms - are always one step behind your to the metal GetDC()/Blit() Win32 app. No reason in particular it has to be that way forever, given hard work. We're at the crux of the new generation of hollywood UI. It's only a matter of time before the technologies are fine tuned.