Skip to main content

On This Page

Rethinking Versioning Strategy: Why Laravel Should Move to CalVer

2 min read
Share

These articles are AI-generated summaries. Please check the original sources for full details.

Laravel makes semantic versioning look bad

Author David Duymelinck critiques the current release cycle of the Laravel framework following the announcement of Laravel 12. He observes that Livewire can announce releases compatible with unreleased major versions, questioning the predictability of dependency management.

Why This Matters

Semantic versioning is intended to make dependency management predictable by using major numbers only for backward incompatible changes. When mature projects like Laravel use arbitrary major bumps for optional features like attributes, it risks turning versioning into a marketing tool rather than a technical signal, potentially confusing developers about actual breaking changes.

Key Insights

  • Laravel 12 features optional attributes, which author David Duymelinck argues may not warrant a major version update under strict SemVer rules.
  • Despite raising the minimum PHP version from 8.2 to 8.3, Laravel 12 utilizes Symfony polyfills for features like json_validate, negating a strict technical requirement for a major bump.
  • Semantic versioning (major.minor.patch) is designed for predictability, yet mature projects often reach a stage where date-based versioning provides more transparency.
  • Calendar versioning (CalVer) allows developers to see exactly how old an application’s version is, providing an explicit metric for technical debt.
  • The transition from arbitrary numbering to date-based versioning is recommended once a project matures beyond its initial high-instability phase.

Practical Applications

  • Mature Project Versioning: Transitioning to CalVer (Year.Month.Day) for established frameworks to make the age of the codebase explicit and limit breaking changes to a yearly schedule.
  • Dependency Strategy: Avoid the pitfall of announcing compatibility for unreleased major versions, which undermines the predictability that Semantic Versioning is meant to provide.

References:

Continue reading

Next article

Transform VS Code Copilot into an Autonomous AI Agent: A Technical Setup Guide

Related Content