The prevalence and maturity of open source content management systems (CMS) has grown substantially over the past decade. Having an open community of developers – users – designers who develop a “core code” and the set procedures to augment and customize that code, has proven a perfect model for the evolutionary environment of the internet. Each CMS community supports and uses the system and devotes countless (collective) hours to authoring improvements, developing dynamic plug-ins, and keeping the system stable and secure. Keeping the code open means that the platform is accessible to anyone who is familiar with it, and insures that a site owner is never tied to (or limited by) a particular developer.
Each CMS has a set of structural principles that define how a site will be organized and function and each CMS exposes portions of its structure to customization and manipulation. The strength of an open source system comes from the vitality of the community that supports it. In general, the wider the group contributing to the project, the more vibrant and healthy the system will be. The philosophy of most open source content management systems is to divide controls into three distinct segments:
- Core Code => Base Functionality of system – maintained by the CMS “community”
- Plugins / Modules / Extensions => Modular extensions to code built to augment core functionality – contributed by open source, paid, and custom developers
- Themes / Templates => Configuration of color scheme, typography, positioning of “blocks” in which content is inserted, etc. – contributed by open source, paid, and custom developers
Plugins and Themes can be connected or disconnected from the core code in a modular fashion in a way that keeps them independent of the core code. This means that while plugins can augment functionality and themes can change appearance, core attributes of the system will remain constant.
This independence allows for the fluid upgrading of core code as it evolves, and allows specific sites to be customized in terms of how they “look” and “work” without having to directly modify the core capabilities and structure governing the system.
Ultimately every site owner should want to take control over publishing the content of his/her website, and authoring in a CMS is the best way to do so. Generally speaking a CMS is a database driven site that allows editorial control via a secure web based administration panel.
While many CMS systems have been developed by small groups or individuals there are several projects that are developed and supported by large communities. These community projects are all open source, which means that use of the system is free and the core code is accessible to extension and modification.
Here are some relevant statistics:
WordPress (Year of inception:2003 | March 2015 marketshare of all sites using a CMS = 78%) go to the project
Joomla (Year of inception:2005 | March 2015 marketshare of all sites using a CMS = 8%) go to the project
Drupal (Year of inception: 2001 | March 2015 marketshare of all sites using a CMS = 8%) go to the project
I have worked in all three systems and find them each excellent platforms with outstandingly supportive and active communities, but end up recommending WordPress most often for the following reasons:
- the shortest learning curve for the site owner
- the most streamlined code upgrade procedure
- very straight-forward migration procedures
- it is the most popular and widely used