I'm happy to see the avalon package looks much cleaner now so that you
can notice something... there are packages that we could call
"primitive"... avalon.component, avalon.context, configuration,
processor, lifecycle and others are totally decoupled one from the
other, they define a single, very specific contract and they are "self
contained". 
Others packages uses this primitive to create more elaborate and high
level contracts (container etc.).

It's a general rule it's better to have primitive than composite
packages... because they don't have dependencies and they enforce SOC. I
may like the avalon.pool interfaces but I don't want to inherit all
component contracts. This make perfect sense. 

So my first question is: container is right now a composite since uses
component. Is it right? Can we have a container package unaware of
components? If so it's critical not to mix contracts and clean it. 

The same can be asked about datasource and a couple of other classes...

Second: I'm +0.001 to restore lifecycle into avalon.* ... just
aesthetic. :-)

Fede

Reply via email to