Prolog​

In the realm of software development, it's imperative for companies to adopt versioning strategies that are both meaningful to developers and aligned with modern development methodologies. Alaska Software, as the vendor of the Xbase++ platform, has seamlessly integrated these considerations into its unique versioning scheme—a future-oriented and robust approach that perfectly caters to the needs of today's fast-paced, continuously evolving software landscape.

The Customized Major.BuildNumber Semantic Versioning Model​

Alaska Software employs a specialized variant of Semantic Versioning, adapted to meet the unique demands of Xbase++, a development tool. The standard semantic versioning model, which traditionally comprises `MAJOR.MINOR.PATCH`, has been tailored to a `MAJOR.BUILDNUMBER` format. This adaptation is engineered to fulfill a critical requirement for Xbase++: the imperative to maintain binary compatibility in the DLLs and EXEs it generates as well as to reflect the continuous delivery and integration process at development.

Major Version​

The `MAJOR` version is a vital aspect of Alaska Software's customized Semantic Versioning scheme. It serves as a clear and unambiguous indicator of binary compatibility. When Alaska Software increments the `MAJOR` version, developers can infer that there has been a change substantial enough to break binary compatibility. The requirement to refactor or modify existing code to adapt to this new major version is thereby clearly signaled.

Build Number​

Perhaps one of the most innovative aspects of Alaska Software's versioning model is the dynamic use of the `BUILDNUMBER`. Unlike standard semantic versioning schemes where a minor or patch number might increment based on feature additions or bug fixes, the `BUILDNUMBER` in Alaska Software's scheme is incremented continuously for every build. This holds true whether the build is shipped to the customers or not.

By permanently incrementing the `BUILDNUMBER`, Alaska Software accomplishes multiple objectives:
  • Unambiguous Identification: Every build is uniquely identifiable. This aids in debugging and makes it easier to trace the origin of any issues or to track the exact feature set of a specific build.
  • CI/CD Compatibility: The use of a continuously incrementing `BUILDNUMBER` integrates seamlessly with Continuous Integration and Continuous Delivery methodologies. It offers a dynamic way to track the version history in an environment where code is built and shipped frequently.
  • Forward Compatibility: The continuously incrementing `BUILDNUMBER` ensures that the versioning scheme is future-proof and capable of accommodating an indefinite number of incremental changes without causing confusion or versioning conflicts.

Why Alaska Software’s Scheme is Future-Oriented and Robust​

  1. Aligns with Continuous Delivery: Given that Alaska Software ships its product mostly on a monthly basis, a continuously incrementing `BUILDNUMBER` ensures that every single release is uniquely identifiable. It captures the essence of Continuous Delivery by making each build a potential release candidate.
  2. Streamlined Communication: By eliminating the `MINOR` version, the scheme reduces complexity and eliminates any ambiguity that might arise from having an additional versioning layer. It communicates essential information (binary compatibility) without unnecessary granularity.
  3. Ease of Automation: The `BUILDNUMBER` can be auto-generated, making it particularly amenable to automated build and deployment pipelines. This paves the way for streamlined development practices today and in the future.
  4. Binary Compatibility Focus: The unique adaptation of Semantic Versioning to emphasize binary compatibility makes Alaska Software’s scheme perfectly tailored to the requirements of a development tool like Xbase++. It optimizes for the most critical aspect, which is often a priority in such environments.
Note that Alaska Software uses publicly a major.minor.buildnumber versioning scheme, whereby the minor version is always 0. This is done to ensure backward compatibility with releases pre. Xbase++ Version 2.

Conclusion​

For developers new to this system, understanding Alaska Software's specialized Semantic Versioning model is simple yet enlightening. It provides a future-proof, robust, and streamlined way to manage software versions. With the dual focus on signaling binary compatibility through the `MAJOR` version and offering a precise, continuous tracking mechanism via the `BUILDNUMBER`, Alaska Software stands at the cutting edge of modern versioning practices. This ensures that both the development team and the consumer base can move forward with full confidence in the stability and clarity that this innovative versioning scheme provides.