# RFC: A new versioning strategy for Discourse

**URL:** https://meta.discourse.org/t/rfc-a-new-versioning-strategy-for-discourse/383536
**Category:** Development
**Tags:** dev-news
**Created:** [September 23, 2025, 7:55am UTC](https://meta.discourse.org/t/rfc-a-new-versioning-strategy-for-discourse/383536 "2025-09-23T07:55:33Z")
**Posts on this page:** 1
**Showing post:** 14

<div class="post-metadata">

### Author: ![david](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/david/32/157490_2.png) [@david](https://meta.discourse.org/u/david)
#### Post date: [September 23, 2025, 4:26pm UTC](https://meta.discourse.org/t/rfc-a-new-versioning-strategy-for-discourse/383536/14 "2025-09-23T16:26:53Z")

</div>

> [@RGJ](#):
>
> So if I build a new feature in my plugin that needs v2026.3, I create a branch and put my new functionality in there. Now that the feature has been built and my client is happy, I can take some rest and enjoy my vacation 🌴 🍷 . However, after my third glass of wine, you decide to release v2026.4 and my client decides to update. And poof, there is no v2026.4 branch in my plugin and the functionality disappears 😭

The intention is the reverse. The compat branches are only for ‘released’ branches of Discourse. Discourse `latest` will always use `main` of your plugin. That’s where you’ll develop new features.

So the story would be:

Discourse releases `v2026.2`. GitHub actions on your plugin automatically detects this and cuts a `d-compat/v2026.2` branch. Now, anyone using Discourse `v2026.2` will be using the `d-compat/v2026.2` version of your plugin.

You release a new feature on `main` of your plugin. You don’t need to think about backwards-compatibility, because the `main` branch is only used by people running Discourse `latest`.

Then, while you’re sipping your third glass of wine 🍷, Discourse cuts `v2026.3`. Initially there is no plugin branch for this version, so `main` will be used. Stuff keeps working as it did for people on `latest`.

Within hours, your github action detects the new version and freezes `d-compat/v2026.3`, ready for your next plugin feature to land on `main` with no backwards-compatibility concerns.

This is essentially the workflow we use at CDCK to handle stable compatibility of themes/plugins. After each stable release, we have a script to run through our hundreds of themes/plugins and freeze them via `.discourse-compatibility`. This branch-based proposal aims to be a lighter-weight version of that workflow.

---

_[View the full topic](https://meta.discourse.org/t/rfc-a-new-versioning-strategy-for-discourse/383536)._
