Drupal is the result of the combined effort of nearly 800.000 developers, designers and site-builders who collaborate in a vibrant community to produce a state of the art content management platform.
What is Drupal? CMS, Framework or Platform?
Most people see Drupal as a content management system – and they are right to do so.
“A content management system (CMS) allows publishing, editing, and modifying content as well as site maintenance from a central page. It provides a collection of procedures used to manage work flow in a collaborative environment.”
Out of the box, Drupal provides many features you would expect from a modern CMS.
It helps users:
- organize, structure and manage content with an easy-to-use web interface,
- handle a variety of content types including video, articles, blogs, podcasts, polls
- organize and manage users, user roles and access control.
However, ask a developer, engineer or architect involved in the community “What is Drupal?” and you may get a slightly different response. They will probably tell you that Drupal is a Content Management Framework.
I certainly agree with this point of view and I see the CMS part of the project as an implementation – a proof of concept, if you will, of the framework.
“In computer programming, a software framework is an abstraction in which software providing generic functionality can be selectively changed by user code, thus providing application specific software. It is a collection of software libraries providing a defined application programming interface (API).”
Drupal “ships” with a rich list of APIs, libraries and subsystems that enables developers to extend the Core functionality in a modular / pluggable fashion.
The most important framework APIs and libraries include:
- Module system (300+ Core hooks)
- Database abstraction layer
- Menu system
- Form API
- File management system
- Field API
- Search system
- Node access system
- Theme layer
In the beginning of this article, I described Drupal as a Content Management Platform so let’s see if the shoe fits.
The keys to any successful software platform are:
- Efficiency: The platform should enable its users to do key tasks quickly.
- Standardization: The platform should conform to a documented set of standards and best practices.
- Scalability: Rather than referring to server load, this means that any product built on the platform has to be easily repeatable.
- Extensibility: It should be easy to add features and functionality.
An excellent example of these concepts and practices is the whitehouse.gov website. Rather than being a single large website, whitehouse.gov includes a collection of 100 microsites – one for each representative. This was achieved through the use of Drupal’s installation profiles – a key feature of the platform.
“Installation profiles are scripts that run once when a new Drupal website is initially installed by running the install.php script. A standard installation profile is included with the Drupal core software, and additional installation profiles are available that pre-configure Drupal for various specialized purposes.”
Other mature software platforms, like Linux, have a variety of distributions and Drupal makes no exception.
“Distributions are full copies of Drupal that include a full version of Drupal core and may also include additional software including extra themes, modules and installation profiles.”
There are currently around 200 distributions and installation profiles available for download on drupal.org.
Drupal development and collaboration within the community
Perhaps the most important strength of Drupal is the community itself. Hundreds of thousands of people cooperate and constantly produce new modules, themes, documentation, translations, installation profiles and distributions. These are known as “contrib” projects.
You can find nearly 10.000 contrib modules on drupal.org – 3800 of which are compatible with the latest stable release of Drupal Core (Drupal 7). Each of these modules leverage both the Framework and the CMS in order to extend the core functionality and provide new features.