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
