Many Apache projects are written in Java. Java seems to have a culture of overengineering.<p>Many Apache projects have originated in corporate environments.<p>I have a theory of how the incentive structure in such an environment is pushing towards overengineering in many parts of a software projects, as opposed to an open-source project which is usually much more cohesive as a result of the stewardship of a single person. When a larger team is in charge of developing a project, there's an incentive on each member of the team to signal ability, competence, and their contribution. As such they will try to make use of their piece of the project/their responsibilities as a means of presenting their knowledge, by sprinkling/making use of various techniques which in most cases are not needed for the project at hand => overengineering. To read more about this effect in other fields as well, there's a recent book by Robin Hanson, you might want to check that out.<p>Also, keep in mind, that even in a corporate environment, it is not uncommon to have a project started by a single person, which usually leads to a more coherent and less over-engineered design.<p>Also, beware that the above is a mere anecdote, armchair philosophising of mind, which has not been tested at all. I still expect it to be roughly true though.<p>So that's why indeed some of Apache's projects seem overly complex, IMVHO.