Drupal Release: 6.0
Tag Name: 6.0
Release Date: 2/13/2008
DrupalHighly 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 6.0: Major Overhaul with Enhanced Performance and Usability
Drupal 6.0 represents a significant evolution from version 5.23, introducing substantial improvements to the core CMS platform. This release brings enhanced performance through improved caching mechanisms, better database handling, and memory management. User experience has been dramatically improved with a revamped menu system, better theming capabilities, and more intuitive administrative interfaces. Security has been strengthened with numerous fixes and better error handling. This version also introduces better multilingual support, improved OpenID integration, and significant updates to core modules like Book, Forum, and Poll. With over 25,000 code changes across 300 files, Drupal 6.0 delivers a more robust, secure, and user-friendly content management platform.
Highlight of the Release
- Complete overhaul of the menu system with improved performance and flexibility
- Enhanced caching mechanisms for better site performance
- Improved database abstraction layer with support for subqueries
- Better multilingual support and configuration options
- Revamped update notification system with security release alerts
- Enhanced OpenID integration and authentication
- Improved theming system with more granular template control
- Better memory management and error handling
Migration Guide
Preparing for Migration to Drupal 6.0
Before You Begin
-
Check System Requirements
- PHP 4.3.5 or higher (PHP 5.2 recommended)
- MySQL 4.1.1 or higher (MySQL 5.0 recommended)
- Sufficient memory allocation (at least 16MB, 32MB recommended)
-
Backup Your Site
- Create a complete backup of your database
- Back up all files, especially custom themes and modules
- Document any custom modifications to core files
Migration Process
-
Module Compatibility
- Check if your contributed modules have Drupal 6 versions
- Disable modules that don't have Drupal 6 versions before upgrading
- Note that some Drupal 5 modules may have been integrated into Drupal 6 core
-
Theme Compatibility
- Drupal 6 introduces significant changes to the theming system
- Custom themes will need to be updated for compatibility
- Review template files and theme functions for necessary changes
-
Database Changes
- The menu system has been completely redesigned, affecting database structure
- Node access system has been improved, requiring a rebuild after upgrade
- Book module data structure has changed
-
Performing the Upgrade
- Place the new Drupal 6 files in your web directory
- Run the update script (update.php) as an administrator
- Rebuild permissions and other caches after upgrade
-
Post-Migration Tasks
- Check for any broken menu links or navigation issues
- Review user permissions as some have changed in core modules
- Test all site functionality, especially custom features
- Rebuild the search index
Known Migration Issues
- Menu System: The complete overhaul of the menu system may require manual adjustments to custom menu items
- Block Regions: Check that blocks are assigned to valid regions in your theme
- Node Types: URLs for node types now use a path model based on menu paths, which may affect custom code
- Language Settings: Review multilingual settings as the handling of languages has changed
For Developers
- Review code that interacts with the menu system, as the API has changed significantly
- Update any custom database queries that might be affected by the new database abstraction layer
- Check for uses of deprecated functions and update accordingly
Upgrade Recommendations
Who Should Upgrade
- All Drupal 5.x users should plan to upgrade to Drupal 6.0 to benefit from security improvements, performance enhancements, and new features.
- Sites with heavy customization should test thoroughly in a staging environment before upgrading production sites.
- Sites using many contributed modules should verify Drupal 6 compatibility for all essential modules before upgrading.
Upgrade Priority
- High priority for sites concerned about security and performance.
- Medium priority for sites that rely heavily on contributed modules that may not yet be available for Drupal 6.
- Low priority for sites with extensive custom code that would require significant refactoring.
Upgrade Path
- Direct upgrade from Drupal 5.x to Drupal 6.0 is supported and recommended.
- Sites running Drupal 4.7 or earlier must first upgrade to Drupal 5.x before upgrading to Drupal 6.0.
Timing Considerations
- Plan for adequate testing time, especially for complex sites.
- Schedule the upgrade during a low-traffic period.
- Allow time for post-upgrade adjustments to themes and custom functionality.
Technical Preparation
- Ensure your hosting environment meets the new system requirements (PHP 4.3.5+, MySQL 4.1.1+).
- Increase PHP memory limit to at least 32MB before upgrading.
- Create comprehensive backups of your database and files.
- Review the detailed migration guide for specific steps and potential issues.
Post-Upgrade Actions
- Rebuild permissions and other caches.
- Test all site functionality thoroughly.
- Monitor performance and adjust caching settings as needed.
- Update your custom themes to take advantage of new theming capabilities.
This upgrade represents a significant advancement in the Drupal platform with substantial improvements to core functionality. While the upgrade process requires careful planning and testing, the benefits in terms of security, performance, and new features make this a worthwhile investment for most Drupal sites.
Bug Fixes
Menu and Navigation Issues
- Fixed issues with menu item parenting when moving items
- Resolved problems with dead menu items not disappearing on upgrade
- Fixed menu title arguments not being properly stored when empty
- Corrected issues with menu items having nonexistent parents
- Fixed primary and secondary links that were broken on upgrade
Form Processing and AJAX
- Fixed poll AHAH problem with caching
- Corrected issues with form submission buttons in Internet Explorer
- Fixed problems with disabled form fields being hidden incorrectly
- Resolved issues with AHAH events being triggered by text input form key press
Database and Query Handling
- Fixed incorrect use of %s for table name escaping
- Implemented better security checks in database queries
- Restored support for queries without WHERE clause in db_rewrite_sql()
- Fixed precision and scale arguments order in SQL generation
- Corrected duplicate entries in search index due to database collation issues
Caching and Performance
- Fixed issues with cached forms affecting all subsequent forms on the page
- Resolved problems with block caching properties not being initialized properly
- Fixed in-memory reset clearing in locale() to help interaction with simpletests
Theming and Display
- Fixed issues with themes using their sub-theme's templates when not intended
- Corrected problems with sticky table headers in various browsers
- Fixed display issues with taxonomy term descriptions
- Resolved RTL issues with list items
User Management
- Fixed collision between global user object and user parameter in block_user()
- Corrected session handling for externally authenticated users
- Fixed role ordering and management issues
Content Management
- Fixed node ID not being set in programmatic node creation
- Resolved issues with teaser handling and display
- Fixed forum node and comment counting with term revisioning
- Corrected blog page display when user/site had no blog posts
New Features
Menu System Overhaul
The menu system has been completely redesigned for better performance and flexibility. Menu items are now properly cached, and the system supports more complex hierarchies and better handles translations. The new implementation also provides better security by properly escaping user-provided data in menu titles.
Enhanced Caching Mechanisms
Drupal 6.0 introduces significant improvements to the caching system, including better handling of CSS and JS files with cache-busting query strings that change on upgrades. The page cache system has been optimized to only save cache when output buffering was actually started at the beginning of the request.
Improved Database Layer
The database abstraction layer now supports subqueries, providing more powerful query capabilities. MySQL requirements have been elevated to version 4.1.1 for better performance and security. Several database-related functions have been improved, including drupal_write_record() which now properly returns FALSE on query failure.
Better Multilingual Support
Language handling has been significantly improved with better locale caching, proper handling of disabled languages, and enhanced RTL (right-to-left) support. The HTML source now includes language direction information for better accessibility even without CSS.
Update Notification System
The update module now provides more comprehensive information about available updates, including security releases and revoked/unsupported releases. The interface has been made more accessible and provides clearer information about update requirements.
OpenID Integration
OpenID support has been enhanced with fixes for OpenID 2.0 compliance issues and improved security in the authentication process.
Sticky Table Headers
A new JavaScript implementation for sticky table headers has been added, making administrative tables more usable when scrolling through large datasets.
Security Updates
User Input Handling
- Fixed user-provided data in menu titles to use
check_plain()instead oft()for proper escaping - Improved validation for poll forms to prevent potential security issues
- Enhanced security checks in database queries with better parameter handling
Authentication and Access Control
- Implemented proper security fixes for OpenID authentication, addressing incorrect claimed_id returned for OpenID 2.0
- Fixed permission issues in book, blog, blogapi, forum, and locale modules
- Improved access control for theme settings page, limiting access to administrators only
- Fixed Blog API to prevent users from posting content types they don't have permission to create
Error Handling and Reporting
- Added support for PHP 5.2's 'recoverable fatal errors' to improve error handling
- Improved display of PHP error messages instead of generic 'HTTP error 200' messages
- Enhanced documentation for
session_save_session()to promote better security practices
Update System Security
- Enhanced update module to inform users when their current release becomes revoked or unsupported
- Improved handling of security releases from higher branches to ensure proper notification
- Better caching and processing of update information to provide timely security alerts
Database Security
- Elevated MySQL requirements to 4.1.1 for better security features
- Fixed potential MySQL import errors that could lead to broken anonymous user accounts
- Improved handling of database errors in user_save() to prevent data corruption
Performance Improvements
Enhanced Caching System
The caching system has been significantly improved in Drupal 6.0. CSS and JS files now include a short query string that changes on upgrades, ensuring browser caches are properly refreshed when core, module, or theme code is updated. The page cache system has been optimized to only save cache when necessary, reducing unnecessary processing.
Database Query Optimization
Several database queries have been optimized throughout the codebase. Duplicate queries have been removed from functions like menu_enable(), and the database abstraction layer now supports subqueries, allowing for more efficient complex queries. Index optimizations have been implemented to improve query performance.
Memory Management
Memory management has been improved throughout Drupal 6.0. The update module now caches more project data to reduce the burden on Drupal when generating admin pages. The system also better informs users about PHP memory requirements and potential issues, helping to prevent white screen of death (WSOD) scenarios.
JavaScript Performance
The tableheader.js implementation has been optimized for better performance in all browsers, particularly addressing freezing issues in Internet Explorer 7. The sticky table headers functionality has been refined to target only Drupal output tables, preventing it from affecting random tables in other site content.
Menu System Efficiency
The menu system has been completely redesigned for better performance. Menu items are now properly cached and processed more efficiently. The pager has been removed from the menu admin page for big menus to improve performance (for large menus, a contributed module is now recommended).
Impact Summary
Drupal 6.0 represents a major evolution of the platform with substantial improvements across all aspects of the CMS. The complete overhaul of the menu system provides better performance and flexibility, while enhanced caching mechanisms significantly improve site speed and responsiveness. Security has been strengthened through numerous fixes and better input handling, making sites more resistant to common vulnerabilities.
For administrators, the improved user interface makes site management more intuitive, with better organization of administrative tasks and more informative status reporting. Developers benefit from a more robust API, better database abstraction, and improved theming capabilities that allow for more sophisticated customizations with less code.
Content editors will appreciate the enhanced content management tools, including better handling of multilingual content and improved comment management. End users will notice faster page loads, a more consistent interface, and better accessibility features.
The migration from Drupal 5.x to 6.0 requires careful planning due to the extensive changes, particularly to the menu system and theme layer. However, the comprehensive improvements in performance, security, and usability make this upgrade highly beneficial for most sites.
This release establishes a stronger foundation for Drupal's future development, with better architecture that enables more complex sites while maintaining performance. The 25,072 code changes across 300 files demonstrate the substantial nature of this update and its importance in Drupal's evolution as a leading content management platform.
Statistics:
User Affected:
- Enhanced administrative interface with improved usability for menu management, theme settings, and user role management
- Better performance monitoring and system status reporting
- Improved update notification system with security release alerts
- More robust caching mechanisms for better site performance
- Enhanced multilingual support and configuration options
