(Up to date as of 2014-05-13)
Drupal.org naturally runs on Drupal. Drupal 7 to be exact.
We are using the following Drupal core modules:
- Aggregator - Aggregates syndicated content (RSS, RDF, and Atom feeds). Used to power Planet Drupal.
- Block - Controls the visual building blocks a page is constructed with.
- Book - Allows users to structure site pages in a hierarchy or outline. Used to create the Documentation section.
- Comment - Allows users to comment on and discuss published content. Used in the forums and issue queue.
- Contact - Used for the Drupal.org contact form and users' personal contact forms.
- Database logging - Logs and records system events to the database.
- Field - Field API to add fields to entities like nodes and users.
- Field SQL storage - Stores field data in an SQL database.
- Field UI - User interface for the Field API.
- File - Defines a file field type.
- Filter - Filters content in preparation for display.
- Forum - Provides the Drupal.org forums.
- Image - Provides image manipulation tools.
- List - Defines list field types. Use with Options to create selection lists.
- Menu - Standard Menu administration module.
- Node - Allows content to be submitted to the site and displayed on pages.
- Number - Defines numeric field types.
- Options - Defines selection, check box and radio button widgets for text and numeric fields.
- Path - Provides friendly URLs like, for example, http://drupal.org/handbook/modules/path.
- Profile - Powers our user profile pages and user listing pages.
- RESTful Web Services - Exposes Drupal resources (e.g. entities) as RESTful web services.
- Search - Basic search framework that Apache Solr hooks into.
- Syslog - Logs and records system events to syslog.
- System - Handles general site configuration for administrators.
- Taxonomy - Taxonomy is used in a number of places around the site, including the forum, documentation, downloads, and the issue queue.
- Text - Defines simple text field types.
- Tracker - Enables tracking of recent content for users.
- Update Manager - Checks for available updates, and can securely install or update modules and themes via a web interface.
- User - Manages the user registration and login system.
We also use the following contributed modules (more or less the order at /admin/modules to facilitate easier updating of this list, the canonical list is Drupal.org’s make file):
Fasttoggle - Enables fast toggling of binary settings such as the state of the node (published/unpublished).
Chaos Tools Suite
Chaos tool suite - This is a requirement for Views Content Cache and our custom Drupal.org modules.
Flot - Used to display graphs on the project pages and metrics page. Required by Drupal.org metrics and Views Sparkline.
BUEditor - Plain textarea editor used on various submit forms.
Features - Used for various custom Drupal.org features, such as Book listings, Case studies, Changenotices, Marketplace, Search API views.
- Dereference list
- Entity Reference
- Extended File Field
- Field collection
- Field group
- Machine name
- Node Reference
- User Reference
Flag - Provides "follow" flags for issue pages.
Geolocation and Geolocation HTML5 Provides a geolocation field, a widget and formater.
Local image input filter - Restricts files referenced by pages to those of files attached to them, replacing other image by the "error" image for security reasons.
- Bakery Single Sign-On System - Allows your cookie from Drupal.org to automatically log you in to groups.drupal.org, api.drupal.org, etc. when you visit them.
- Beanstalkd - Provides integration with a beanstalkd queue which is used for managing jobs related to the Git integration (e.g. creating new Git repositories when new projects are created, parsing Git commit information when Git commits are pushed, etc).
- Code Filter - Provides formatting to code snippets in documentation pages, forum posts, issue queues, etc.
- Conflict - Fieldwise conflict prevention and resolution.
- D3 Sparkline - Creates sparklines with D3 library.
- Diff - Provide comparisons between node revisions such as this.
- Entity API - Enables modules to work with any entity type and to provide entities.
- Field Extra Widgets - Provides utility widgets for the Field API.
- Field formatter settings API - Provides missing alter hooks for field formatter settings and summaries.
- Flag Tracker - Allow users to track flagged pieces of content.
- DFP Small Business (Google Ad Manager) - Handles advertising listings on pages such as the home page and documentation pages.
- Libraries - Allows version-dependent and shared usage of external libraries.
- Multiple E-mail Addresses - Allows users to associate multiple email addresses with their account.
- Nodechanges - Records node changes into a comment diff field.
- Paranoia - Locks down various administrative settings.
- Pathauto - Provides a mechanism for modules to automatically generate aliases for the content they manage.
- Redirect - Allows users to redirect from old URLs to new URLs.
- Redirect 403 to User Login - Redirect anonymous users from 403 Access Denied pages to the /user/login page.
- Role activity - Activity for selected roles
- Sampler API - Used to collect, store, and display metrics.
- Security Review - Site security and configuration review module.
- SSH Key - Allows users to associate SSH public keys with their account (used to authenticate to Git).
- Token - Provides a user interface for the Token API and some missing core tokens.
- Token Formatters - Provides additional formatters for various field types.
- User restrictions, User restrictions UI - Specifies rules for restricting the data users can set for their accounts.
- Project Git Instructions - Provides the "Version control" tab on project pages.
- Project Issue File Test (PIFT) - Powers a service that informs http://qa.drupal.org/ of patches waiting to be tested and updates issues with the results.
- Project - Powers our module and theme download section. Provides project pages..
- Project Dependencies - Provides project dependency information, particularly for testbots.
- Project issue tracking - Provides Drupal.org's issue queue.
- Project package - Keeps track of what items are included in a given release. For example, provides the listing of which projects are included in packaged Drupal distributions.
- Project releases - Provides a release node type to represent releases of projects, the drupal.org packaging script, and the code to create the release history XML feeds available at updates.drupal.org.
- Project Solr - Provides integration with ApacheSolr for facet-based project browsing. Powers the project browsing pages.
- Project usage - Provides data about installed usage of projects. Powers the usage statistics pages.
- Project verify package - drupal.org specific verification helpers for the project packaging system.
Waiting queue - Enables queues with workers that wait indefinitely for jobs.
- Database search - Offers an implementation of the Search API that uses database tables for indexing content.
- Search API - Provides a generic API for modules offering search capabilites.
- Search views - Integrates the Search API with Views, enabling users to create views with searches as filters or arguments.
- Apache Solr Search Integration - A framework for searching with Solr. Powers our search and our project browsing pages.
Sub-modules: Apache Solr framework, Apache Solr search
- Apache Solr Multisite Search - Allows searching for content across multiple sites (e.g. association.drupal.org, groups.drupal.org) with Solr.
- Facet API - Provides faceted search results.
Comment Fragment - Rewrite the comment permalink to use fragment for 'Jump to' links on issue pages.
Metatag - Adds support and an API to implement meta tags.
Commit log - Display a history of commits, branches and tags, optionally filtered by a set of constraint arguments.
Version Control API - An interface to version control systems whose functionality is provided by pluggable back-end modules.
Version Control API -- Git backend, and Version Control / Project* integration.
Views - Create customized lists and queries. Used pretty much everywhere. :)
Sub-modules: Views, Views UI, Views Field View, Views Litepager.
Views Bulk Operations - Allows views to expose options for selecting multiple items and applying operations on them. Used for various custom administrative views.
Views Content Cache - Provides a views cache plugin based on content type changes.
- D3 - An API for creating visualizations from D3 libraries.
- D3 views - The D3 integration with views plugin styles.
Custom code is kept in the Drupal.org customizations project. This contains a set of modules with site-specific logic that doesn't make sense to put into the more generic contributed modules.
- Block: Pivots - Provides the "Related projects" block on project pages.
- Drupal.org - Customizations and tweaks for drupal.org
- Drupal.org Git Gateway - Provides access control for using Git on drupal.org (e.g. the Git access agreement page on user profile pages)
- Drupal.org Git/Varnish Control - Provides a Varnish-cacheable alternative to drush for getting data necessary for Drupal.org Git SSH auth.
- Drupal.org handbooks - Handbook related customizations used on Drupal.org.
- Drupal.org Honeypot - Extra sticky honeypot for special cases.
- Drupal.org metrics - Customizations for /metrics page.
- Drupal.org news - Blocks and customizations related to Drupal.org news and Planet Drupal.
- Drupal.org Order Facets - Manage order-based facets for Drupal.org.
- Drupal.org project customizations - Drupal.org project functionality related customizations
- Drupal.org search - Drupal.org search customizations
- Drupal.org Version Control API integration - Customizations for Version Control API
- Mailing lists - Mailing lists subscriptions services.
The second custom module is Drupal.org cross-site - It is used across all the sub-sites on Drupal.org. It provides header and footer navigation, as well as other customizations.
Theme and branding
The theme for Drupal.org is called Bluecheese. It has two parts. Public part is located in Drupal.org repository. Private part, contains brand elements and is located in the private internal repository in order to preserve Drupal.org's 'brand' identity.
Public version of Bluecheese is not intended and supported for download and use outside of Drupal.org. It it there only to make it easier for community members to improve Drupal.org.