ROS Resources: Documentation | Support | Discussion Forum | Service Status | Q&A

Consider Renaming Default Branches

Given the recent trends moving in favor of more inclusive language in code, I thought it would be worthwhile to start a conversation about renaming the default branch to something like “main”, as GitHub is planning.

I realize such a change would not be trivial, but I’m curious what would be involved in that process / how the buildfarm would be affected.


or… we could focus on actual ROS development? Master is a word that refers to someone who is an expert in their craft, the go-to for certain tasks. Makes sense to me to keep it as the default name for the best branch of a repo. I really never see “slave” used anymore because that has obvious negative connotations. But anywhere you see “slave”, I agree we should change it.


While that may be the definition of the word, this is not the contextual meaning of the word.

Obviously there is potential here to interrupt workflow, and that’s the purpose of this post.

Should we? I think so, but I’d like to hear other’s input.

Could we? Although renaming branches isn’t difficult individually, though there’s a lot of development infrastructure in place around these repos that would need to be adjusted (at least I think). This is would need to be done carefully, and thus we should plan about this together.

1 Like

I’ve already been set back by a couple hours dealing with an Arduino library that re-wrote some code to do away with wording related to this post. Candle isn’t worth the game in my opinion. Unless you just love spending countless hours in front of your computer chasing down bugs that don’t have any quick Stack Overflow fixes to them.


While I respectfully disagree, I do think you bring up a very important point here.

Things can and likely will break downstream, and so special care must be taken.


I want to preface this response with two points that I think need to be made clear.

  • Black lives matter.
  • Anti-blackness and racism exists in engineering cultures across the world.

With this in mind, and in the spirit of being a polite and welcoming community we should strive to use inclusive language wherever and whenever possible. The “master / slave” nomenclature has already been discussed, at length, in other places, with the community consensus being that it should be replaced as soon as is convenient. English being what it is, and etymology being a murky enterprise, the meaning behind the Git “master” branch name is unclear but signs point to a provenance in the master/slave tradition. Etymology notwithstanding, we should strive for more inclusive language solely as a matter of being a welcoming community; and we should always defer to moving in a more welcoming direction. Similarly, we can’t go back in time and change things that were incorrect in the past, but we certainly can try to do things better now and in the future. For these reasons Open Robotics has decided to migrate the software we maintain use to main and we recommend that others in the community follow suit. We suggest that package maintainers plan to migrate to using a “main” branch as part of their next release effort. From the perspective of the core ROS libraries and the build farm there is no blocker, limitation, or undue burden in making this transition. Internally at Open Robotics we plan to have adopted “main” as the going forward standard with ROS 2. What this means in practice is that developers migrate from master to main for all new releases. Older releases should feel free to use “master” to maintain backwards compatibility. I’ve tried to briefly address some of the potential questions about this below.

Does my package have to migrate to using git main?

No, you don’t, but we highly recommend that you do so on a going forward basis. As a distributed and federated community we have very little control of the actions of others aside from asking that they try to be polite. As an organization we prefer to work with people who are kind and polite. We hope you feel the same way.

Do I need to migrate older releases?

You can if you would like. We understand that the further back in time you go the more difficult it is to fix this problem. We’re only asking for people to do the right thing going forward.

This will cause me a lot of pain. I don’t want to do it.

We’re aware that this will make some work for some groups. We’re aware that this may impact your systems. We believe that the impact on released software should be minimal and that changes touching in-progress distributions will be similar in scope to other API and nomenclature changes.

Can you help me through this transition?

Yes, we can. Feel free to use ROS discourse to ask for help. We’re looking into the transition ourselves. Once we have a plan we can publish a guide.

Will this do anything to fix systemic racism?

No, but it is a start. It is a gesture showing good will, and a willingness to listen and change our behavior. We have a few other actions that we’re working on but we wanted to respond to this point directly. If you have other suggestions or things you would like us to consider we’re all ears.


@Katherine_Scott thanks for your in depth post! I’m very glad to hear that Open Robotics will be moving to use “main” instead of “master” for their branch names!


Do you actually know how many ROS repos have a master branch at all? I.e. most repos I work with have branches like “melodic-devel”, “foxy-devel” and so on, and no master (Moveit being an exception).

I propose we should rename ROS and all of robotics.

‘Robot’ has word origin from Czech, from “robota” meaning “forced labor” AKA slavery. If we’re being honest, when you think about it ROS really stands for Slave Operating System (SOS).

Are there proposals for a new name for ROS and the robotics field? Please submit your proposals.


I fully, 100%, absolutely agree, and I would like to steal this preface for my post.

Agreed. But please, everyone: Don’t construe the fact that someone is not renaming their master branch to “main” as some kind of racist or anti-BLM statement, and don’t label them as “unkind and impolite” based on that fact alone. There may be technical or other reasons for doing so.

Let’s not start a witch hunt over this.


This does sound a bit like it’s implying developers who do not rename their branches (for whatever reason) are unkind and impolite, and stretching it a bit, are against the sentiment which caused OR to decide to rename their branches.

That can’t have been what you were going for, correct? Am I reading this wrong?


(but given the context and this suggestion/action, it’s unlikely there is any room for nuance)

And this is going to the extremes a bit, but technically correct (although it may not have such a negative connotation as the words being debated in the current context).


Do you literally have nothing better to do? :smiley:

1 Like

There’s an easy solution here: switch to mercurial. Its default branch is ‘default’.


I understand that the language can have a big impact on thinking, but is this really the longest lever you can pull? If you really want to fight racism, you should consider teaching immigrants in Python or speaking your language. Create a ROS school for kids that can not afford it.

sorry for this bad post. For me the world “all” means all people living together. I did know this is from another party. Another user informed me about this.

I just wanted to show that even the name of the movement is creating this heavy contrast. Every time when somebody make the color of your skin to a topic is will increase the polarization.


Regardless of the controversy, I always thought “main” was a better default branch name. Unless “master” implies “it can do everything” (like in “master key”) or “it instructs others” (as in “master craftsman” and “master copy”), in my book it’s an unintuitive use of the word and the alternatives are always superior(“primary”, “main”) and clearer.

It is especially confusing in git repositories, because the master branch has no special capability at all. What a nonsensical name to start with.


If you really want to get technical, it means both serfdom, which is not strictly the same as slavery, and “arduous labor”, but it doesn’t matter – the word “robot” has so much history and global usage that it has long become an entirely new word with a different meaning, which offends no descendants of medieval serfs.

To everyone with enough free time to dig into etymology for fun, the word is perfectly appropriate: we are forcing these machines to do our hard work. Notice how “hard” has the same Proto-Slavic origin as “robot” but it doesn’t make you think “slave” anymore. This is because robots rule.


I filed an issue requesting navigation2 to rename the default branch to main:


Funny you should say this. I actually just signed up with my third year teaching with Code Nation. I also used to teach for FIRST robotics which has a similar effect. Both of them are great programs and I highly recommend them. I would love to get the ROS documentation to the point of being open curricula.


cc: @gavanderhoorn

Agreed. But please, everyone: Don’t construe the fact that someone is not renaming their master branch to “main” as some kind of racist or anti-BLM statement, and don’t label them as “unkind and impolite” based on that fact alone. There may be technical or other reasons for doing so.

I didn’t say this. We’re asking that people try to be polite and make the effort on a go-forward basis, just as we are trying to make changes ourselves. Sure, there may be issues and limitation and we’re opening to hearing about them. We’re not arbiters, and we’re not necessarily going to construe your failure to make this happen as implicitly ill will.

Weasel words. What you will achieve is to waste developer time and stir dissent on ros discourse policing words against a meaning they never had and will CREATE a problem where none existed.

It is not a “failure” if say someone decides to close no action inane issues each and every time they’re opened, looking for a problem.

1 Like