Carsten Ziegeler wrote:

<snip/>
I'm currently still missing the *big picture*. What are blocks, how does
Cocoon look like with them. Can I develop something without blocks? What
do I have to learn? And so on. This might be because I didn't have so
much time for Cocoon in the last weeks, don't know.

It would require quite a lot of work to give a fair overview of what we have discussed about this in the last three or so years. You find some info in http://wiki.apache.org/cocoon/Blocks. And for the relation to OSGi I suggest that you reread my first post in this thread together with some of the references.

I can give a short overview on how I currently view what Cocoon would look like if we go the OSGi bundle way.

All current blocks, the core and libraries that are used by several bundles are packaged as bundles. These are deployed in a OSGi kernel. During development the Cocoon bundles can be deployed within the OSGi kernel of Eclipse together with various Cocoon develpment plugins (bundles). And during deployment the Cocoon bundles are deployed in a standalone kernel that either is started from within an servlet or at "top level" and contains a http server.

The OSGi kernel is like an OS kernel. It takes care about starting and stoping bundles and to resolve dependencies between bundles and gives them a parent classloader containing their dependencies.

The above means that we can get a much higher level of isolation beween different parts of core and between blocks. As the bundles don't need to expose all classes to everyone anymore. This is something that we allready need quite badly IMO, and a must if we wish to make it possible for external communities to develp Cocoon blocks.

Having this means that a user can download a minimal Cocoon disto with some core bundles and a bundle (block) management utility. This can then be used for download and deploy the rest of the bundles that the user need.

I also think that the current core should be splited in a number of bundles. I would like to have a Cocoon core bundle that contains the tree processor, the component manager and core interfaces. The Cocoon core will define what Cocoon is. It will have an own release cycle like an OS kernel. And the stable release should be rock stable. The servlet and CLI environments should be own bundles. The flowscripts could be an own bundle. Most of the components in current core could be transfered to own bundles.

By breaking up todays monolitic core we are able to deprecate things that we don't believe in anymore and move to an own bundles that still will make the functionality available for those depending on it, whithout making core bloated.

                    --- o0o ---

Above this we have the "sitemap aspect" of blocks. Its more at the application level and doesn't have much to do with our current blocks. It is more for creating reusable application frameworks. It will be usefull for projects like Forrest, Lenya, Daisy, Linotype and probably for Portal. It gives you a possiblity to create bundles that not only exposes components and can contain own components, but also make sitemap functionality available through the block protocol.

/Daniel

Reply via email to