New changes to Open edX repos go on their default branch, named master or main (I’ll just say “main”). Every 6 months we cut an open-release/<TREE>.master branch for the <TREE> release. Only fixes and minor improvements are merged to the open-release branch.
Tutor and its plugins also generally have master as their default branch, but this branch does not work with Open edX main. It works with the latest open-release branch of Open edX. The branch that works with Open edX main is called nightly. Tutor devs merge changes to master if they work with the last release, or nightly if they only work with Open edX main.
To recap:
Tutor branch
Compatible Open edX branch
nightly
main [default]
master [default]
open-release/LATEST.master
Proposal
It’s a complex that the default branch for Tutor works with the non-default branch of Open edX, but I think it’s actually a reasonable reflection of the fact that Tutor operates as a distribution/config layer on top of Open edX. So I don’t think that’s the problem.
The problem is that Tutor master and Open edX master don’t match. It’s head-explodingly confusing , and it totally fails the Principle of Least Surprise.
Here’s what I propose:
Tutor branch
Compatible Open edX branch
nightly main
main [default]
master release [default]
release/LATEST
In addition to renaming the branch, we could rename “Tutor Nightly” offering (which Open edX developers use) to “Tutor Mainline”.
I propose we make these changes as part of Sumac, to coincide with the fact that Open edX release branch names will probably also change.
Does this mean that we should target our contributions to the new default branch (old nightly) for Tutor and plugins?
Because tutor is relatively quick in merging changes, you can expect your contributions to be merged during the current Open edX release, avoiding the need to use a long lived fork of Tutor. How would the backport strategy look in this new model?
Edly, correct me if I’m wrong, but for Tutor itself and probably some of the official plugins this is done automatically every so often via a “merge master into nightly” commit.
I would also go as far as suggesting that the merging strategy for Tutor should also be changed so that all new features go to “mainline” first, then are subsequently backported into “release” (sometimes called the “master is unstable” strategy), something which would further mitigate the disconnect with Open edX repos. But don’t let this derail the original renaming proposal, which is good on its own.
I like the branch proposal and I agree that “Nightly” may not be the best name, but “Mainline” seems worse than “Nightly” to me. Without context, I would assume that mainline refers to the releases, or something, which is the “main” way that most people use tutor / open edx. Whereas “nightly” has a clear definition in software development of auto-generated daily releases that contain the very latest code. That isn’t exactly what Tutor Nightly is (after all, you still build it the images and the frequency is whatever you want), but at least it implies “latest, less stable, frequently changing dev version” so I find it closer than “Mainline”.
I would suggest “Tutor Next” or “Tutor Edge” or just stick with Nightly.
Fair enough w.r.t. “Mainline”, but my gripe with “Nightly” is that it’s literally false and I’ve seen that confuse several people.
Next and Edge both sound great to me
For what it’s worth, “Tutor Edge” was @regis 's first name for Nightly, but there was some concern about it being confused with https://edge.edx.org, 2U’s other Open edX deployment. I don’t think that would actually have caused any confusion, so I have no opposition to Tutor Edge. Although, if it matters to anyone, we probably cannot ever officially call anything “Open edX Edge” for this reason.
Your concern about the Open edX & Tutor branch naming mismatch is valid. I’ve also seen contributors being confused. Myself, I feel a little silly when I explain that changes pushed to “master” are for the “open-release/*” branches, and changes pushed to “nightly” are for the “master” branches.
I do want to keep the “release” branches the git default, though. (in Tutor) Wouldn’t it be confusing if “release” was the default, instead of “main”? As developers, muscle memory tells us to push our changes to “main/master”. Moises’ first comment confirms this.
But I think we can live this that, and that slight discrepancy is less confusing than the nightly/master mismatch.
This argument is also valid. For that reason, I like “next” when the principal branch is “release”. That’s because it makes it very clear that the “next” branch targets the “next release”.
To recap:
Tutor (current)
Tutor (future)
Open edX (current)
Open edX (future)
master
release
open-release/zebulon.master
release/zebulon
nightly
next
master
master
This is correct.
Yes, if you think this is a viable strategy then let’s discuss this separately
We’ve had six months to sleep on this, and it’s time to implement this change. My problem right now is that this time has given me time to think and I’m having a change of heart
My feeling (and it’s really just that, a “feeling”) is that “next” is a non-intuitive, unconventional branch name. From a developer’s perspective, it doesn’t make much sense that Tutor’s “next” branch tracks Open edX’ “master” branch.
So I propose that instead of “next”, the “nightly” branch be renamed to “main”. To recap, I propose the following, which was actually Kyle’s initial proposal:
Tutor branch
Compatible Open edX branch
master release [default]
release/LATEST
nightly main
master [default]
I used to be opposed to referring the “nightly” branch as “main”, and that’s because I wanted Tutor developers to focus on the release branch. That is still the case, but developers are now much more familiar with the Tutor ecosystem. Tutor maintainers can also help to educate contributors in the PRs, and tell them to rebase their changes on top of “release” or “main”. So I think that change is the least confusing.
I have discussed this with @kmccormick and @DawoudSheraz, who both agree. @braden, you were the one most opposed to the nightly -> main change. Are you still?
All my apologies for all the confusion and the back-and-forth… Hopefully we can reach an agreement before Sumac is out.