cocoon-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Stefano Mazzocchi <>
Subject Re: Cocoon2 Design
Date Fri, 02 Jun 2000 19:03:19 GMT
David Duddleston wrote:
> > I can't talk for JetSpeed, Turbine or this Craig's new "Struts" since I
> > don't have one of my million feet in there :) but Avalon, Cocoon and
> > James all share the same ideas and integrating them would be "piece of
> > cake".
> >
> > And you can quote me on that any time you want.
> I see that they share a lot of the same interfaces, abstract classes and
> basic structure. This is a great start for intergration. One thing, I think
> there might be a missconception that Avalon is a framework for builder
> Servers and not a good fit for Web Applications. I have seen this stated by
> others, but after looking at Avalon and don't see why it can't be used for a
> starting point to building Web Applications. To be honest, I don't know the
> code very well, so maybe I missed something.

No, you are right.

Avalon started as a single framework but later got fragmented into two
pieces: block frameworks, and subblock framework.

The sub-block framework is what Cocoon2 uses in "org.apache.arch" and
will also be the base for the avalon blocks (the pieces of the puzzle,
the lego bricks to build your server)

Then there is the proper avalon that takes care of integrating all the
blocks, managing revisions, updating the jars from the web on request,
provide simple GUI for configuration and all that stuff.

So, yes, Cocoon is already using half of Avalon.

You simply make "Cocoon implement Block" and you're done.

Piece of cake :)
> > Well, I can't tell you "when" but the design issues involved are simply
> > too big... the problem with Avalon is that it's a meta-framework. It's
> > more abstract than people can normally get.
> >
> > Many said to me: they seem lotsa good ideas, but what does it mean for
> > my code?
> Right, it is difficult to grasp the concept of something that is just a pure
> framework. As in a framework that is just a set of interfaces, abstract
> classes and maybe some implementations, unlike a project like Cocoon that is
> both a framework and implementation. Still being somewhat new to OO
> programming and programming in general, I have a difficult time myself
> understanding how to put together a good framework/design pattern.

No shit. It took me two years of hardcore java coding under jserv to
find out we needed more than just good classnames.

> > The very final goal (probably in 2010 or something :) is something like
> > this
> >
> >          +-> Cocoon
> >          |
> >  Avalon -+-> Tomcat
> >          |
> >          +-> James
> >          |
> >          +-> ???
> >
> > where you can make a web application (tomcat) with XML (cocoon) that
> > generates a SVG graph of the number of mails (James) sent to your
> > mailing list on a daily basis.
> >
> > Also, creating each server as a collection of components that can be
> > reused as they are (logger, object store, thread manager, database pool,
> > authentication store, XML parser, XSLT transformer, RDF analyzer,
> > etc....) by the other servers.
> >
> > All running on the same JVM or on different instances, all will the
> > ability to "add" your components just as easily, and to extend each
> > server functionality with servlets, mailets or Cocoon pipeline
> > components, war files, JSP and what else you want to add.
> >
> > Integration is the goal.
> All of the above would be excellent. I hope it comes sooner than later. What
> is the opinion of the Tomcat team using Avalon as a base framework?

Craig knows all about it. He's just waiting for something to show up.

Also for Tomcat will just be a matter of doing "Tomcat implements
Block", nothing more. They can start be "avalon-aware" (this means use
other blocks directly) later on, if they think so.

See, the power is create nice thing, not force others to use them.

> > > I think there is some happy middle ground here that can be
> > achieved, but it
> > > would take several highly motivated people and some open minds by those
> > > leading the various projects to make it happen.
> >
> > I'm highly motivated and I'm sure any of you is, as well.
> You are highly motivated, have excellent ideas, open minded and most
> important... get big time respect around here. I'm glad you are behind
> intergration!

Thank you, deeply appreciated. :)
> > It's only a matter of pushing for the right direction and have patience.
> I seems like a possible task, especialy with projects like Avalon designed
> for this specific goal and people like you pushing for it. The hardest part
> is getting to know all the projects well enough to know how to do it.

No kidding.
> Another good start would be to share more and more of the same
> utility/services classes as well. This has already begun, just take it a
> little further when ever possilbe. 

Well, there are huge problems on this, trust me. We have been trying for
almost three years now.

> services wrapper into Cocoon. Actualy there are lots of little things that
> can be done at this point. Hopefuly people will continue to push and these
> threads on intergrating JetSpeed/Turbine/Cocoon/Avalon... won't die out in a
> day or so. BTW, I know Micheal Nash (Expresso framework) is all for sharing
> code and has changed the license of Expresso to Apache, so his is another
> possible player here. 

What's this? Never heard of it (sorry, nothing offensive, just

> One tricky area that I have found when trying to
> intergrate projects is dealing with the persistance layer. In other words,
> the code is so closely bound to the persistance layer that it is difficult
> to pluck it out and or share it with other projects with a different
> persistance layer without creating a big mess. I don't know how feasable it
> would be to get projects to share the same perstance layer. Something like
> Castor perhaps might be the most flexible. Who knows.

James uses an Avalon block to implement a persistent layer for Mail
objects. This is just an interface and you can create your own block
with any particular implementation of that interface (Castor, Ozone,
InstantDB, serialization on disk, serialization on BLOB via JDBC,
etc...). The only thing that james requires is that you implement the


In fact, Avalon is more of a community rather than a real code factory.
A sort of CPAN for interfaces, rather than real code. Then code, under
the form of binary jars, can be downloaded _after_ you install your

You plug james.jar in your avalon and it asks you:

"There are 5 flavors of Object store present in the Avalon archive,
which one do you want me to download for you?"

(of course, if you want that feature, otherwise, it will download the
standard components right away)

Think about something like this for Cocoon:

 The Cocoon component archive stores:

    -5 generators
    -13 filters
    -8 serializers

 which one you want to install?

And your visual sitemap editing tool adds another box in your virtual
drawer, along with metadata about author, functions provided, docs and
all that.

People this is not Sci-Fi, this is what I'm trying to do with the
sitemap right now! And can be done at all levels: server, block and

Can you imagine how easier it would be to install and create java
software this way for new users?

Stefano Mazzocchi      One must still have chaos in oneself to be
                          able to give birth to a dancing star.
<>                             Friedrich Nietzsche
 Missed us in Orlando? Make it up with ApacheCON Europe in London!
------------------------- http://ApacheCon.Com ---------------------

View raw message