Carsten Ziegeler wrote:
Hi,
I just started with looking closer at the pipeline stuff we have for c3
atm. My first impression was that there are too many interfaces which
might confuse users :) As we step away from just a sax based pipeline, I
fear we really might need all these interfaces :(
The other thing is caching: i guess in many scenarios caching is not
done on the pipeline or even pipeline component level. So I think we
should try to make caching more optional - I know that it is optional
from a feature point but I would like to have the pipeline jar as small
as possible and move the caching stuff into an optional/additional lib.
I have no good idea atm how to do this as the pipeline components itself
need to be aware of caching. But perhaps someone else has?
I'm fearing OMS (Over Modularization Syndrome) here. Modularizing is
good for either very different functional areas or external module
dependencies. But in the case of caching, it is IMO a core feature of an
efficient pipeline implementation even if there are some use cases where
caching isn't useful or possible.
So caching should be part of the core pipeline feature set, but the
cache should be an optional dependency of the pipeline object (i.e. it
can be null) for those use cases where caching doesn't make sense.
That way we keep a core concern into the core library, but do not
require people to use it if they don't want to. But more importantly
IMO, we avoid having a confusing multiplication of super-fine-grained
libraries and also the increased architectural complexity needed to
separate caching into an optional module.
Sylvain
--
Sylvain Wallez - http://bluxte.net