Versioning Policy

This page outlines our approach to versioning, detailing how we increment versions, handle pre-release designations, automate versioning, and structure our release cycle. It also covers our support policy, upgrade recommendations, and how we communicate changes to ensure a smooth user experience.


Version Numbering Scheme


We follow a modified semantic versioning scheme in the format X.Y.Z[-designation], where:

Version TypeIncrement FrequencyCharacteristicsExample
X (Major Version)Evaluated every two development cycles but only released if there are significant changes.🚨 May introduce breaking changes.
πŸ”Ή Requires explicit upgrade steps.
1.0.0 β†’ 2.0.0
Y (Minor Version)Every development cycleβœ… Maintains backward compatibility.
✨ Introduces new features and functionality.
1.0.0 β†’ 1.1.0
Z (Patch Version)As needed, outside the regular cycleπŸ”§ For hotfixes, security patches, and critical updates.
βœ… Maintains backward compatibility.
1.1.0 β†’ 1.1.1

Breaking Change Scenario

When a breaking change is necessary:

  • πŸ“… It will be scheduled for a major version release.
  • πŸ“£ It will be documented in advance with migration guidance.
  • ⚠️ Deprecated features will emit warnings before removal.

Pre-Release Designations


We use the following pre-release designations when applicable:

DesignationDescriptionCharacteristicsExample
-alpha.NEarly development builds.⚠️ Potentially unstable, not for production use.
πŸ”„ May contain incomplete features.
1.1.0-alpha.1
-beta.NFeature-complete builds undergoing testing.βœ… Suitable for testing environments.
πŸ” Feature-frozen, focusing on stability and bug fixes.
1.1.0-beta.1
-rc.NRelease Candidates.πŸš€ Expected to be stable and production-ready.
πŸ”§ Only critical bug fixes applied before the final release.
1.1.0-rc.1

Examples


Potential Releases

  • 1.0.0 β†’ Initial stable release
  • 1.0.1 β†’ Patch with bug fixes
  • 1.1.0-alpha.1 β†’ Alpha for next minor
  • 1.1.0-beta.1 β†’ Beta for next minor
  • 1.1.0-rc.1 β†’ Release candidate
  • 1.1.0 β†’ Stable minor release
  • 1.2.0 β†’ Next minor release
  • 2.0.0 β†’ New major version


Versioning Automation


To ensure an automated and predictable versioning process, we follow Semantic Versioning principles. This ensures that changes impact the correct version in a structured way.

How It Works

  1. πŸ“ Identifies commits made since the last version.
  2. πŸ”’ Determines the new version based on predefined rules.
  3. πŸš€ Automatically generates and publishes the new version.

Version Support Timeline


We maintain two support tiers:

  1. Active Support (Current Major Version):

    • πŸš€ Receives feature enhancements, bug fixes, and security patches.
  2. Security Support (Post Active Support):

    • πŸ”’ Receives only critical security patches.

❗️

Important

Older versions do not receive further updates or support.


Upgrade Path Recommendations


  • Minor version upgrades (1.0.0 β†’ 1.1.0) should be straightforward and require minimal effort.
  • Major version upgrades (1.2.0 β†’ 2.0.0) may require planning and testing.
  • πŸ“– We provide upgrade guides for each major version.

Communication of Changes


For each release, we provide:

  • πŸ“œ Release Notes detailing:
    • 🌟 New features, improvements, and bug fixes.
    • ⚠️ Known issues and breaking changes (with migration paths).
  • πŸ“š Documentation Updates reflecting API, configuration, and behavioral changes.
  • πŸ“’ Pre-Release Announcements for major versions in advance.

Versioning of Dependencies


  • πŸ”„ Internal dependencies follow the same versioning scheme.
  • πŸ”§ External dependencies are managed to maintain compatibility throughout a major version lifecycle.

Backward Compatibility Commitment


This versioning policy applies to all new releases. We commit to maintaining the described support windows for all future versions.

πŸ“˜

Releace Cycles

For more information about the release schedule, refer to the Release Cycle page.