{"id":192,"date":"2005-12-15T14:44:13","date_gmt":"2005-12-15T20:44:13","guid":{"rendered":"http:\/\/blog.codedread.com\/?p=192"},"modified":"2005-12-15T14:44:13","modified_gmt":"2005-12-15T20:44:13","slug":"putting-the-pieces-together","status":"publish","type":"post","link":"https:\/\/www.codedread.com\/blog\/archives\/2005\/12\/15\/putting-the-pieces-together\/","title":{"rendered":"Putting the Pieces Together"},"content":{"rendered":"<p>I first learned of <a href=\"http:\/\/www.openlaszlo.org\/\">OpenLaszlo<\/a> when I began learning a bit about <abbr title=\"Scalable Vector Graphics\">SVG<\/abbr>.  The idea behind OpenLaszlo is to write rich web applications in XML + JavaScript.  It is very similar in concept to Mozilla's <abbr title=\"XML User Interface Language\">XUL<\/abbr>, Microsoft's <abbr title=\"eXtensible Application Markup Language\">XAML<\/abbr> and Adobe's MXML.  <!--more--><\/p>\n<p>To give you a taste, here is a simple \"Hello, World\" LZX application:<\/p>\n<div class=\"code\">\n&#60;canvas width=\"500\" height=\"350\"><br \/>\n&#160;&#160;&#60;window x=\"20\" y=\"20\" width=\"200\" height=\"250\"<br \/>\n&#160;&#160;&#160;&#160;&#160;&#160;title=\"Simple Window\" resizable=\"true\"><br \/>\n&#160;&#160;&#160;&#160;&#60;text>Here is some text.&#60;\/text><br \/>\n&#160;&#160;&#60;\/window><br \/>\n&#60;\/canvas>\n<\/div>\n<p>Go <a href=\"http:\/\/www.laszlosystems.com\/lps-3.1\/docs\/guide\/laszlo_basics.html#d0e2721\">here<\/a> to see this application in use.  Drag the window around.  Resize it.  Wipe the drool...<\/p>\n<p>Currently, LZX files are compiled into <strike>Macromedia<\/strike> Adobe SWF executables before deploying on the server.  But I really get the impression that even Laszlo Systems recognizes this as a somewhat unfortunate (or limiting?) association.  As <a href=\"http:\/\/www.openlaszlo.org\/development\/contribute\/\">they strongly state<\/a>: <strong>\"Laszlo isn't Flash\"<\/strong>.  They <em>want<\/em> to support different backends, to make their technology less vendor-lock-in and accessible.  Unfortunately, at the time of the project's inception (and even today) the only viable platform to actually deploy against was (is) Flash.  Other future backends might be <abbr title=\"Microsoft's Common Language Runtime\">CLR<\/abbr>, XUL, SVG, etc.<\/p>\n<div class=\"ads\"><object type=\"text\/html\" width=\"468\" height=\"60\" data=\"http:\/\/www.codedread.com\/gads.php\"><\/object><\/div>\n<p>Subsequently I discovered <a href=\"http:\/\/www.pandora.com\/\">Pandora<\/a> and then learned that it was built with OpenLaszlo.  The user interface for Pandora is clean and quite to the point so my impression for OpenLaszlo went up another notch, though at the time I was still blindly dreaming of SVG and hating Laszlo for being Flash.  At the time I did not understand that the two could (and should!) exist side-by-side.<\/p>\n<p>I then <a href=\"http:\/\/blog.codedread.com\/archives\/2005\/11\/16\/a-couple-quick-links\/\">learned<\/a> that the <a href=\"http:\/\/www.w3.org\/\">W3C<\/a> recently put together a <a href=\"http:\/\/www.w3.org\/2006\/appformats\/\">Web Applications Working Group<\/a>.  Their charter is to reuse an existing technology like XAML, XUL, OpenLaszlo, or MXML and marry it with such technologies like CSS, SVG, XForms, and SMIL to create an uber-web app platform.  This will be great, because Lord knows we don't need yet another technology in this space.  Only problem will be:  Which one to choose?<\/p>\n<p>Microsoft is never going to willingly play nice with XUL or MXML if it already owns a strong competing technology.  But the same applies the other way for Adobe.  And are any of these company's going to hand their technologies over to W3C?  Furthermore, XAML isn't fully baked yet (my understanding) and XUL hasn't seen any major successes outside of Firefox\/Thunderbird.  On the other hand, OpenLaszlo is a relatively small company and has got a few years of successful deployments in various sites (like Pandora).  And it's Open Source, which means it's got to be a \"good thing\", right?  Right?  Sooo... based on my five minutes of internet research, I think OpenLaszlo has got the best shot \ud83d\ude09<\/p>\n<p>Ultimately what would be cool is if one day a web developer could deploy a bunch of XML, <span class=\"definition\" title=\"For the high-level application structure\">LZX<\/span>, <span class=\"definition\" title=\"For functionality\">EcmaScript<\/span>, <span class=\"definition\" title=\"For graphics\">SVG<\/span> and <span class=\"definition\" title=\"For animation\">SMIL<\/span>, either in separate files or combined in a multi-namespace XML document (i.e. \"compound document\").  The browser would know how to interpret all XML grammars natively.  The web designer would use LZX to define the application at a high-level, XHTML to describe semantically structured and linked text, uses EcmaScript to describe the application's functionality, uses SVG\/CSS to define its visible presentation (or its \"skin\").  The browser would know what a &#60;window&#62; or &#60;button&#62; object does in terms of its functionality, it would hook up JavaScript event listeners to the widgets, it would have default bindings to know how to \"skin\" them, but they could also be styled via CSS or custom painted via designer-supplied SVG.<\/p>\n<p>Now here's the even cooler part, upon first loading, the browser could \"compile\" this web application into some native format and keep it around in a cache if it wanted (i.e. Internet Explorer could compile it into cached .NET\/CLR objects, <a href=\"http:\/\/labnol.blogspot.com\/2005\/12\/adobe-apollo-acrobat-reader-flash.html\">Apollo<\/a> could compile it into cached SWF objects, Mozilla could translate the LZX into XUL...  This means the browser wouldn't have to re-interpret the XML document(s) from the server unless some change had been made and execution could (theoretically) be just as snappy as with regular desktop apps.  The browser now really does become an operating system, complete with windowing system and compilers...what a concept.<\/p>\n<p>This last point was an important one, because it also means that companies like Microsoft and Adobe that <em>need<\/em> to make money on this technology in order to survive can update their expensive authoring tools to generate LZX+SVG+... content that will work optimally in their technology while still supporting the common platform.<\/p>\n<p>Now we need a cool and unused acronym and a slogan for the XHTML+LZX+EcmaScript+SVG+SMIL format to get web developers' imagination stirring.  How about \"You can do more with XLESS\"?  Ok, before I get flamed - I <em>really<\/em> am joking about that one...  Besides, I think the W3C already has the <abbr title=\"Web Integration Compound Document\">WICD<\/abbr> acronym ready for this...<\/p>\n<p>But all in all, it's a very exciting concept ...<\/p>\n<div class=\"ads\"><object type=\"text\/html\" width=\"468\" height=\"60\" data=\"http:\/\/www.codedread.com\/gads.php\"><\/object><\/div>\n","protected":false},"excerpt":{"rendered":"<p>I first learned of OpenLaszlo when I began learning a bit about SVG. The idea behind OpenLaszlo is to write rich web applications in XML + JavaScript. It is very similar in concept to Mozilla&#8217;s XUL, Microsoft&#8217;s XAML and Adobe&#8217;s MXML.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[39,25,46,11,28,30],"tags":[],"class_list":["post-192","post","type-post","status-publish","format-standard","hentry","category-laszlo","category-software","category-svg","category-technology","category-web","category-xml"],"_links":{"self":[{"href":"https:\/\/www.codedread.com\/blog\/wp-json\/wp\/v2\/posts\/192","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.codedread.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.codedread.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.codedread.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.codedread.com\/blog\/wp-json\/wp\/v2\/comments?post=192"}],"version-history":[{"count":0,"href":"https:\/\/www.codedread.com\/blog\/wp-json\/wp\/v2\/posts\/192\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.codedread.com\/blog\/wp-json\/wp\/v2\/media?parent=192"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.codedread.com\/blog\/wp-json\/wp\/v2\/categories?post=192"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.codedread.com\/blog\/wp-json\/wp\/v2\/tags?post=192"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}