My life regarding software goes thru phases. A phase transition is when you strongly believe in something, then you strongly change your mind. Others call it a 'revelation', others think you lost your mind.

I wrote Cocoon as a way to help achieving a more coherent look and feel for the apache web sites. It was way overdesigned for that, so much that we created another project for that (Forrest) which is still overdesigned (even if it got a lot done).

Having one coherent look and feel was more of a social issue than a technological one, here I was right and the way to design for SoC was something that didn't have much to do with XML, yet SoC turned out to be a key in a lot of aspects (and here I was right too, even if I don't believe my mathematical simulation of degradation of SoC, done in my master thesis, makes working group productivity saturate have any scientific meaning whatsoever, in fact, I truly believe it to be correct but I would need a lot more resources to prove it scientifically and I don't have the time/will at this point)

Another thing that I got right was the assumption that in order to create glue between systems, you can't transform everything into everything else: a common ground, a low level "lingua franca", helps establish a foundation for SoC work to take place for real.

The use of XML as such a lingua franca was a ridiculous bet in 1998, now it's pretty much a given. People thought that forcing everything into a SAX pipe would have been too limiting for those binary formats... but the 80/20 rule worked very well, for those 20% cases where you need, for example, to transform, say, AVI into MPEG4, well, use something else :-)

Cocoon is a lot different than it wanted to be when I started.

In fact, I didn't even release it when I wrote it, I thought nobody would have been interested in it, but then I mentioned it once and people wanted to take a look at it. And the rest is a lot of incremental (and not so incremental) evolution.

                                  - o -

Over the last 6 months, I worked pretty heavily on Mozilla as a platform.

Read more here if you are not up-to-date with it:

http://www-128.ibm.com/developerworks/xml/library/x-ffox15.html

Weird as it might seem, Mozilla and Cocoon have a lot in common:

 1) a polymorphic component model (xpcom for mozilla, avalon for cocoon)

2) are not afraid of using the right language for the right thing, even if this means an explosion of different things that you have to learn

3) the understanding that "in media stat virtus" (virtue is in the middle) in regarding to compilation vs. interpretation, static vs. dynamic and strongly typed vs. weakly typed languages (javascript + C++ for moz, javascript + java for cocoon) and other scripting languages might follow

 4) a vibrant, loyal and open development community

 5) due to #1 + #4, a very strong and diverse collection of components

6) due to #6, a need for a simple to use extension deployment mechanism (and metadata description to automate it)

but most important, is that pretty much everything that cocoon was born to do, you can now do it in firefox directly.

Things like cinclude can be done with ajax-driven client side include, even if this requires XSLT transformations (even multiple ones!)

The fact that it runs on a client, avoids the problem of having to use SAX events instead of using DOM, which is much simpler to work with.

SVG is supported natively and SVG, XHTML and <canvas> can belong in the same DOM and react to the same scripting environment, mix ajax and you drastically reduce the need to go back to the server, even for the most complex UI scenarios.

Because of that, you don't need continuations anyway: a wizard-type page will have a continuation that is simply a state stored in your client... and you go back to the server only to save state.. just use data-driven web services a few, highly dynamic, XHTML templates.

I do that for my latest web sites and the more I learn how to driven the client, the less I feel the need for advanced server frameworks. Is it just me?

Is client side advancement making cocoon and all its machinery to compensate for advanced web client obsolete and archaic?

Don't get me wrong, firefox's market share is minimal and firefox 1.5 is not even out there, but the direction is set and things like Google Maps, Flickr, Google Mail, the new Yahoo Mail and JotSpot show very well where we are heading: richer and richer web UIs, requiring more web services and less publishing engines.

Cocoon already moves in this direction, I'm fully aware of it and before xforms make it into the browser, CForms are already out there and working pretty damn well.

Cocoon was and still is instrumental as a bridge between old and new, but in a new world, would one need to learn all this stuff? or, on the other hand, once somebody knows how to work and build rich web UIs would it find it easier to work on something like cocoon than, for example, more traditional web frameworks?

If you ask me, the current infatuation with Ruby on Rails and friends, while understanding and to the point (the need to avoid XML pushups, so true), will fail dramatically short in scale to complex systems. Just like M$ Word is great to write one/two pages and it fails miserably to help you with your thesis, something like rails is awesome for your blog or single-handed ecommerce web site, it would kill you no less than PHP with a massively complex web site.

The strong architectural parallel between mozilla and cocoon, makes me very hopeful in the future of mozilla as a platform, even if there are years ahead of polishing to do.

But as a researcher, a scientist and one that likes to push the edge, I sense that cocoon is kinda 'done', not as in "finished, passe'", but more as in "been there, done that".

Sure, lots of things to polish and little things to continue to improve, but I wonder if the action is somewhere else.

How do you feel about this?

--
Stefano.

Reply via email to