Joomla is a free and open-source content management system (CMS) for publishing web content. It is built on a model–view–controller web application framework that can be used independently of the CMS.
Joomla is written in PHP, uses object-oriented programming (OOP) techniques (since version 1.5) and software design patterns, stores data in a MySQL, MS SQL (since version 2.5), or PostgreSQL (since version 3.0) database, and includes features such as page caching, RSS feeds, printable versions of pages, news flashes, blogs, search, and support for language internationalization.
As of November 2016, Joomla! has been downloaded over 78 million times. Over 7,800 free and commercial extensions are available from the official Joomla! Extension Directory, and more are available from other sources. It is estimated to be the second most used content management system on the Internet, after WordPress.
Joomla 1.0 was released on September 22, 2005 as a rebranded release of Mambo 18.104.22.168 that combined other bug and moderate-level security fixes.
Joomla 1.5 was released on January 22, 2008, and the latest release of this version was 1.5.26 on March 27, 2012. This version was the first to attain long-term support (LTS); such versions are released each three major or minor releases and supported until three months after the next LTS version is released. April 2012 marks the official end-of-life of Joomla 1.5; with Joomla 3.0 released, support for Joomla 1.5 faded away in April 2013.
Joomla 1.6 was released on January 10, 2011. This version adds a full access control list functionality plus, user-defined category hierarchy, and admin interface improvements.
Joomla 1.7 was released on July 19, 2011, six months after 1.6.0. This version adds enhanced security and improved migration tools.
Joomla 2.5 was released on January 24, 2012, six months after 1.7.0. This version is a long term support (LTS) release. Originally this release was to be 1.8.0, however the developers announced August 9 that they would rename it to fit into a new version number scheme in which every LTS release is an X.5 release. This version was the first to run on other databases besides MySQL. Support for this version was extended until the end of 2014.
Joomla 3.0 was released on September 27, 2012. Originally, it was supposed to be released in July 2012; however, the January/July release schedule was uncomfortable for volunteers, and the schedule was changed to September/March releases. On December 24, 2012, it was decided to add one more version (3.2) to the 3.x series to improve the development life cycle and extend the support of LTS versions.
Like many other web applications, Joomla may be run on a LAMP stack.
Many web hosts have control panels for automatic installation of Joomla. On Windows, Joomla can be installed using the Microsoft Web Platform Installer, which automatically detects and installs dependencies, such as PHP or MySQL.
Many web sites provide information on installing and maintaining Joomla sites.
Joomla 3.1 was released on April 24, 2013. Release 3.1 includes several new features including tagging.
Joomla 3.2 was released on November 6, 2013. Release 3.2 highlighting Content Versioning.
Joomla 3.3 was released on April 30, 2014. Release 3.3 features improved password hashing and microdata and documentation.
On April 25, 2014, the Joomla Production Leadership Team announced that it started following ‘Semantic Versioning Scheme’ for new Joomla builds. The earlier LTS (Long Term Support) and STS (Short Term Support) lifecycle policy is no longer observed. Joomla version 3.3.1 was the first version released under the new development strategy.
Joomla 3.4 was released on February 24, 2015. Release 3.4 contains improved security advancements, composer integration, Google’s No CAPTCHA reCAPTCHA, and several new features. Extensive security revisions were rolled out in October 2015 with the release of v3.4.5.
Joomla 3.5 was released on March 21, 2016. Release 3.5 contains download system information, category item counter, insert modules in articles, drag & drop images.
Joomla 3.6 was released on July 12, 2016. Release 3.6 contains download subform field, show all menu items, improved UX, improved Joomla! updates, Menu type ACL, categories on the fly.
Joomla extensions extend the functionality of Joomla websites. Eight types of extensions may be distinguished: components, modules, plugins, templates, languages, libraries, files and packages. Each of these extensions handles a specific function. Many of the extensions built by the Joomla! Community are not free but require a payment for download.
Components are the largest and most complex extensions. Most components have two parts: a site part and an administrator part. Every time a Joomla page loads, one component is called to render the main page body. Components produce the major portion of a page because a component is driven by a menu item.
Plugins are advanced extensions and are, in essence, event handlers. In the execution of any part of Joomla, a module or a component, an event may be triggered. When an event is triggered, plugins that are registered to handle that event execute. For example, a plugin could be used to block user-submitted articles and filter text. The line between plugins and components can sometimes be a little fuzzy. Sometimes large or advanced plugins are called components even though they don’t actually render large portions of a page. An SEF URL extension might be created as a component, even though its functionality could be accomplished with just a plugin.
Templates describe the main design of a Joomla website. While the CMS manages the website content, templates determine the style or look and feel and layout of a site.
Modules is dynamic or static output in an template position. Templates define dynamic positions that can be assigned modules. An example could be a boxed login form in a sidebar. This could be compared to another CMS’s “widgets in sidebar”. Multiple modules can be assigned to each position and each module’s assignment can be controlled per menu item. Historically, modules are assigned to sidebars around the main component output.
Languages are very simple extensions that can either be used as a core part or as an extension. Language and font information can also be used for PDF or PSD to Joomla conversions.
Libraries are usually extra php libraries that provide functionality for a component, module or plugin to work correctly (such as Google APIs).
Files are single files that can be installed anywhere in the Joomla file system. Examples of this include allowing extension developers to provide extra template views.
Packages allow user to install combinations of any other extension type listed above. This allows related packages to be installed and uninstalled in one action rather than as separate entities.