Vadim Gritsenko wrote:

Berin Loritsch wrote:

Daniel Fagerstrom wrote:

"Decomponentization" could start right away. Do you have any concrete examples of components that shouldn't be components?


Pipeline (sure we have two implementations, but that doesn't mean it has to be a component)


Five implementations. And I imagine after interface cleanup and for pipeline API, pipeline should stay component.

Not necessarily. Just because there are multiple implementations doesn't necessarily mean it is a component--or should be a component. There are some useful things we can do with a Pipeline such as using the Decorator pattern as opposed to inheritance to add features. Or we could use other OO tricks that just aren't possible or too difficult in a component environment.

URL interpretation

?

SourceResolver and company


Just about anything that is not a Processor, Generator, Transformer, Serializer, or Reader.


You forgot Matchers, Selectors, and Actions. Every but small projects have bunch of those.

No, I left them out on purpose. Those are elements of the Sitemap--which is an implementation of the Processor.

Stores. Swapped very frequently, several implementations, and Cocoon's default is not the fastest gun in the west.

Ok.  That works.


Input/output modules. Tons of them.

:/ I think that there are some better ways of dealing with this... But it is an extension point that is useful.


It is very simplistic view of the world to declare that only P/G/T deserve to be components. I'd even go as far as claim that P/G/T are implemented by cocoon users the *least* often compared to other interfaces.

Well, as da Vinci said, "Simplicity is the ultimate sophistication". The key point of the decomponentization process is to reduce the number of extension points to the absolute practical minimum.

By being brave about what we leave out, it forces us to think differently about other aspects of the system. I'm thinking way forward here.