Rename master to main? Remember naming is difficult
Tags: motivation, developer, community, github
Published: 2020-06-16 13:55:48

The racism topic has been in news outlets, in social networks, everywhere. 

From my privilege eyes in Mexico, this is a topic that only affects other countries like the US, but the more I keep listening about it, the more I keep reading about it, is clear that is everywhere, including here... I am not going to get into the details of how is it different here than somewhere else, I am not going to also say that I am the voice that you need to listen (read) about this, but I think I should stand and say something out loud. 

The latest topic affecting the Tech industry, my industry, was the proper naming of some concepts, like `master` to `main`, `master-slave`? 

##Initial reaction

I was really confused, I felt like there was no need to advocate for something that feels virtual, that doesn't really causes a change in our daily lives. 

One thought was: 
> These concepts will only matter to people in the Tech industry, which aren't really the problem... this won't really make a difference at all.

Another thought:

> Shall I jump and tweet this right away? I'm not even sure I'm against or pro this concepts

I tweeted: The black lives matter movement has arrived into Git
{% twitter 1271401217810477063 %}

###What I did?

I stayed calm, kept looking from the outside, begin reading, not to see if I was right or wrong, but really to think more in detail about the consequences of this in my life, in my job.

##Think about consequences

Yes, consequences...

###1. All the manuals and tutorials won't be accurate. 
They will be referring to branches named master, and now these are named main, this will cause a lot of confusion to new students, and will probably create a barrier entry to the development industry.

Reality: I don't want to change, I finally mastered Git, so f*this. 
Reality 2: Students will have to adapt to an industry that keeps changing if this is their passion, and there will be tons of devs to mentor them in this journey. 

###2. Imagine if you have to adapt everything? This would be impossible.
There is a big set of concepts that could be misinterpreted, we will never finish changing them, we should just leave the old concepts as they are, and maybe try harder with the new ones. 

Reality: Concepts in tech born and die, easily, the industry moves on, and doesn't really matter what is left behind.

Reality 2: You don't want to think about this things, because are uncomfortable. 

##Current stand

I promote change, and change is part of life, and is OK to change your mind, its OK if you think different today than you did in the past, there is no lost of honor on adapting, and improving. 

If this changes improve a 0.0001% something for racism, lets do it.

As programmers we know that that `0.001` is greater than `0`, so I'll use that logic to make this stick in my head.

##Final thoughts...

###NAMING IS DIFFICULT

I remembered that on the book of [BaseCode](https://basecodefieldguide.com/) from Jason McCreary ([@gonedark](https://twitter.com/gonedark)) he explains that when you name things, you should focus on Context and Time

>“Looking back on naming BaseCode we see two aspects which made naming things a little easier: Context and Time. We can use context to guide us towards a specific vocabulary. Once we have this vocabulary, it’s only a matter of time until we land on a natural, readable name. Context and time make naming things easy. Neither of these can be forced. Forcing a context leads to overly technical names. Forcing time leads to stress which makes naming things feel hard.”

Excerpt From: [Jason McCreary. “BaseCode.” Book.](https://basecodefieldguide.com/)

Naming is definitely one of the most complex things to do, and is ok to choose a name and then change it, specially in programming things should not be written in stone.

###This is old news

So, my friend David Valdez ([@Gnuget](https://twitter.com/gnuget) ) who collaborates on the Drupal Open Source project, told me that these discussions already happened:

* 2014 - Django - [ Replace occurrences of master/slave terminology with leader/follower ](https://code.djangoproject.com/ticket/22667)
* 2016 - Drupal - [Replaced "master/slave" terminology with "primary/replica" ](https://www.drupal.org/node/2286193)
* 2018 - Rails - [Replace use of whitelist with allowlist and blacklist with denylist](https://github.com/rails/rails/issues/33677)
* 2020 - PHPUnit - PHPUnit 9.3 (August 2020) will deprecate configuration options etc. that use "blacklist" or "whitelist" terminology
{% twitter 1269917026107248641 %}




Let me know if you have anything else to add, I personally think that keep talking about it, makes it relevant.