Drupal
Drupal () is a free and open-source web content management system (CMS) written in PHP and distributed under the GNU General Public License. Drupal provides an open-source back-end framework for at least 14% of the top 10,000 websites worldwide – ranging from personal blogs to corporate, political, and government sites. Systems also use Drupal for knowledge management and for business collaboration. , the Drupal community comprised more than 1.39 million members, including 124,000 users actively contributing, resulting in more than 48,300 free modules that extend and customize Drupal functionality, over 3,000 free themes that change the look and feel  of Drupal, and at least 1,400 free distributions that allow users to quickly and easily set up a complex, use-specific Drupal in fewer steps. 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 serve as a simple website, a single- or multi-user blog, an Internet forum, or a community website providing for user-generated content. Drupal also describes itself as a Web application framework. When compared with  notable frameworks, Drupal meets most of the generally accepted feature requirements for such web frameworks. Although Drupal offers a sophisticated API for developers, basic Web-site installation and administration of the framework require no programming skills. Drupal runs on any computing platform that supports both a web server capable of running PHP and a database to store content and configuration. History. Originally written by Dries Buytaert as a message board, Drupal became an open source project in 2001. The name "Drupal" represents an English rendering of the Dutch word "druppel", which means "drop" (as in a water droplet). The name  came 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. Interest in Drupal got a significant boost in 2003 when it helped build "DeanSpace" for Howard Dean, one of the candidates in the U.S. Democratic Party's primary campaign for the 2004 U.S. presidential election. DeanSpace used open-source sharing of Drupal to support a decentralized network of approximately 50 disparate, unofficial pro-Dean websites that allowed users to  communicate directly with one another as well as with the campaign. After Dean ended his campaign, members of his Web team continued to pursue their interest in developing a Web platform that could aid political activism by launching CivicSpace Labs in July 2004, "...the first company with full-time employees that was developing and distributing Drupal technology." Other companies began to also specialize in Drupal development. By 2013 the Drupal website listed hundreds of vendors that offered Drupal-related services. Drupal 6 was released on February 13, 2008, on March 5, 2009, Buytaert announced a code freeze for Drupal 7  for September 1, 2009. Drupal 7 was released on January 5, 2011, with release parties in several countries. After that, maintenance on Drupal 5 stopped, with only Drupal 7 and Drupal 6 maintained. Drupal 7's end-of-life was scheduled for November 2021, but given the impact of COVID-19, and the continuing wide usage, the end of life has been pushed back until November 1, 2023, to be reviewed annually. On October 7, 2015, Drupal 8 first release candidate (rc1) was announced. Drupal 8 includes new features and improvements for both users and developers, including: a revamped user interface ; WYSIWYG and in-place editing; improved mobile support; added and improved key contributed modules including Views, Date, and Entity Reference; introduced a new object-oriented backend leveraging Symfony components; revamped configuration management; and improved multilingual support. Drupal 8 rc1 is the collective work of over 3,200 core contributors. Drupal 8.0.0 was released on November 19, 2015. Subsequent major and minor releases which bring numerous improvements and bug fixes (including CKEditor WYSIWYG enhancements, added APIs, an improved help page) can be found on the Releases page. Drupal 8 reached end-of-life on November 17, 2021. Drupal 9 initial release 9.0.0  was on June 3, 2020. Drupal 10's initial release schedule is in June 2022. Core. In the Drupal community, "core" refers to the collaboratively built codebase that can be extended through contributory modules and – for versions prior to Drupal 8 – is kept outside of the "sites" folder of a Drupal installation. (Starting with version 8, core is kept in its own 'core' sub-directory.) Drupal core is the stock element of Drupal. Common Drupal-specific libraries, as well as the bootstrap process, are defined as Drupal core; all other functionality is defined as Drupal modules including the system module  itself. In a Drupal website's default configuration, authors can contribute content as either registered or anonymous users (at the discretion of the administrator). This content is accessible to web visitors through a variety of selectable criteria. As of Drupal 8, Drupal has adopted some Symfony libraries into Drupal core. Core modules also includes a hierarchical taxonomy system, which lets developers categorize content or tagged with key words for easier access. Drupal maintains a detailed changelog of core feature updates by version. Core modules. Drupal core includes modules that can be enabled by the administrator to extend the functionality of  the core website. The core Drupal distribution provides a number of features, including: Core themes. Drupal 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. Localization. , Drupal had been made available in 100 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. Auto-update notification . Drupal can automatically notify the administrator about new versions of modules, themes, or the Drupal core. It's important to update quickly after security updates are released. Before updating it is highly recommended to take backup of core, modules, theme, files and database. If there is any error shown after update or if the new update is not compatible with a module, then it can be quickly replaced by backup. There are several backup modules available in Drupal. On 15 October 2014, an SQL injection vulnerability was announced and update released. Two weeks later the Drupal security team released an  advisory explaining that everyone should act under the assumption that any site not updated within 7 hours of the announcement were compromised by automated attacks. Thus, it can be extremely important to apply these updates quickly and usage of a tool like drush to make this process easier is highly recommended. Database abstraction. 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  9 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 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. Windows development. With Drupal 9'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. Accessibility. Since  the release of Drupal 7, Web accessibility has been constantly improving in the Drupal community. Drupal is a good framework for building sites accessible to people with disabilities, because many of the best practices have been incorporated into Drupal Core. Drupal 8 saw many improvements from the Authoring Tool Accessibility Guidelines (ATAG) 2.0 guidelines which support both an accessible authoring environment as well as support for authors to produce more accessible content. The accessibility team is carrying on the work of identifying and resolving accessibility barriers and raising awareness within the community. Drupal 8 has good semantic support for rich  web applications through WAI-ARIA. There have been many improvements to both the visitor and administrator sides of Drupal, especially: The community also added an accessibility gate for core issues in Drupal 8. 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 site developers do not change core files. Modules. 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, integrating with BPM portals, and more. the Drupal website lists more than 44,000 free modules. Some of the most commonly used contributed modules include: Themes. , there are more than 2,800 free community-contributed themes. 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 and future versions of Drupal 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. Distributions. 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 "brochure" site rather than a news site or online store. Architecture. Drupal is based on the Presentation Abstraction Control architecture, or PAC. The menu system acts as the Controller. It accepts input via a single source (HTTP GET and POST), routes requests to the appropriate helper functions, pulls data out of the Abstraction (nodes and, from Drupal 5 onwards, forms), and then pushes it through a filter to get a Presentation of it (the theme system). It even has multiple, parallel PAC agents in the form of blocks that push  data out to a common canvas (page.tpl.php). Community. Drupal.org has a large community of users and developers who provide active community support by coming up with new updates to help improve the functionality of Drupal. more than 105,400 users are actively contributing. The semiannual DrupalCon conference alternates between North America, Europe and Asia. Attendance at DrupalCon grew from 500 at Szeged in August 2008, to over 3,700 people at Austin, Texas in June, 2014. Smaller events, known as "Drupal Camps" or DrupalCamp, occur throughout the year all over the world. The annual Florida DrupalCamp brings users together for Coding for  a Cause that benefits a local nonprofit organization, as does the annual GLADCamp (Greater Los Angeles Drupal Camp) event, Coders with a Cause. The Drupal community also organizes professional and semi-professional gatherings called meetups at a large number of venues around the world. There are over 30 national communities around drupal.org offering language-specific support. Notable Drupal users include NBC, Taboola, Patch, and We the People. Security. Drupal's policy is to announce the nature of each security vulnerability once the fix is released. Administrators of Drupal sites can be 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 mid-October 2014, Drupal issued a "highly critical" security advisory regarding an SQL injection bug in Drupal 7, also known as Drupalgeddon. Downloading and installing an upgrade to Drupal 7.32 fixes the vulnerability, but does not remove any backdoor installed by hackers if the site has already been compromised. Attacks began soon after the vulnerability was announced. According to the  Drupal security team, where a site was not patched within hours of the announcement, it should be considered compromised and taken offline by being replaced with a static HTML page while the administrator of its server must be told that other sites on the same server may also have been compromised. To solve the problem, the site must be restored using backups from before October 15, be patched and manually updated, and anything merged from the site must be audited. In late March 2018, a patch for vulnerability CVE-2018-7600, also dubbed "Drupalgeddon2", was released. The underlying bug allows remote  attackers without special roles or permissions to take complete control of Drupal 6, 7, and 8 sites. Drupal 6 reached end-of-life on February 24, 2016, and does not get official security updates (extended support is available from two paid Long Term Services Vendors). Starting early April, large scale automated attacks against vulnerable sites were observed, and on April 20, a high level of penetration of unpatched sites was reported. On 23 December 2019, Drupal patched an arbitrary file upload flaw. The file-upload flaw affects Drupal 8.8.x before 8.8.1 and 8.7.x before 8.7.11, and the vulnerability is listed  as moderately critical by Drupal.