The following idea came to my mind during the weekend. All the
recent discussions about a new core/container etc. show that
a possible future version of Cocoon will have a different
component handling than we have now.

One major concern for me is compatibility. It would be bad
if someone had to rewrite his complete application just to
update from one version of Cocoon to another. I guess we
all agree on this. Now reaching this goal can be done
from two sides:
a) The new version can have a compatibility layer.
b) We can provide a smooth transition from version to version.

It would be ideal if we would have both. But with a compatibility 
layer people tend to just use it without migrating their app.

I wondered what we can do to build a better transition and
to get users moving away from our current approach to a 
newer version. A possible way would be to make minor improvements
or modifications from version to version until we reach our
goal. This could e.g. be done by building ECM++ for Cocoon 2.2.

The basic idea is to build an own version of ECM, which is:
grabbing the current ECM code, removing everything we don't
need and build a complete container in Cocoon that provides
the minimum functionality.
This would be:
- using the same configuration (roles and xconf)
- provide support of the following avalon based interfaces:
  LogEnabled, Contextualizable, Parameterizable, Configurable,
  Serviceable, Disposable, Initializable, Startable

What could be the benefit of this? 
- no support for Composable, Component etc. anymore (so no
  proxies and wired wrapping anymore).
- no LogKitManagable, RoleManager support etc.
- no Instrumentation support - we could our own instrumentation (JMX?)
- All the code for this container would be ours - only the marker
  interfaces are of course from Avalon.
- We could easily add new features, like the selector handling
  or the DI from Fortress. Using Fortress is imho out of question
  as it does rely on too many third party code.

By having our own container implementation we could add any support
that we think that makes sense for providing a smooth migration path - 
whereever this path ends :)

Now, doing this is fairly easy; it requires just a bunch of code
and would reduce our depencies while giving us more flexibility.

I just started with this approach and could finish it in the next days
if people think it is worth going this way. It would give 2.2 more meat
as well.
But perhaps this idea is totally foolish?

Thoughts? Comments?

Carsten 

Carsten Ziegeler 
Open Source Group, S&N AG
http://www.s-und-n.de
http://www.osoco.net/weblogs/rael/

Reply via email to