Paul Hammant's Blog: Diversity
This has resonated with me for a while. Should a team strive for a single implementation of a thing (if there are differing opinions) or allow diversity. Diversity could be at any level. It could be at implementation where the API is honored, if if there is enough discord, breaking the API too.
We were faced with just this in Avalon project. In the end we chose diversity. Actually we did not choose it, it happened. We "chose" unity, and the team that wanted diversity, did it elsewhere. What that team wanted was Phoenix and Merlin diverging but honoring the Avalon-Framework API. What happened was that was voted down (essentially), and the team did their diverse thing elsewhere. CodeHaus as it happens. And in a way that is more reminiscent of Evolution itself, there were three simultaneous strands of diversity. PicoContainer launched off in a not-compatible way. Loom (JContainer) was born to honor the Phoenix idea and be compatible with Avalon-Phoenix. Soon after DNA (JContainer) was born to take the Avalon-Framework idea into the next generation. En route, we have coined "type-1, type-2, and type-3" Inversion of Control. We've also signed up many to IoC (mostly around type3) who were ideologically opposed to type-1 before. We've not been able to sign up many type-2 people, which is interesting (more later).
Anyway on PicoContainer, I've basically overjoyed to to be working with Joe (SitMesh, QDox), Aslak (XDoclet, MiddleGen), Jon Tirsen (Nanning, Prevayler) and James Strachan (Apache god). Also Dan North and Chris Stevenson (get out of stealth-mode guys). Lastly Mike Hogan - a new net friend. The quality of teh lurkers in the list is astonishing too. All of these guys are so talented. They have taken Rachel Davies' so-simple-it's-brilliant idea to a level of perfection I could not have done. PicoContainer has achieved more in the few months of its life than I've seen Avalon do in many years I've been pushing it. Pico was instantly accepting to those that I had been softening over many years on Avalon. Perhaps I prepared the ground a little with over selling Avalon (Straw-man or diversionary tactic?), perhaps not.
I love PicoContainer. It's manifestation of the lowest common denominator (LCD) component could not be simpler. Ignoring lifecycle (which is a niche need), there is nothing to extend, import, throw, implement. Just some coding rules. We have reached the end point of IoC. That it, until someone impresses me further.