Software frameworks refer to the architecture of a program. Frameworks are efficient because they allow for code to be reused as part of the design. Understanding the Joomla! framework isn’t necessary for most users of the CMS, but it is the integral foundation that makes the CMS work so well. The framework is the base set of software libraries and design patterns that the CMS runs on, and it is the part
of Joomla! that makes it easily extendable.
Joomla! 1.5 introduced the Joomla! framework as the first step to separating the framework elements of the program from the CMS application. This was done to allow for the framework to support multiple applications, not just the CMS. Figure 1.2 illustrates how the framework supports the CMS application and how the CMS application is extended with extensions. Framework, libraries, and plugins make up the foundational layer. Libraries are reusable “collections” of code that perform a specific function and that can be reused by different independent applications and the framework. Libraries allow data to be used and shared in a modular way. Plugins are used to extend the functionality in the framework. Applications are programs that run using the functionality of the framework. The Joomla! CMS is an application that runs on the Joomla! framework. The separation of the application layer from the framework layer allows developers to create other applications to run on the framework’s functionality. Modules, components, and templates are items that extend applications. Modules, for example, are a way to present data, components are a way to organize and store data, and templates are a way to visually organize data presentation.