Intentional Versioning uses versions to tell who should care about a release. Version u.i.m addresses three audiences:
u - Usersu says: "Users, this release is for you."i - Integratorsi says: "Integrators, this release is for you."m - Maintainersm says: "Maintainers, this release is for you."u.i.m where u, i and m are non-negative integers.users/integrators/maintainers, or integrators/maintainers or just maintainers.The default audiences (users, integrators, maintainers) fit most projects. If yours doesn't have distinct integrators, the "i" won't change much, and that's fine.
If you want to be explicit, define your audiences in your README:
This project uses Intentional Versioning (intver.org): - Users: teachers and students - Integrators: LMS plugin developers - Maintainers: maintainers and core contributors Badge for README.md: [](https://intver.org) Badge for README.org: [[https://intver.org][https://img.shields.io/badge/versioning-intver.org-blue.svg]]
Version numbers say who should pay attention.
To say what breaks, you can use the git trailing BREAKING-CHANGE:, as recommended in conventional commits. Or you can use more specific git trailers:
feat!: Redesign the dashboard New layout with improved accessibility. Breaking-Users: The settings page has moved to the profile menu. Breaking-Integrators: DashboardConfig.load() now returns a Result type.
Three trailers are available, one per audience:
Breaking-Users:Breaking-Integrators:Breaking-Maintainers:The absence of a trailer means that nothing breaks.
u mean a breaking change?i. The scheme still works, it reflects the reality that this project doesn't have a distinct integrator audience.u' part. Implicitly, changes for users also deserve the attention of integrators and maintainers, and changes for integrators also deserve the attention of maintainers.1.2.3-beta)?u.i.m is identical, so most tools will accept IntVer version strings. The meaning is different, but the structure is the same.