|
| 1 | +--- |
| 2 | +title: RSpec Branching Strategy |
| 3 | +author: Jon Rowe |
| 4 | +no_comments: true |
| 5 | +--- |
| 6 | + |
| 7 | +# The short version |
| 8 | + |
| 9 | +RSpec repositories will deprecate the use of `master` for the default branch |
| 10 | +name. We will wait for a consensus on the new name for the default branch, |
| 11 | +in particular what new default is chosen by Github. |
| 12 | + |
| 13 | +If no other consensus is arrived at by 1st of August, `master` will be |
| 14 | +renamed `main`. At that point all development effort will be based off |
| 15 | +the new branch name, and use of `master` will illicit a warning on install |
| 16 | +/ usage. All open PRs will be rebased. |
| 17 | + |
| 18 | +# The long version |
| 19 | + |
| 20 | +RSpec's source code is hosted on Github. By default git, and thus Github has |
| 21 | +historically used `master` as the name of the default, or main branch. This |
| 22 | +term has sat uneasily on the minds of the team and with the recent community |
| 23 | +led moves to eliminate this terminology from our technology stacks, we are going |
| 24 | +to follow suit and rename this branch. |
| 25 | + |
| 26 | +We currently favour `main` as the new name (it has shared muscle memory with |
| 27 | +the old) but we also recognise that having community consensus around a |
| 28 | +default name is important as it reduces the amount of surprise encountered by |
| 29 | +developers. So we will wait for the community to settle on a new default name, |
| 30 | +in particular for Github to change their default, but if none has been |
| 31 | +announced by 1st August we will use `main`. |
| 32 | + |
| 33 | +We already have other branches in use for stable versions (e.g. |
| 34 | +`3-9-maintenance`) and they will be unaffected. |
| 35 | + |
| 36 | +Some people will believe this is an inconvience because `master` is used for |
| 37 | +lots of things, but the term has its origins in the dominance of one person |
| 38 | +over another, in particular in slavery and this change is about being |
| 39 | +inclusive to all people. |
| 40 | + |
| 41 | +## Implications |
| 42 | + |
| 43 | +We have always encouraged the use of our main branch for getting pre-release |
| 44 | +features before we release them as a group of gems, this means there are likely |
| 45 | +people using the `master` branch via their Gemfiles. We will deprecate |
| 46 | +`master` by means of notice in the documentation, and possibly a post install |
| 47 | +/ on usage message from RSpec itself warning of the fact the branch will |
| 48 | +become stale and not be updated further. Additionally we will look at |
| 49 | +using branch protection rules preventing PRs against `master` from that date. |
| 50 | + |
| 51 | +## Steps we intend to take |
| 52 | + |
| 53 | +1. Push `master` to `main` (or other new branch name). |
| 54 | +2. Rebase all open PRs and update our builds. |
| 55 | +3. Set the default to `main` (etc) for all RSpec repositories. |
| 56 | +4. Push change deprecating `master` to `master`. |
| 57 | +5. In the future (possibly when releasing RSpec 4) remove `master`. |
0 commit comments