Home

>

Tools

>

Drupal

>

Releases

>

8.0-alpha10

Drupal Release: 8.0-alpha10

Pre Release

Tag Name: 8.0-alpha10

Release Date: 3/18/2014

Drupal LogoDrupal

Highly flexible, open-source content management system known for complex, scalable web applications. Preferred by government, educational, and large enterprise websites requiring advanced customization and security features. Robust module ecosystem.

TL;DR

Drupal 8.0-alpha10 represents a significant milestone in Drupal's evolution, marking the transition from Drupal 7 to a modern, object-oriented architecture. This release introduces numerous API improvements, removes deprecated functions, enhances performance through caching mechanisms, and modernizes the theming layer with Twig templates. Major changes include the removal of global variables, improved plugin systems, enhanced entity handling, and better configuration management. This release is primarily targeted at developers preparing for the full Drupal 8 release, as it contains breaking changes that require code updates.

Highlight of the Release

    • PHP requirement increased to 5.4.2
    • Conversion of many theme functions to Twig templates
    • Removal of deprecated functions and global variables
    • Enhanced entity API with improved field handling
    • New plugin system architecture
    • Improved configuration management
    • Node render caching for better performance
    • Conversion of site elements (name, slogan, logo) into blocks
    • Responsive Image module (renamed from Picture)

Migration Guide

Updating to Drupal 8.0-alpha10

PHP Requirements

  • Drupal 8 now requires PHP 5.4.2 or higher

API Changes

Removed Functions

The following deprecated functions have been removed:

  • drupal_set_title() and drupal_get_title()
  • menu_get_item() and all implementations of hook_menu()
  • drupal_valid_number_step()
  • drupal_parse_info_file()
  • drupal_strip_dangerous_protocols()
  • drupal_explode_tags() and drupal_implode_tags()
  • drupal_language_initialize()
  • drupal_override_server_variables()
Global Variables

The following global variables have been removed:

  • $user (use dependency injection with the current_user service instead)
  • $databases (partially removed, use the database service instead)
Class and Method Changes
  • Drupal\Component\Utility\Url renamed to UrlHelper
  • Drupal\Component\Utility\MapArray removed
  • Database\Query\Merge::key() renamed to keys() (with BC alias)
  • ConfigField Item and List classes removed
  • Config class split into StorableConfigBase and ConfigBase
Constants
  • CSS_SKIN renamed to CSS_THEME
  • COMMENT_HIDDEN, COMMENT_CLOSED, and COMMENT_OPEN moved to comment field interface

Theme System Changes

  • Many theme functions converted to Twig templates
  • #collapsed renamed to #open in #type details
  • Twig 'without' filter replaces 'show'/'hide' functions
  • Site elements (name, slogan, logo) converted to blocks

Module Changes

  • "Picture" module renamed to "Responsive Image" module
  • Modules and installation profiles now only require .info.yml files

Plugin System

  • Plugin managers can now opt in to cache clear during module install
  • Default UUID key added in ConfigEntityType
  • Plugin derivatives now work with objects returned from Annotations

Field API

  • Field formatters now support weights like widgets
  • Added administrative description for comment fields
  • Field instances now refer to fields by name rather than UUID

Configuration

  • Config class split into StorableConfigBase and ConfigBase
  • Services used instead of event subscribers for config module overrides
  • UUID key name enforced in configuration entities

Library System

  • #attached library array values replaced with provider-namespaced strings
  • External libraries moved from core modules into core.libraries.yml

Testing

  • PHPUnit configured to work consistently across environments
  • run-tests.sh no longer depends on existing/installed parent site

Upgrade Recommendations

This alpha release represents a significant step forward in Drupal 8's development but is not recommended for production sites. It contains numerous breaking changes and API modifications that require substantial code updates.

For Developers and Module Maintainers

If you are a developer or module maintainer, we strongly recommend setting up a development environment to begin testing and updating your custom code and modules. This alpha release provides an excellent opportunity to:

  1. Familiarize yourself with the new Drupal 8 architecture
  2. Update custom modules to use the new APIs
  3. Convert theme functions to Twig templates
  4. Test functionality with the new plugin system

For Site Owners

Production sites should remain on Drupal 7 until Drupal 8 reaches at least a beta or RC status. The alpha releases are primarily intended for:

  1. Development and testing purposes
  2. Contributing to Drupal 8 development
  3. Planning future migration strategies

Upgrade Path

There is no direct upgrade path from Drupal 7 to Drupal 8.0-alpha10. When Drupal 8 is officially released, migration modules will be available to assist with the upgrade process.

Testing Environment Recommendation

For those wanting to explore this release:

  • Set up a separate development environment
  • Do not use production data
  • Be prepared for potential database schema changes in future releases
  • Report any bugs or issues to the Drupal issue queue

Bug Fixes

Critical Bug Fixes

  • Fixed PHP 5.4 compatibility issues that were breaking HEAD
  • Fixed broken JavaScript file validation
  • Fixed Views UI Save and Cancel buttons breaking existing locks by other users
  • Fixed inability to save text filter config using PostgreSQL when Comment is enabled
  • Fixed 'back to site' button not working when the user originates from the homepage
  • Fixed 'back to site' button not working on sites configured for 'dirty' URLs

UI and Form Fixes

  • Fixed undefined index "rows_order" in theme_field_ui_table()
  • Fixed shortcuts being added with no link title (making them unusable)
  • Fixed incorrect 'Comment forms' link pointing to admin/content/comment
  • Fixed missing page title on admin/modules/uninstall
  • Fixed primary button's border not being visible on focus
  • Fixed 'Add vocabulary' page not displaying correct page title
  • Fixed language filter in advanced search not working
  • Fixed trimming of long usernames resulting in incorrect RDF

Theme and Display Fixes

  • Fixed breadcrumbs pushing the sidebar down on node edit pages
  • Fixed "Skip to main content" link not being centered
  • Fixed contextual toolbar toggle not appearing once the client-side cache is filled
  • Fixed duplicate case 'name' in comment_tokens()
  • Fixed missing alt attribute from [picture] tag

Other Bug Fixes

  • Fixed router table not being cleared when modules are uninstalled
  • Fixed comment stubbing
  • Fixed RDF namespace collision handling
  • Fixed intermittent fails in Drupal\views_ui\Tests\DisplayTest
  • Fixed random test failures in ConfigTranslationUiTest and ToolbarAdminMenuTest
  • Fixed "Re-run tests" form action
  • Fixed Aggregator not showing up in admin/config

New Features

Enhanced Entity API

  • Added per-bundle overrides of field definitions
  • Introduced non-configurable field types for entity created, changed and timestamp fields
  • Expanded TermInterface to provide more methods
  • Added cache tags for proper entity cache invalidation

Improved Plugin System

  • Added support for plugins to provide functionality on behalf of optional modules
  • Converted ViewsHandlerManager and InPlaceEditorManager to DefaultPluginManager
  • Added default UUID key in ConfigEntityType
  • Improved plugin derivatives to work with objects returned from Annotations

Configuration Management Enhancements

  • Split Config class into StorableConfigBase and ConfigBase
  • Added services for config module overrides instead of event subscribers
  • Enforced UUID key name in configuration entities
  • Provided a ConfigEntityNormalizer

Theming Improvements

  • Converted many theme functions to Twig templates including:
    • theme_select()
    • theme_container()
    • theme_form()
    • theme_fieldset()
    • theme_system_themes_page()
    • theme_admin_block()
    • theme_admin_page()
  • Added 'without' filter replacing 'show'/'hide' functions
  • Improved theme debugging with twig_debug

Block System Enhancements

  • Converted site elements (site name, slogan, site logo) into blocks
  • Improved block rehashing process

Field API Improvements

  • Added support for weights in formatters (similar to widgets)
  • Improved field display modes and form displays
  • Added administrative description for comment fields

Other New Features

  • Renamed Picture module to Responsive Image module
  • Added placeholder support to the @Translation annotation
  • Pre-loading of non-admin routes for better performance
  • Improved node access query optimization

Security Updates

Security Improvements

  • Ported SA-CORE-2013-003 security fix to Drupal 8
  • Added TempStore methods getIfOwner(), setIfOwner() and deleteIfOwner() for improved security
  • Improved XSS protection by modernizing argument passing in Xss::split()
  • Replaced user_authenticate with a more secure UserAuth service

While no critical security vulnerabilities were addressed in this release, these improvements enhance the overall security posture of Drupal 8.

Performance Improvements

Caching Enhancements

  • Enabled node render caching for improved performance
  • Improved cache tag handling for better cache invalidation
  • Fixed cache tags set by #pre_render callbacks that were being lost in page cache
  • Removed SchemaCache and CacheArray for better performance
  • Removed ckeditor.languages cache bin

Database Optimizations

  • Optimized node access queries for better performance
  • Pre-loading of non-admin routes for faster page loads
  • Improved YAML parsing speed to accelerate tests that load/save many config files

Code Efficiency Improvements

  • Simplified execution logic in TestBase::run()
  • Removed unnecessary block save in _block_rehash
  • Improved Vocabulary::postSave to avoid loading all field entities
  • Removed duplicate initialization of maintenance theme registry

Testing Performance

  • Improved PHPUnit configuration to work consistently across environments
  • Removed run-tests.sh dependency on existing/installed parent site
  • Fixed settings from test runner leaking into all tests

Impact Summary

Drupal 8.0-alpha10 represents a transformative milestone in Drupal's evolution, marking a significant architectural shift from Drupal 7's procedural codebase to a modern, object-oriented framework. This release introduces fundamental changes that impact nearly every aspect of Drupal development.

The most substantial impact is on developers and module maintainers who will need to adapt to numerous API changes, including the removal of many deprecated functions like drupal_set_title() and menu_get_item(), the elimination of global variables like $user, and the conversion of theme functions to Twig templates. The new plugin system architecture, enhanced entity API, and improved configuration management system require significant code updates but provide much more powerful and flexible foundations.

For site builders, the changes to the administrative interface, including improved UI for managing display modes and form displays, will require some adjustment but ultimately provide better tools. The conversion of site elements (name, slogan, logo) into blocks offers greater flexibility in site design.

Performance improvements are a key focus of this release, with node render caching, optimized node access queries, and improved cache tag handling providing better scalability. Security enhancements include porting of previous security fixes and improved XSS protection.

While this alpha release is not suitable for production sites, it provides a crucial opportunity for the Drupal community to test, adapt, and prepare for the significant changes coming in Drupal 8. The architectural improvements lay the groundwork for a more maintainable, scalable, and developer-friendly CMS.

Statistics:

File Changed300
Line Additions8,032
Line Deletions811
Line Changes8,843
Total Commits250

User Affected:

  • Need to update code that uses deprecated functions like drupal_set_title(), drupal_get_title(), menu_get_item()
  • Must adapt to the removal of global variables like $user and $databases
  • Required to update theme implementations to use Twig templates instead of PHP templates
  • Need to learn and implement the new plugin system architecture
  • Must update entity handling code to use the new API methods

Contributors:

alexpottwebchickdbuytaertjhodgdon-drp