diff --git a/docs/index.md b/docs/index.md
index 49fa6917d..81953f42e 100644
--- a/docs/index.md
+++ b/docs/index.md
@@ -13,6 +13,7 @@ in pmaports and the processes around device categorization.
.. toctree::
:hidden:
+ releases
approval-rules
device-categorization
deviceinfo-reference
diff --git a/docs/releases.md b/docs/releases.md
new file mode 100644
index 000000000..48195e6a6
--- /dev/null
+++ b/docs/releases.md
@@ -0,0 +1,73 @@
+# Releases
+
+postmarketOS can be installed from either edge, or from a stable release. New
+stable releases are created every six months in June and December (one month
+after [Alpine's releases](https://alpinelinux.org/releases/)).
+
+**edge** is a rolling release where all packages are kept at their newest
+version. This offers faster access to software at the expense of less user
+testing. In practice, issues on edge are relatively uncommon, and are
+documented in the [edge blog](https://postmarketos.org/edge/) when found.
+
+**stable releases** are a snapshot of edge, in which updates to packages only
+contain bug fixes (with few exceptions). This means new features usually won't
+appear, but you will get a more a more tried and tested, solid experience.
+
+## Active and Planned
+
+| Release | Announcement | EOL | Title | Branch pmaports | Branch aports | Milestone |
+|:---------:|:------------------:|:-----------:|:---------------------------------:|:----------------:|:--------------:|:----------:|
+| edge | - | - | Edge | main | master | - |
+| v25.12 | [2025-12-23][2512] | 2026-07-31 | The One Where The Saga Continues | v25.12 | 3.23-stable | [#31][m31] |
+| v26.06 | 2026-06-xx | 2027-01-31 | *(upcoming)* | v26.06 | 3.24-stable | [#33][m33] |
+
+## End of Life
+
+| Release | Announcement | Title | Branch pmaports | Branch aports | Milestone |
+|:--------:|:------------------:|:---------------------------------------------------------:|:----------------:|:--------------:|:-----------:|
+| v25.06 | [2025-06-22][2506] | the one with systemd | v25.06 | 3.22-stable | [#29][m29] |
+| v24.12 | [2024-12-23][2412] | The One With Androids & Cameras, But It's Mainline Linux | v24.12 | 3.21-stable | [#21][m21] |
+| v24.06 | [2024-06-16][2406] | The One With Over 250 Devices | v24.06 | 3.20-stable | [#19][m19] |
+| v23.12 | [2023-12-18][2312] | The One We Asked The Community To Name | v23.12 | 3.19-stable | [#18][m18] |
+| v23.06 | [2023-06-07][2306] | From the GNOME Mobile 2023 Hackfest | v23.06 | 3.18-stable | [#16][m16] |
+| v22.12 | [2022-12-18][2212] | The One With Napali Calling | v22.12 | 3.17-stable | [#14][m14] |
+| v22.06 | [2022-06-12][2206] | The One Where We Started Using Release Titles | v22.06 | 3.16-stable | [#12][m12] |
+| v21.12 | [2021-12-29][2112] | - | v21.12 | 3.15-stable | [#9][m9] |
+| v21.06 | [2021-07-04][2106] | - | v21.06 | 3.14-stable | [#11][m11] |
+| v21.03 | [2021-03-31][2103] | Beta 2 | v21.03 | 3.13-stable | [#8][m8] |
+| v20.05 | [2020-05-31][2005] | Beta 1 | v20.05 | 3.12-stable | [#2][m2] |
+
+[2512]: https://postmarketos.org/blog/2025/12/23/v25.12-release/
+[2506]: https://postmarketos.org/blog/2025/06/22/v25.06-release/
+[2412]: https://postmarketos.org/blog/2024/12/23/v24.12-release/
+[2406]: https://postmarketos.org/blog/2024/06/16/v24.06-release/
+[2312]: https://postmarketos.org/blog/2023/12/18/v23.12-release/
+[2306]: https://postmarketos.org/blog/2023/06/07/v23.06-release/
+[2212]: https://postmarketos.org/blog/2022/12/18/v22.12-release/
+[2206]: https://postmarketos.org/blog/2022/06/12/v22.06-release/
+[2112]: https://postmarketos.org/blog/2021/12/29/v21.12-release/
+[2106]: https://postmarketos.org/blog/2021/07/04/v21.06-release/
+[2103]: https://postmarketos.org/blog/2021/03/31/v21.03-release/
+[2005]: https://postmarketos.org/blog/2020/05/31/three-years/#stable-release-channel
+
+[m33]: https://gitlab.postmarketos.org/groups/postmarketOS/-/milestones/33
+[m31]: https://gitlab.postmarketos.org/groups/postmarketOS/-/milestones/31
+[m29]: https://gitlab.postmarketos.org/groups/postmarketOS/-/milestones/29
+[m21]: https://gitlab.postmarketos.org/groups/postmarketOS/-/milestones/21
+[m19]: https://gitlab.postmarketos.org/groups/postmarketOS/-/milestones/19
+[m18]: https://gitlab.postmarketos.org/groups/postmarketOS/-/milestones/18
+[m16]: https://gitlab.postmarketos.org/groups/postmarketOS/-/milestones/16
+[m14]: https://gitlab.postmarketos.org/groups/postmarketOS/-/milestones/14
+[m12]: https://gitlab.postmarketos.org/groups/postmarketOS/-/milestones/12
+[m11]: https://gitlab.postmarketos.org/groups/postmarketOS/-/milestones/11
+[m9]: https://gitlab.postmarketos.org/groups/postmarketOS/-/milestones/9
+[m8]: https://gitlab.postmarketos.org/groups/postmarketOS/-/milestones/8
+[m2]: https://gitlab.postmarketos.org/groups/postmarketOS/-/milestones/2
+
+```{eval-rst}
+.. toctree::
+ :hidden:
+
+ releases/timeline
+ releases/backporting
+```
diff --git a/docs/releases/backporting.md b/docs/releases/backporting.md
new file mode 100644
index 000000000..4303ce1d9
--- /dev/null
+++ b/docs/releases/backporting.md
@@ -0,0 +1,31 @@
+# Backporting from edge
+
+## Workflow
+
+* Merge request authors or other contributors may add a `backport-to-vYY.MM`
+ label to pmaports MRs that shall be backported.
+
+* After the MR is merged, postmarketOS team members can then backport the
+ patches to the given stable branch. If you are not a team member and need
+ somebody to do the backport, you can ask in
+ [postmarketos-devel](https://wiki.postmarketos.org/wiki/Matrix_and_IRC).
+
+* Use git cherry-pick -x ffffffff (insert commit to cherry pick
+ accordingly) for every patch. The -x will add a (cherry
+ picked from commit ffffffff) line to the commit message.
+
+* If you really know what you are doing and the change is trivial or the stable
+ branch is not released yet, then you can directly push the backported patch
+ to the stable branch. Otherwise you *must* make a merge request against the
+ stable branch with the backport. We don't want stable branches to break!
+
+* Add a comment to the original merge request where the backport can be found
+ (with a link to the merge request or backported commit hash).
+
+## What to look out for
+
+* Cherry picked commits shall not be squashed, then it's hard to understand
+ which commits were already picked and which were not.
+
+* Avoid cherry-picking multiple patches that touch the same pmaports in the
+ wrong order.
diff --git a/docs/releases/timeline.md b/docs/releases/timeline.md
new file mode 100644
index 000000000..f6f87024c
--- /dev/null
+++ b/docs/releases/timeline.md
@@ -0,0 +1,55 @@
+# Release Timeline
+
+The calendar week (CW) numbers in this document get updated before the next
+release cycle starts. Get the current CW with `date +%V`. During the release
+cycle we try to follow this plan closely, but it can happen that we run
+over the planned CWs.
+
+## Pre-Build
+
+CW 21 (2026-05-18 - 2026-05-24)
+
+Release branches are not yet in feature freeze, but we should avoid making
+major changes to main.
+
+Team:
+* Create the [infrastructure
+ issue](https://gitlab.postmarketos.org/postmarketOS/pmaports/-/issues/new?description_template=Release_Infrastructure)
+ (which has more detailed tasks for the team for each phase, the document here
+ just gives a rough overview).
+* Create the release branch in pmaports.
+* Start building of binary packages early, so we can get through it for sure.
+
+## Branch
+
+CW 22 (2026-05-25 - 2026-05-31)
+
+The release branch is in **feature freeze**:
+
+We can cherry pick fixes where it makes sense, but can't add features to the
+release branch anymore (exceptions can be made if there is a good reason).
+
+Team:
+* Rebase the release branch on main once
+* Build binary packages and images (configure BPO for that)
+
+## Test
+
+CW 23 (2026-06-01 - 2026-06-07)
+
+Maintainers:
+* Test your devices and UIs (test yourself if you can and/or coordinate with
+ the [Testing Team](https://wiki.postmarketos.org/wiki/Testing_Team))
+* Report back in the issue ([template for devices](https://wiki.postmarketos.org/wiki/Kernel_upgrade_testing#Stable_release_testing))
+* Fix stuff that is broken by creating MRs against pmaports main and assigning
+ the `backport-to-YY.MM` label
+
+## Release
+
+CW 24 (2026-06-08 - 2026-06-14)
+
+Team:
+* Write the release blog post.
+
+Team + Maintainers:
+* Celebrate with party hats and get wasted.