On Fri, 12 Apr 2002, Berin Loritsch wrote:

> Stefano Mazzocchi wrote:
> > Berin Loritsch wrote:
> >
> >>Coming to a theater near you, Cocoon 2.1: Same Plot, Different Story!
> >
> >
> > Oh, I love it, love it, love it. :)
> >
> > Now, let's get nasty! how about XSLT-transforming the sitemap into Jon
> > Bosak Play DTD :)
>
> I'm not familiar with Jon Bosak :(
>
> >
> > A sidenote: I'm pretty sure that everybody was laughing so loud that all
> > your points about refactorization was not really taken seriouly.
>
> Probably, but it was an example of analyzing Cocoon with the "Play"
> analogy that I was introduced to in Avalon.
>
> >
> > But I think Berin touches a few serious design issues
> > (overcomponentization, role of cache control, component isolation) that
> > we must seriously consider.
>
> Those are the biggest beefs I have with Cocoon right now.  In my view of
> the world, the existences of a Cache should be invisible to the anybody
> who is not specifically tuning it.  We should notice its existence
> solely by the virtue of our page loads being faster.

Ehm.. the cache is almost transparent for a user now (the exception is
XSP). If you work with XML, XSLT only you'll never get in touch with
cache aspects, or do I missed something?

> The Overcomponentization is a big problem.  Unless we start keeping an
> eye on it now, we will *never* get around to fixing it.

Yes, this is true. We should separate the sources into smaller pieces
and hopefully see where those components are which can be rewritten as
either helper/utility classes or maybe even merge them with others.

> > I only think that if we do this for 2.1 it will take forever for us to
> > reach a final release... this is the reason why I was considering
> > componentization refactoring to happen for 2.2 at least.
> >
> > What do you think?
> >
>
> I'm not saying we should go through and implement the COcoon
> Application COmponentarchitecture now.  I am saying we need to quell any
> further unnecessary componentization as we are now busting at the seams.
>
> What I would like to see is that all _optional_ components be broken out
> into little "mini" projects with their associated classes all in one
> place.  Kind of like what we recently did with Excalibur.  In fact, when
> we finally get the bugs worked out of the dependancy system, I'm sure
> you can adopt the recursive dependancy build system in Excalibur for the
> Cocoon components.

Not even the optional component. I can see that we split up the source
using the following approach (as a first step):

core/
environment/
   servlet/
   cli/
components/
   ...

 1) Break out everything that make the o.a.c.Cocoon class compile into
the core package.

 2) Isolate the different environments into a sub tree. I mean
separating the servlet environment from the cli environment can reduce
the size of a deployed Cocoon for the intended use. So Avalon and other
projects which build their site and docs using Cocoon don't need a
servlet environment. Those which use Cocoon in a servlet env don't need
the cli stuff.

 3) Start separating out some very basic sitemap component
implementation (like the Reader, FileGenerator, XMLSerializer) to
finally enable testing the stuff from 1) and 2).

 4) Start separating other components. One way could be to separate
components based on the optional jar list (FOP components, DELI
components, Lucene components, Velocity components, etc.)

I'm sure the steps above will be repeated in cycles to beak out the
right stuff but could lead to clearly (or at least better) separate
things.

> That way, the _only_ thing in the cocoon.jar is the core essential
> Cocoon components.  All things optional are in separate jars so that we
> can create an install that is minimalist.

Yes, see above for a way to go into that direction.

> Another thing that it allows us to do is start considering the role of
> the sitemap in regards to dynamic loading of jars.  We currently let the
> servlet engine load all jars associated with a webapp.  If we want true
> pluggability, we need to let subsitemaps load their own set of jars so
> that we can have true component isolation.  Also, so that when we come
> up with the formal Cocoon Application ComponenT Infrastructure (CACTI?)
> or whatever we call it, we also have the component loading
> infrastructure in place.

Exactly, this has beed discussed by Stefano and me when he was here at
my place two weeks ago. I think that the Cocoon core must be able to
build a ClassLoader instatiated with the set of jars described in the
yet to be defined Cocoon Block Descriptor Language (CBDL) for each
Cocoon Block. There is the need to have a ComponentManager to be build
up with the components mentioned in the Cocoon Block Description (CBD)
for private components for each Cocoon Block as well.

For the exported components of the deployed Cocoon Blocks I see two
ways of making them available to the other Cocoon Blocks:

 1) Have a root CM populated with the exported components from each
Cocoon Block.

 2) Populate the CM for each Cocoon Block with components the Cocoon
Block in question depoends on.

In 1) we choose a lazy way of collection all available components into
one CM. The approach in 2) makes access to components possible exactly
as mentioned in the CBD for the block.

> I don't think that is unreasonable.  It is a good first step toward the
> componentization process, allowing us to attack one aspect of it and
> provide some real feedback before we add in the application component
> infrastructure.

I think it may be a plan to go further.

Giacomo


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

Reply via email to