The standard release of Drupal, known as Drupal Core, contains basic features common to content management systems. These include user account registration and maintenance, menu management, RSS feeds, taxonomy, page layout customization, and system administration. The Drupal core installation can be used as a simple website, a single- or multi-user blog, an Internet forum, or a community website providing for user-generated content.
As of February 2014, there are more than 30,000 free community-contributed addons, known as contributed modules, available to alter and extend Drupal's core capabilities and add new features or customize Drupal's behavior and appearance.
Also Drupal has 31,000 Developers (As of February 2014). Because of this plug-in extensibility and modular design, "The Drupal Overview" on Drupal's website describes it as a content management framework. Drupal is also described as a web application framework, as it meets the generally accepted feature requirements for such frameworks.
Although Drupal offers a sophisticated programming interface for developers, no programming skills are required for basic website installation and administration.
Drupal runs on any computing platform that supports both a web server capable of running PHP (including Apache, IIS, Lighttpd, Hiawatha, Cherokee or Nginx) and a database such as MySQL, MongoDB, MariaDB, PostgreSQL, SQLite, or Microsoft.
Originally written by Dries Buytaert as a message board, Drupal became an open source project in 2001. Drupal is an English rendering of the Dutch word "druppel", which means "drop" (as in "a water droplet"). The name was taken from the now-defunct Drop.org website, whose code slowly evolved into Drupal. Buytaert wanted to call the site "dorp" (Dutch for "village") for its community aspects, but mistyped it when checking the domain name and thought the error sounded better.
In the Drupal Community, the term "core" means anything outside of the "sites" folder in a Drupal installation. Drupal core is the stock element of Drupal. In its default configuration, a Drupal website's content can be contributed by either registered or anonymous users (at the discretion of the administrator) and is made accessible to web visitors by a variety of selectable criteria. Drupal core also includes a hierarchical taxonomy system, which allows content to be categorized or tagged with key words for easier access.
Drupal maintains a detailed changelog of core feature updates by version.
Drupal core includes optional modules that can be enabled by the administrator to extend the functionality of the core website.
Amarpreet includes core themes, which customize the "look and feel" of Drupal sites, for example, Garland and Bartik. The Color Module, introduced in Drupal core 5.0, allows administrators to change the color scheme of certain themes via a browser interface.
As of August 2013, Drupal had been made available in 110 languages and English (the default). Support is included for right-to-left languages such as Arabic, Persian, and Hebrew. Drupal localization is built on top of gettext, the GNU internationalization and localization (i18n) library.
Drupal can automatically notify the administrator about new versions of modules, themes, or the Drupal core. Such a feature can be useful for security fixes.
Prior to version 7, Drupal had functions that performed tasks related to databases, such as SQL query cleansing, multi-site table name prefixing, and generating proper SQL queries. In particular, Drupal 6 introduced an abstraction layer that allowed programmers to create SQL queries without writing SQL.
Drupal 7 extends the data abstraction layer so that a programmer no longer needs to write SQL queries as text strings. It uses PHP Data Objects to abstract the physical database. Microsoft has written a database driver for their SQL Server. Drupal 7 supports the file-based SQLite database engine, which is part of the standard PHP distribution.
Embracing Windows Developers
With Drupal 7's new database abstraction layer and ability to run on the Windows web server IIS, it is now easier for Windows developers to participate in the Drupal community. A group on Drupal.org is dedicated to Windows issues.
With the release of Drupal 7, web accessibility has been greatly improved by the Drupal community. Drupal is a good framework for building websites accessible to people with disabilities because many of the best practices have been incorporated into the program code Core. The accessibility team is carrying on the work of identifying and resolving accessibility barriers and raising awareness within the community. Drupal 7 started the adoption of WAI-ARIA support for Rich Internet Applications and this has been carried further in Drupal 8. There have been many improvements to both the visitor and administrator sides of Drupal, especially:
Extending the Core
Drupal core is modular, defining a system of hooks and callbacks, which are accessed internally via an API. This design allows third-party contributed modules and themes to extend or override Drupal's default behaviors without changing Drupal core's code.
Drupal isolates core files from contributed modules and themes. This increases flexibility and security and allows administrators to cleanly upgrade to new releases without overwriting their site's customizations. The Drupal community has the saying "Never hack core", a strong recommendation that people do not change core files.
Contributed modules offer such additional or alternate features as image galleries, custom content types and content listings, WYSIWYG editors, private messaging, third-party integration tools, and more. As of February 2014 the Drupal website lists more than 25,500 free modules.
Some of the most commonly used contributed modules include:
Contributed themes adapt or replace a Drupal site's default look and feel.
Drupal themes use standardized formats that may be generated by common third-party theme design engines. Many are written in the PHPTemplate engine or, to a lesser extent, the XTemplate engine. Some templates use hard-coded PHP. Drupal 8 will integrate the Twig templating engine.
The inclusion of the PHPTemplate and XTemplate engines in Drupal addressed user concerns about flexibility and complexity. The Drupal theming system utilizes a template engine to further separate HTML/CSS from PHP. A popular Drupal contributed module called 'Devel' provides GUI information to developers and themers about the page build.
Community-contributed themes at the Drupal website are released under a free GPL license, and most of them are demonstrated at the Drupal Theme Garden.
In the past, those wanting a fully customized installation of Drupal had to download a pre-tailored version separately from the official Drupal core. Today, however, a distribution defines a packaged version of Drupal that upon installation, provides a website or application built for a specific purpose.
The distributions offer the benefit of a new Drupal site without having to manually seek out and install third-party contributed modules or adjust configuration settings. They are collections of modules, themes, and associated configuration settings that prepare Drupal for custom operation. For example, a distribution could configure Drupal as a "brochureware" site rather than a "news" site or an "online store".
Drupal.org has a large community of users and developers, with over 1,015,000 user accounts and over 31,000 developer accounts (As of February 2014). The semiannual Drupal conference alternates between North America and Europe. Attendance at DrupalCon grew from 500 at Szeged in August 2008 to over 3,300 people at Portland, Oregon in May 2013.
Smaller events, known as "Drupal Camps" or DrupalCamp, occur throughout the year all over the world. The annual Florida DrupalCamp brings users together Coding for a Cause for the benefit of nonprofit organizations.
There are a number of active Drupal forums, mailing lists and discussion groups. Drupal also maintains several IRC channels on the Freenode network.
There are over 30 national communities around drupal.org offering language-specific support.
Drupal's policy is to announce the nature of each security vulnerability once the fix is released.
Administrators of Drupal sites are automatically notified of these new releases via the Update Status module (Drupal 6) or via the Update Manager (Drupal 7). Drupal maintains a security announcement mailing list, a history of all security advisories, a security team home page, and an RSS feed with the most recent security advisories.
In 2008, eleven security vulnerabilities were reported and fixed in the Drupal core. Security holes were also found and fixed in 64 of the 2243 user-contributed modules.