Skip to content

docs: Add frontend branching strategy ADR#94

Merged
arbrandes merged 1 commit intoopenedx:mainfrom
arbrandes:frontend-branching-strategy-adr
Mar 24, 2026
Merged

docs: Add frontend branching strategy ADR#94
arbrandes merged 1 commit intoopenedx:mainfrom
arbrandes:frontend-branching-strategy-adr

Conversation

@arbrandes
Copy link
Contributor

@arbrandes arbrandes commented Jul 31, 2025

This ADR introduces the concept of "main is unstable" to frontend repositories, from whence alpha packages will be published semantically to NPM.

Parent issue: #96

@arbrandes arbrandes mentioned this pull request Aug 7, 2025
1 task
@arbrandes arbrandes force-pushed the main branch 3 times, most recently from a6124e6 to 7e13eb9 Compare February 11, 2026 22:58
@arbrandes arbrandes force-pushed the frontend-branching-strategy-adr branch 2 times, most recently from b9c5038 to bf84e2f Compare March 4, 2026 15:54
@arbrandes arbrandes linked an issue Mar 4, 2026 that may be closed by this pull request
1 task
-----------------------------------

A repository's main branch will be published semantically to NPM with on an
"alpha" prerelease tag, with a monotonically incremented version number. For
Copy link
Contributor Author

@arbrandes arbrandes Mar 4, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not married to "alpha". It could be "main", or "next", or anything else, really (as long as every frontend app repo follows the same pattern, of course).

@arbrandes arbrandes force-pushed the frontend-branching-strategy-adr branch from bf84e2f to 3ea2cbb Compare March 5, 2026 13:34
@holaontiveros
Copy link
Contributor

So just to be sure I get this right @arbrandes

  • Main becomes not prod ready, and is discouraged to use it directly on prod
  • There will be branches for something specifcally "stable" (n.x) (1.x, 2.x)

Now, how or were are we going to track what's compatible with which edx-platform version?

@arbrandes
Copy link
Contributor Author

arbrandes commented Mar 19, 2026

@holaontiveros

  • Main becomes not prod ready, and is discouraged to use it directly on prod
  • There will be branches for something specifcally "stable" (n.x) (1.x, 2.x)

That's exactly what I'm proposing, yes. (In addition to publishing from main using a prerelease tag such as the one we have now.)

how or were are we going to track what's compatible with which edx-platform version?

Good question.

It begins with this ADR. Prior to each release we'll announce which versions of things will work with that release. So the announcement would be the source of truth.

One potential de facto source of truth could be frontend-template-site. Whatever is in its package.json is what that release expects. (We would be tagging frontend-template-site with release/verawood.1, etc.)

And obviously Tutor itself, while downstream, would be de facto documentation.

Comment on lines +45 to +49
Notably, though, the main branch retains the following properties:

1. New features should be developed for and merge to it before any other
branches;
2. To facilitate collaboration, the branch is never rebased.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I like this, but it'd be good to include a "how we handle bug fixes" part. In Paragon's README we have the Contributing section which includes

The branch to target with your PR depends on the type of change you are contributing to Paragon.

Branch to Target Type of Change Documentation Site
release-22.x Bug fix/security patch https://paragon-openedx-v22.netlify.app/
release-23.x Bug fix/security patch/new (non-breaking) feature https://paragon-openedx-v23.netlify.app/
next Breaking change https://paragon-openedx.netlify.app/

which can be simplified to

Branch to Target Type of Change
previous release Bug fixes/security patches only
current release Bug fixes/security patches/new (non-breaking) features
next Breaking changes

which doesn't quite match the strategy here. My understanding is that the strategy here is instead

Desired Branch for feature/fix Type of Change Where to target PR
previous release Bug fixes/security patches only main first, backport after? open 2 PRs?
current release Bug fixes/security patches/new (non-breaking) features main first, backport after? 2 PRs?
main Bug fixes/security patches/new (non-breaking) features/breaking changes main

It'd be nice to add a little clarify to that flow that accounts for scenarios such as "we need to get this non-breaking feature into the version that's going out with the release that's being cut next week," or "this is a critical fix that needs to get out to people using a published version ASAP"

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good call. I added a section with (what I hope is) plenty of clarifying detail.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks great!

@arbrandes arbrandes force-pushed the frontend-branching-strategy-adr branch 2 times, most recently from d259908 to 01f2cb5 Compare March 23, 2026 21:30
@arbrandes arbrandes force-pushed the frontend-branching-strategy-adr branch from 01f2cb5 to bb124a3 Compare March 24, 2026 14:06
@arbrandes arbrandes merged commit c1555c5 into openedx:main Mar 24, 2026
5 checks passed
@arbrandes arbrandes deleted the frontend-branching-strategy-adr branch March 24, 2026 14:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Frontend branching strategy ADR

3 participants