[ClusterLabs Developers] Pacemaker 2.1.0: Should we rename the master branch?

Fabio M. Di Nitto fabbione at fabbione.net
Wed Oct 21 00:10:27 EDT 2020

On 10/20/2020 7:26 PM, Andrew Price wrote:
> [CC+ cluster-devel]
> On 19/10/2020 23:59, Ken Gaillot wrote:
>> On Mon, 2020-10-19 at 07:19 +0200, Fabio M. Di Nitto wrote:
>>> Hi Ken,
>>> On 10/2/2020 8:02 PM, Digimer wrote:
>>>> On 2020-10-02 1:12 p.m., Ken Gaillot wrote:
>>>>> Hi all,
>>>>> I sent a message to the users at clusterlabs.org list about
>>>>> releasing
>>>>> Pacemaker 2.1.0 next year.
>>>>> Coincidentally, there is a plan in the git and Github communities
>>>>> to
>>>>> change the default git branch from "master" to "main":
>>>>>    https://github.com/github/renaming
>>>>> The rationale for the change is not the specific meaning as used
>>>>> in
>>>>> branching, but rather to avoid any possibility of fostering an
>>>>> exclusionary environment, and to replace generic metaphors with
>>>>> something more obvious (especially to non-native English
>>>>> speakers).
>>> No objections to the change, but please let´s coordinate the change
>>> across all HA projects at once, or CI is going to break badly as the
>>> concept of master branch is embedded everywhere and not per-project.
>> Presumably this would be all the projects built by jenkins?


>>   booth
>>   corosync
>>   fence-agents
>>   fence-virt
>>   knet
>>   libqb
>>   pacemaker
>>   pcs
>>   qdevice
>>   resource-agents
>>   sbd
>> Maintainers, do you think that's practical and desirable?

I think I have super powers all repos to do the switch when github is 
ready to make us the switch. Practical no, there will be disruptions... 
desirable no, it´s extra work, but the point is that it is doable.

> If the ClusterLabs projects switch together I might take the opportunity 
> to make the switch in gfs2-utils.git at the same time, for consistency.
>> Is there a single name that makes sense for all projects? "next",
>> "development" or "unstable" captures how pacemaker uses master, not
>> sure about other projects. "main" is generic enough for all projects,
>> but so generic it doesn't give an idea of how it's used. Or we could go
>> for something distinctive like fedora's "rawhide" or suse's
>> "tumbleweed".
> "main" works for me, it seems to be the most widely adopted alternative 
> thanks to Github, so its purpose will be clear by convention. That said, 
> it doesn't matter too much as long as the remote HEAD is set to the new 
> branch.

I would go for main and follow github recommendations. They are putting 
automatic redirects in place to smooth the transition and we can avoid 
spending time finding a name that won´t offend some delicate soul over 
the internet.

> Another question is how to do the switch without causing confusion the 
> next time someone pulls. It might be safest to simply create the main 
> branch and delete the master branch (rather than, say, replacing all of 
> the content in master with an explanatory note). That way a 'git pull' 
> gives a hint of the change and no messy conflicts:
>    $ git pull
>    From /tmp/gittest/upstream
>     * [new branch]      main       -> origin/main
>    Your configuration specifies to merge with the ref 'refs/heads/master'
>    from the remote, but no such ref was fetched.
> Maybe also push a 'master_is_now_main' tag annotated with 'use git 
> branch -u origin/main to fix tracking branches'. Or maybe that's 
> excessive :)

Let´s wait for github to put those in place for us. No point to 
re-invent the wheel. Last blog I read they were working to do it at 
infrastructure level and that would save us a lot of headaches and 

IIRC they will add main branch automatically to new projects and 
transition old ones. the master branch will be an automatic redirect to 
main. Basically will solve 99% of our issues. git pull won´t break etc.


> Cheers,
> Andy
>>> Since we are admin of all repositories, we can do it in one shot
>>> without
>>> too much pain and suffering in CI. It will require probably a day or
>>> two
>>> of CI downtime to rebuild the world as well.
>>> Fabio
>>>>> The change would not affect existing repositories/projects.
>>>>> However I
>>>>> am wondering if we should take the opportunity of the minor-
>>>>> version
>>>>> bump to do the same for Pacemaker. The impact on developers would
>>>>> be a
>>>>> one-time process for each checkout/fork:
>>>>> https://wiki.clusterlabs.org/wiki/Pacemaker_2.1_Changes#Development_changes 
>>>>> In my opinion, this is a minor usage that many existing projects
>>>>> will
>>>>> not bother changing, but I do think that since all new projects
>>>>> will
>>>>> default to "main", sometime in the future any project still using
>>>>> "master" will appear outdated to young developers.
>>>>> We could use "main" or something else. Some projects are
>>>>> switching to
>>>>> names like "release", "stable", or "next" depending on how
>>>>> they're
>>>>> actually using the branch ("next" would be appropriate in
>>>>> Pacemaker's
>>>>> case).
>>>>> This will probably go on for years, so I am fine with either
>>>>> changing
>>>>> it with 2.1.0 (since it has bigger changes than usual, and we can
>>>>> get
>>>>> ahead of the curve) or waiting until the dust settles and future
>>>>> conventions are clearer.
>>>>> Opinions?
>>>> I support this change whole heatedly. I'll leave it to others to
>>>> decide
>>>> what new word is best (though 'main' makes sense to me), but the
>>>> goal of
>>>> moving away from 'master/slave' is well worthwhile and appreciated.

More information about the Developers mailing list