Skip to content

Introduce major versions of LocalGov Drupal align to Drupal Core version #902

@millnut

Description

@millnut

Context

The LocalGov Drupal project maintains a Drupal quickstart project and profile that depends on specific versions of Drupal Core. As Drupal Core evolves, compatibility issues and patch differences arise that cannot be seamlessly managed through minor or patch versioning alone. Maintaining a single version stream would complicate dependency management, introduce instability during upgrades, and make it difficult to align contributed and custom module updates with their respective core compatibility.

A versioning strategy is required to align LocalGov Drupal releases with Drupal Core. Further info around patching difficult can be found here.

Decision

Major versions will be used for the LocalGov Drupal profile and project to correspond to the major versions of Drupal Core. Each major version of LocalGov Drupal will align with the equivalent major version of Drupal Core.

As implemented in #870 (comment) this will look like;

  • LocalGov Drupal (project and profile) 3.x for Drupal Core 10
  • LocalGov Drupal (project and profile) 4.x for Drupal Core 11
  • LocalGov Drupal (project and profile) 5.x for breaking changes in LocalGov as well as supporting Drupal Core 11

This approach ensures that patches, dependencies, and configuration differences can be maintained separately without cross-contamination or complex conditional logic in the codebase.

Consequences

Adopting major version alignment with Drupal Core simplifies long-term maintenance and improves clarity for contributors and adopters. It enables clean separation of compatibility layers, facilitating a smoother upgrade process when transitioning between Drupal Core versions. However, it requires additional release management effort and clear documentation to guide users in upgrading between LocalGov Drupal major versions, as breaking changes may occur between each aligned release.

Side note

As part of this I'm currently writing a page for the documentation page that explains this further along wth support timelines

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions