People,

I'm big time excited.

I've been watching over mozilla since my good old friend Paul Phillips
(of Boa and go2net fame) told me about the move. I've always been a
Netscape fan. I'm still writing my email on Netscape 4.78, even if, as a
browser, it sucks dry.

After my visit at Wyona (www.wyona.org) in Zurich, I've tried to clone
their extremely cool inline editor (Xopus) even if it works only on M$
IE 5.5 + MSXML 3.0+

Both IE 5.5 and MSXML 3.0 have a bunch of features that appear extremely
neat and sexy at first (like the contentEditable="" attribute that turns
content of the browser page editable, but only that!) [find attached a
cloned version of a CNN news page that I mounted to show the technology
to a customer, as said, works only on IE 5.5+] but turn out to be a
major pain in the ass later on when you try to tune it for your needs
(as almost all M$ technology).

So, mostly for portability reasons but also because the MSHTML component
(the one that implements the contentEditable functionality) cannot
handle the editing complexity that I wanted, I ruled IE out and tried to
see if it was possible to achieve the same thing with Mozilla.

So, I looked around for documentation, I grabbed the source, installed
the latest, took a deep breath and jumped into the high waters of these
millions of lines of code.

First things to notice:

 1) the use a chrome:// protocol to locate stuff and these are not
mapped directly on the file system but pass thru properties. So, if I
connect to 

 chrome://global/skin/logo.gif

the actual location depends on the user selected skin.

Go back and re-read my RT on Cocoon Web Applications. Same concept!

 2) after a few days of IE DHTML, I looked at XUL and... guess what,
I'll never go back, not even to java! Creating a GUI using XUL is *the*
way it should be. Period.

 3) ah, the good old quest for separation of concerns between model view
and controller. Well, XUL is the model, CSS is the view, JavaScript is
the controller.

But mixing sourcecode into XUL is ugly, so, here it comes XBL,
eXtensible Binding Language, which supports magic things like "skinnable
feel" for widgets.

Ok, skinnable look is easy once you have stylesheets, but "skinnable
feel"?

Yes, people, you got it right: XBL is the logicsheet concept applied to
the client side!

At this point I was almost crying, but there is more.

 4) javascript is create for creating simple event-based logic
(actually, IMO, the best choice one could possibly made!) but hard to
create hard-core programming logic.

Enters XPCOM: components define behavioral interfaces. You ask for a
component manager to give you an instance of a component that implements
the interface you want, then you use it.

Can you say "avalon in IDL"?

But the fun it's not finished:

 5) with the blackwood project, they are working on the Java API for
XPCOM so that you can implement an XPCOM component direclty in Java.
Then, you can use normal XPConnect (which is the layer between
JavaScript and XPCOM) to connect to your defined component to the logic
of your mozilla-based application.

Ah, guess what:

 6) the have a bunch of prebuilt XPCOM components, even some that clone
the proprietary MSXML functionality exactly (to ease portability of
IE-based applications over to Mozilla), even those that implement SOAP
messaging back to the server.

IE might well have 90% market share, but Mozilla beats the crap out of
IE in terms of adaptivity to all the required client-side complex web
applications.

Give it another 6 months to stabilize, polish, speed-up and reduce
memory footprint and we'll have the best web user agent ever.

But if it's not the case, don't worry, Mozilla has a community behind
it, IE does not.

Does this ring a bell around here? :)

Suggestion: go grab the source and get your hands dirty with it. You
won't regret this in the future.

-- 
Stefano Mazzocchi      One must still have chaos in oneself to be
                          able to give birth to a dancing star.
<[EMAIL PROTECTED]>                             Friedrich Nietzsche
--------------------------------------------------------------------

Attachment: demo.1.0.zip
Description: Zip compressed data

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]

Reply via email to