April 02, 2004

Laszlo is XML technology, not Flash technology

Laszlo has been getting a lot of attention for its product of late, thanks in part to Macromedia' Monday announcement of its Flex presentation server. I thought I'd use my first blog entry to set some context around Laszlo, and explain how, in contrast to Flex, Laszlo offers a complete, self-contained platform for creating rich Internet applications.

Let's start with the basics: As a company, Laszlo is totally focused on rich Internet applications (RIAs). We are not about designer tools; we are not about animation and advertising. We think the Web is on the verge of a sea change, with the dual drivers of broadband and Web services, and we see an XML-based framework for RIAs as essential to this transition.

Since late 2000, Laszlo has been single-mindedly focused on delivering a rationalized platform for high-quality interactivity on the open Web. We devised a platform for doing this that incorporates a J2EE-based presentation server, an XML language (LZX) for specifying the application's layout, look, behavior, and data binding; and a server-based compiler which compiles the XML source into a format which works in just about every Web browser today.

At the time, the obvious choice for our client target would have been Java. But that wouldn't have delivered the ubiquity that customers need. So, instead, we chose to target the Flash 5 (and later) player from Macromedia. The player is ubiquitously distributed and it has reliable rendering and strong cross-platform compatibility.

Again, Laszlo is about XML, not about Flash. But wait, you say, Laszlo applications run in the Flash player. So how can that be true? And why is that meaningful or relevant?

First, Laszlo's platform and APIs are abstracted from the client APIs. In contrast, Macromedia's MXML includes ActionScript and relies on UI components built in Flash MX -- it's tightly bound to the Flash player and authoring tool. Or consider Microsoft's upcoming XAML, which is tightly bound to Microsoft's Avalon/WinFX client framework.

Laszlo's XML language and framework is self-contained (no need to use ActionScript APIs, Flash MX, C#, "code behind," or any other external language) and designed expressly for development of rich interactivity. Even Laszlo's own UI components are defined in LZX; there's no notion of "intrinsic" widgets or an escape hatch such as embedded Flash-authored components. For Laszlo, the SWF format is simply a compiler output format. An analogy is C++ -- a developer writes in C++ and the compiler targets a given CPU, whether it's Intel, PowerPC, or SPARC. Here, a developer writes in LZX, and the compiler outputs SWF bytecode.

(As an aside: Flash developers sometimes assume that Laszlo, since it targets Flash 5, cannot offer capabilities beyond the Flash 5 authoring tool. This is not the case; as an obvious example, Laszlo's language offers capabilities well in advance of Flash 5 -- e.g, a formal class/object model. But that's a topic for another day.)

Over time, Laszlo wants to make LZX a universal, runtime-independent, rich Internet language. Imagine writing a single Laszlo application and using Laszlo Presentation Server to deliver this application into Macromedia (Flash), Microsoft (Longhorn/Avalon), and Java/J2ME runtimes. This is the architecture we've built for from day one, and we have designed the system so that compatibility will be preserved as the Laszlo compiler targets other runtime environments.

Take a close look at LZX and you'll see that with its view hierarchy, constraints, XPath-based data binding system, and animators, it delivers unprecedented expressive capability for rich, data-driven UIs. With a clean language designed from the ground up for the purpose of delivering RIAs with highly customized behaviors, this is possible.

Posted by temkin at April 2, 2004 10:51 AM
Comments

> Over time, Laszlo wants to make LZX a universal, runtime-independent, rich Internet language.

This is definitely the way to go David. The sooner, the better

Posted by: Vinny Timmermans at April 5, 2004 10:48 AM

Cool, I'm glad you're writing online, David... I got the link from David Bisset.

I agree that there's good space for a delivery-neutral interactive UI markup system... I personally think SWF will have wide delivery, but I can see how using the same language and compiler for Avalon or other clients could have advantages too (did I understand your penultimate paragraph accurately enough there?).

Regards,
John Dowdell
Macromedia Support

Posted by: John Dowdell at April 5, 2004 12:38 PM

whoops, URL didn't take... here's David Bisset:
http://www.flex-mx.com/archives/000651.html

Posted by: John Dowdell at April 5, 2004 12:39 PM

JD,

Thanks for visiting, and thanks for the David Bisset link. You read that paragraph correctly... it's about a client-neutral language for RIAs. We also think SWF is a great delivery mechnism -- which is why we did it first.

- D.

Posted by: David Temkin at April 5, 2004 03:20 PM

Ah, I'm sure you mean "shipped it first", right? (Knowing what you do of the total situation an' all I mean.... ;-)

jd/mm

Posted by: John Dowdell at April 5, 2004 10:13 PM

Ah -- didn't even think of that! :-)

I actually meant to say: "We also think SWF is a great delivery mechnism -- which is why we chose SWF as our first supported client runtime."

Posted by: David Temkin at April 6, 2004 07:42 AM

heh, cool, thanks... you're much easier to converse with than Marc Canter, I'm glad you're online! 8)

Posted by: John Dowdell at April 6, 2004 09:44 AM

The comment that Flex "relies on" UI components built in Flash is not really true. Check out the "Embed" syntax that can be used in MXML or AS. With this, you can create custom visual components without the Flash authoring tool.

Actionscript, like Javascript, is based on an ECMA standard. Also (and please excuse my Laszlo knowledge) doesn't Laszlo use Javascript on the client as part of its platform?

Posted by: Brian Deitte at April 8, 2004 12:52 PM

The "embed" syntax can be used to embed a Flash movie in a Flex application. This is useful for a UI component that is written in Flash (although there are restrictions on what can be included). What appears to be more useful for writing a component entirely in Flex is the "mxml:Image" tag, which is analogous to the LZX "resource" tag. (The latter can be used to embed animations, images, or sounds.) Both the "mxml:Image" and the "resource" tag are used to import an image into an application, where it can be used to construct a user interface component.

At least that's the theory. We had this much working in 2002, along with a way to define custom tags. It wasn't until we wrote the LZX component set that we realized how much more needed to be added to the platform, and the product, to support extensible components written in pure XML. Features such as a means for declaring the content and attributes of a user-defined tag, a separation between the visual and logical element hierarchies, and a constraint system that interacts in well-defined ways with the above. These are "expert features" of the type that aren't necessary to *use* a component framework, or to define one-off components, but turned out to be necessary to *create* such a framework. As you generalize your instances to classes, and your classes to base classes, you can hit a wall without them.

Posted by: David Temkin at April 13, 2004 04:52 PM