From cdd102f21570521dfad214b21994862f7bdf5994 Mon Sep 17 00:00:00 2001 From: Matthias Mair Date: Fri, 27 Feb 2026 13:01:09 +0100 Subject: [PATCH] feat(docs): add next breaking docs (#11433) --- docs/docs/develop/contributing.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/docs/docs/develop/contributing.md b/docs/docs/develop/contributing.md index d3a2f03595..7918bd9572 100644 --- a/docs/docs/develop/contributing.md +++ b/docs/docs/develop/contributing.md @@ -62,6 +62,7 @@ InvenTree roughly follow the [GitLab flow](https://about.gitlab.com/topics/versi There are nominally 5 active branches: - `master` - The main development branch - `stable` - The latest stable release +- `next-breaking` - The next breaking release (e.g. 2.0, 3.0) with all deprecated features removed - `l10n` - Translation branch: Source to Crowdin - `l10_crowdin` - Translation branch: Source from Crowdin - `y.y.x` - Release branch for the currently supported version (e.g. `0.5.x`) @@ -115,6 +116,23 @@ The translation process is as follows: 4. Translations made in Crowdin are automatically pushed back to the `l10_crowdin` branch by Crowdin once they are approved 5. The `l10_crowdin` branch is merged back into `master` by a maintainer periodically +### `next-breaking` Branch + +Used for easier testing of plugins and integrations against the next major release. It is branched from master when a major release is cut and updated on minor release. The branch is not build into docker images or packages and not meant to be run in production. + + +All deprecated features (REST or python API endpoints mostly) are removed from this branch after each minor release. This allows plugin developers to test their plugins against the next major release early and identify any extensive changes before the major release is cut. + +Only breaking changes are added to this branch. No new features should be added at any point to this branch, only breaking removals / changes. + +Before a major release is cut (1.12.5 > 2.0.0), this branch is merged back into `master`. + + +During the life-time of a major release line (1.0.1, 1.1.x, 1.2.x, 1.3.x, ..., 1.12.5) all deprecation removals are collected in this branch. +On every minor release (1.11.8 > 1.12.0) the `master` is rebased onto the `next-breaking` branch. + +Every time a change with depreations is merged into `master`, a follow up PR that removes the newly-introduced deprecation is created targeting the `next-breaking` branch. After the next minor is released and `master` was rebased into `next-breaking` all the PRs from the previous minor release line can be merged into the `next-breaking` branch. Deprecation removals for the - possibly - long running major release line can be collected this way without having a large number of deprecation removals PRs open. + ## API versioning The [API version]({{ sourcefile("src/backend/InvenTree/InvenTree/api_version.py") }}) needs to be bumped every time when the API is changed.