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

Reply via email to