===============
BO4E Versioning
===============

The BO4E data model uses a unique versioning system to track changes and updates.
This system is easy to understand once you're familiar with its format and rationale.

Let's break it down:

Version Format: `YYYYMM.functional.technical`

- YYYYMM: Represents the year (YYYY) and month (MM) when the version was released. For example, 202312 would mean December 2023.
- functional: A number that changes when there are significant updates or new features.
- technical: This number changes for minor updates, like bug fixes or spelling corrections.

How Does it Work?
=================

1. **Base Structure**: Think of the version number as a date followed by two additional numbers, like 202312.1.2. Here, 202312 tells you the release date, 1 is the functional number, and 2 is the technical number.
2. **Functional Changes**: For bigger changes, like adding a new business object, we update the functional number and reset the technical number to zero. For instance, if we add a significant feature to the 202312.1.2 version, it becomes 202312.2.0.
3. **Technical Changes**: If we fix a typo or a small bug, we only change the technical number. So, after a minor fix, the version might change from 202312.1.2 to 202312.1.3.

Yearly Reset: With the start of a new year, we reset both the functional and technical numbers.
So, if we're moving from December 2023 (202312.2.0) to January 2024, the new version would be 202401.0.0.

Why This System?
================

This versioning system, inspired by semantic versioning, offers a clear and systematic way to track changes.
It ensures that users can easily identify when a significant update has occurred and when minor tweaks have been made.
