With Inversion of Control (IoC) we have seen the idea touted and sold hard over five years. Avalon is the most prominent of the frameworks honoring this ideal.

With respect to IoC, the OO software world is split into the following camps:

1) Those that have never heard of IoC
2) Those that have heard of it and love it.
3) Those that have heard of it and are ideologically opposed to it, would sooner die than use it in any design of their projects, get sick at the thought at having to use a component that was design with IoC in mind, and would happily go to war to destroy the evil Inversion of Controllers. They'd then rewrite history in their favor and demonize the now-dead IoC advocates. Probably including some element of eating children.

Of course people in the (2) category can be just as rabid against the 'static singleton' and registry factions.

Anyway, (2) is further split into three sub-factions (and the risk of overusing 1,2,3 now) :

Type 1] Where the component coder has to implement a number of interfaces and consequential method bodies to satisfy component assembly and configuration. They also have to supply some XML meta information for the components needs.

Type 2] where the coder has to provide a setter for each required component (assembly) or element of configuration. Depending on the framework, they may also have to supply XML for needs declarations.

Type 3] where the code specifies their assembly/config needs via parameters in the constructor (or constructors).

It seems is that you can't budge a coder from one camp to another. Camp as in (1 .. 3) and [1 .. 3]. It seems like the protestant/catholic split alluded to in Gulliver's travels and Endianness, people hear of one thing, bet on it, then do not like to hear of another thing. They become polarized. Polarized, of course, after they make a choice (usually after ten seconds worth of analysis).

The point

Maybe part of the problem is to do with the fact that in Western society does not school people in the arts of apology, u-turn, high-esteem. At the simplest level that means people want to stick with a decision they made on a subject. At the worst level, in times of conflict, people would rather escalate an argument than find some facet of the other's position that has merit [more another time].

Basically we see people make a call on one logging framework or another, static-is-hell (IoC) or static-rocks, Gnome over KDE or vice versa. What we fail to see often is people move, or react in kind after compromise or gesture.

I think the final character goal for typically male coders to achieve is that enshrined in the interpersonal aspects of XP. The respect angle. The do-unto-others thing.., learning to admit when your are or were wrong, learn to accept that someone else having a smarter idea is a good thing. Learn that you do not have to be right all the time.

All a bit heavy perhaps. And beyond the scope of IoC or not and which type of IoC. This interesting though watching the factions around and against this increasingly popular idea.

I for one will remain a fan of PicoContainer, a former fan of Type-1, and a future fan of some simpler IoC design in the future (my buddies or some other team). I'm not precious in this respect. We've built that into PicoContainer, there is no single implementation sought for anything.


September 3rd, 2003