Drupal Release: 2.0

Tag Name: 2.0

Release Date: 3/15/2001

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 2.0: Major Overhaul with Enhanced Flexibility and Performance

Drupal 2.0 represents a significant evolution from version 1.0, introducing a completely redesigned comment/discussion engine, a new section management system, fine-grained user permissions, improved internationalization support, and numerous performance optimizations. This release transforms Drupal from a basic CMS into a more flexible, powerful platform suitable for a wider range of web applications. The extensive code refactoring and new modular architecture provide a solid foundation for future development while maintaining backward compatibility through provided database upgrade scripts.

Highlight of the Release

    • Complete redesign of the comment/discussion engine for greater flexibility
    • New section management system replacing the old category system
    • Fine-grained user permission system for delegating specific admin tasks
    • Initial locale support for internationalization
    • New user rating/karma system with Top 100 users page
    • Improved search framework for easier implementation of search capabilities
    • Enhanced theme API with merged story() function replacing abstract() and article()
    • Improved security with revised SQL queries and additional validation

Migration Guide

Required Database Updates

alter table users modify mode tinyint(1) DEFAULT '' NOT NULL;
alter table comments change sid lid int(6) DEFAULT '0' NOT NULL;
alter table comments add link varchar(16) DEFAULT '' NOT NULL;
update comments set link = 'story';

Theme Updates Required

  1. Update the comment() function: The function now only takes 2 parameters instead of 3. Remove any references to the $thread parameter.

  2. Replace abstract() and article() with story():

    function story($story_object, $reply) {
      if (!$reply) {
        // full story display code (formerly in article())
      }
      else {
        // abstract display code (formerly in abstract())
      }
    }
    
  3. Implement controls() function: All themes need to implement this function, even if it's just a dummy implementation.

  4. Fix internal links: Ensure all internal links use relative paths (e.g., index.php instead of just /) to support Drupal installations in subdirectories.

  5. Ensure translation readiness: Wrap all user-visible strings in t() functions to support the new locale system.

Module Updates

  • The submission queue has been moved to an optional module (submission.module)
  • User rating functionality has been moved to a separate module (rating.module)
  • Check for compatibility with the new permission system

Upgrade Recommendations

Who Should Upgrade

  • All Drupal 1.0 users should upgrade to benefit from the significant improvements in functionality, security, and performance.
  • Sites requiring multilingual capabilities will particularly benefit from the new locale support.
  • Sites with complex editorial workflows will benefit from the fine-grained permission system.

Upgrade Process

  1. Backup your database and files before attempting the upgrade.
  2. Run the required database updates as specified in the migration guide.
  3. Update your themes to be compatible with the new theme API.
  4. Test thoroughly after upgrading, particularly custom modules and themes.

Upgrade Difficulty

This is a major version upgrade with significant architectural changes. While upgrade scripts are provided, expect to spend time:

  • Updating custom themes to work with the new API
  • Testing and adjusting any custom modules
  • Configuring the new permission system
  • Setting up the new section management

The upgrade is recommended for all sites despite the effort involved, as version 1.0 will no longer receive updates and the improvements in 2.0 are substantial.

Bug Fixes

Comment System

  • Fixed bug with story-moderation-comments starting at 0 score instead of 1
  • Fixed the offset-by-one-day bug that affected date displays
  • Resolved issues with comment subjects not displaying correctly

Theme-related Fixes

  • Fixed bug in block placement when using a theme with 2 side bars while being logged out
  • Fixed visual glitches in various themes
  • Resolved issues with the "Editor's note" display

Database and Performance

  • Fixed MySQL bug in account.php
  • Added comment index for performance improvements
  • Fixed table bugs in various modules

User Interface

  • Fixed English terminology: renamed "administrate xxx" to "administer xxx"
  • Fixed search.php problems reported by users
  • Fixed visual quote glitch (missing stripslashes())

Configuration and Installation

  • Fixed port + directory patch for loading configuration files
  • Fixed issues when hosting Drupal in a subdirectory
  • Fixed problems with hostname.conf options

New Features

Redesigned Section Management

  • Categories have been renamed to "sections" and are now managed through admin pages
  • Sections can have customizable post, dump, and timeout thresholds
  • Users can enable/disable sections to customize their content experience

Fine-grained User Permissions

  • Administrators can now delegate specific admin tasks to trusted users
  • Example use cases include:
    • FAQ maintainers who can only edit the FAQ
    • Editorial board members who can only edit comments, diaries, and stories

User Rating System

  • New karma/mojo system for evaluating user contributions
  • Generates a "Top 100 users" page accessible at /module.php?mod=rating
  • Implemented as a separate module to allow experimentation with different algorithms

Internationalization Support

  • Initial locale support for translating the interface
  • Framework for adding more languages and translations
  • Theme improvements to ensure all text is translatable

Search Framework

  • New search architecture making it easier to implement search capabilities
  • Improved search functionality throughout the system

FAQ Module

  • New FAQ module with administration interface
  • Easier management of frequently asked questions

Timer Module

  • Added timer.inc for benchmarking purposes
  • Helps identify performance bottlenecks

Security Updates

  • Comprehensive review and revision of SQL queries to prevent injection attacks
  • Added additional validation and sanitization throughout the codebase
  • Improved error handling to prevent information disclosure
  • Enhanced user permission checking for administrative functions
  • Implemented more secure handling of user data and permissions

Performance Improvements

Database Optimizations

  • Added comment index to improve query performance
  • Optimized SQL queries throughout the system
  • Reduced redundant database checks

Code Efficiency

  • Shortened and improved code in multiple modules
  • Removed redundant checks and functions
  • Streamlined theme rendering process

Resource Management

  • Reduced watchdog retention period from two weeks to one week by default to improve admin page performance
  • Optimized theme files to reduce server load and improve page rendering
  • Improved HTML output with fewer nested tables in themes

Caching and Processing

  • Enhanced RDF backend class to support more formats efficiently
  • Improved handling of blocks and regions
  • More efficient processing of user permissions

Impact Summary

Drupal 2.0 represents a fundamental shift in the platform's architecture and capabilities. The release transforms Drupal from a basic content management system into a more flexible, modular platform capable of supporting a wider range of web applications.

The most significant impact comes from the redesigned comment/discussion engine and the new section management system, which provide much greater flexibility in content organization and community interaction. The fine-grained permission system enables more complex editorial workflows and team management, making Drupal suitable for larger organizations with diverse roles.

Performance improvements and security enhancements make the platform more robust and capable of handling higher traffic loads. The introduction of internationalization support opens Drupal to non-English speaking communities, significantly expanding its potential user base.

For developers, the more modular architecture and improved APIs make the platform more extensible, encouraging a richer ecosystem of modules and themes. The consolidation of theme functions (merging abstract() and article() into story()) demonstrates a move toward more consistent and maintainable APIs.

While the upgrade requires significant effort, particularly for sites with custom themes and modules, the architectural improvements provide a solid foundation for future development and ensure Drupal remains competitive in the rapidly evolving CMS landscape.

Statistics:

File Changed99
Line Additions3,673
Line Deletions2,900
Line Changes6,573
Total Commits136

User Affected:

  • Can now manage sections (formerly categories) through admin pages with customizable post, dump, and timeout thresholds
  • Benefit from fine-grained user permission system allowing delegation of specific admin tasks
  • Have access to improved watchdog module with configurable retention period (reduced to one week by default)
  • Can delete user accounts completely from the system
  • Need to perform required database updates for upgrading from 1.0

Contributors:

dbuytaert