Conclusions
I’d like to conclude this chapter by considering the patterns and the core principles expressed by them from a slightly different perspective.
Over the last couple of years there have been many successful frameworks in the world of open source software. Examples include, but aren’t limited to, frameworks that have emerged from the Apache Software Foundation [http://www.apache.org], such as Struts and Cocoon. Let’s take a brief look at the characteristics of these frameworks and see if we can find evidence for why they have been (and still are) so successful.
- The frameworks keep a clear focus on their core tasks. You can say what these framework do in just a few words. Struts is a framework for the implementation of the model view controller pattern. Cocoon is a framework for XML-processing organized in a pipeline style. None of these frameworks tries to solve every problem on earth. Instead, the developers worked hard to retain the frameworks’ scope.
- The frameworks address areas with a concrete potential for reuse. Web development is central to today’s world of software, and you can find the aspects that the frameworks address in many applications worldwide.
- The frameworks are relatively easy to use. This doesn’t mean they’re trivial to use, but the frameworks aim to avoid unnecessary complexity and keep an eye on a straightforward usage process.
- There is a strong collaboration between the framework developers and the framework users. These frameworks haven’t been developed in an ivory tower. We speak of the open source community—the word community alone suggests that there is a massive exchange of information involved. It’s this community that gives the framework developers much useful feedback on what they do and what they plan to do.
Keeping a clear focus, aiming for straightforward solutions, avoiding complexity whenever possible—these appear to be key factors in many success stories on frameworks. I think it’s important to understand that to achieve these things, a certain frame of mind is required to be shared among the project team members that gives preference to smaller and practical solutions over higher, but unachievable, goals. In addition, a strong collaboration between framework developers and users seems to be an equally important ingredient to successful framework development.
You can find all this advice running like an undercurrent through the patterns presented in this chapter and in the solutions they suggest. In this sense, the patterns should help you with your decision if you’re considering building a framework and should provide you with much useful experience in running your framework projects successfully.