Drupal projects will use semantic versioning
Context
As the scope of our Drupal deployment has grown, so too has the number of contributed modules and projects our platform depends on. Without consistent management, these dependencies pose challenges to maintainability, which in turn may lead to bugs that degrade the quality of our Drupal services.
Semantic versioning poses a solution to this issue by linking a structured versioning scheme with the public API of a package. In addition to the inherent advantages that accompany adoption of this system, semantic versioning has also been adopted as the standard for core and contributed modules in the Drupal ecosystem.
Decision
When creating or updating a new Drupal software project, we will assign version numbers to all releases in accordance with the semantic versioning specification.
In the specific case of Drupal installation profiles, we will observe the specification as follows:
- Major version will increment with incompatible changes that require database or schema updates, or a manual upgrade process
- Minor version will increment with the addition of new modules or libraries, or new features of such, in a backwards-compatible manner
- Patch version will increment with backwards-compatible bug fixes, either to the primary platform or to component modules
Status
Consequences
Semantic versioning will allow us to better track changes to our Drupal platform. In addition, it will improve our ability to share this platform with developers external to WebTech.
Changes to the platform, whether developed internally or contributed, will require more structured and consistent development to keep track of their impact on the assignment of version numbers. The versions and changelogs of component packages will need to be examined prior to applying them as part of an update.