Re: The master branch rename, and avoiding another v1.6.0 git-foo fiasco

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Nov 12, 2020 at 7:01 PM brian m. carlson
<sandals@xxxxxxxxxxxxxxxxxxxx> wrote:
>
> On 2020-11-13 at 00:04:23, Felipe Contreras wrote:
> > *If* we are going to rename the master branch, it should be with a
> > good reason, after discussing it appropriately, in a major release
> > (i.e. Git 3.0), after a period of deprecation, and a big warning to
> > invite users to provide feedback about the important upcoming change.
> > We can hedge these types of changes with a "core.mode=next"
> > configuration, as I argued back in 2013. [3]
>
> When the original email that proposed this change came up, I did suggest
> that this would be suitable for a Git 3.0.  I think such a version
> number bump would be valuable, but I know that Git doesn't follow
> semantic versioning and I'm happy for Junio to make the call.  Git has
> made incompatible changes in the past in non-major versions, so there is
> precedent for this, although I agree it has the potential to be
> surprising.  Again, I defer to Junio's judgment here.

I have not been following the Git project for a while, but during the
Git 2.0 development I proposed considerable drastic changes, which
Junio said could not fit into v2.0, but perhaps v3.0, which according
to him: [1]

"Even if we end up having to wait for 3.0, it will happen within two
years max, if not earlier." -- Junio 2014

There are actual good backwards-incompatible changes that a new major
release of Git would benefit from, so if Junio changed his mind about
considering these types of changes, it would be good to know.

I for one haven't noticed a single backwards-incompatible change since v2.0.

> I should point out that there is an option to test or set this already,
> with init.defaultBranch.  I have used this feature for testing in the
> past, and I use the feature now to set default branches.  It's also
> possible to use the template functionality to set a default branch name
> for new repositories and I've tested support for this back to at least
> Git 2.0 (but I believe it goes back even farther).  And, of course,
> either of these options can be used for developers to choose the branch
> name which meets the needs of the project best.

There was also the option to test the future changes in v1.6.0, that's
not the point.

The point is that users **must be warned**--and very annoyingly
so--before obsoleting something.

> As for consultation with users, there was a discussion about this on the
> list a few months back and we did get a lot of input from various
> parties.  Some of that feedback was hostile and inappropriate and some
> even violated our code of conduct in my view, as is all too common with
> potentially controversial topics, and I'm not eager to repeat such a
> discussion, since I don't think it's going to result in a productive,
> positive outcome.

I looked for this kind of discussion, but didn't find it. I didn't
imagine it was as far back as June.

It took a while, but I finally read the whole thread, and I understand
your unwillingness to repeat such a discussion, but unfortunately it
will have to happen again, because the people that participated in
that discussion are but a tiny minority that is not representative of
all Git users. If not now, it will happen in the future. This is
exactly what happened in 2008, when the issue was discussed in at
least three big threads.

Moreover, my point was not discussed in that thread. You mentioned it,
but everyone focused on tangents, such as the state of the culture
war, and the etymology of the word "master".

To try to save your sanity I will attempt to be brief (but probably
not as brief as you would like to).

This is what was discussed:

1. Adding a configuration (init.defaultbranch)
2. Should the name of the master branch be changed?
3. Best alternative name for the master branch
4. Culture war
5. The impact to users

I have a lot to say about 4, 3, and 2, and perhaps I will do so in
another thread, but that's not important, what is important is the
thing that was not discussed: the users.

I like to refer to a panel Linus Torvalds participated in regarding
the importance of users [2]. I consider this an explanation of the
first principles of software: the main purpose of software is that
it's useful to users, and that it continues to be useful as it moves
forward. To quote Torvalds:

"Any time a program breaks the user experience, to me that is the
absolute worst failure that a software project can make." -- Linus
Torvalds

This is the first thing the Git project should be worried about, not
the current state of the culture war, and I didn't see anyone
championing the users, and how this change will negatively impact
their experience, which arguably has been pretty stable throughout the
years (at least since 2008).

That being said, I want to touch on only one point you brought
forward, that is indirectly relevant to the users.

You mentioned the importance of intent [3], and how we can never be
certain of the intent of another person, this is true. However, we
must try to guess what the interlocutor might have meant, otherwise
there is no point in communication. This is realized in Wikipedia's
fundamental principle of always assuming good faith [4], Grice's
philosophical razor: prefer what the speaker meant over what the
sentence they spoke literally meant [5][6].

You cannot stand in a comedy special without realizing what the comic
actually means, and it rarely is what he literally says. If I utter
the phrase "kill me now", you know what I mean, or more importantly;
what I don't mean.

A lot of people today want to ignore this fundamental aspect of human
language, and they do so for political reasons. But it doesn't stop it
from being the case. It's not a coincidence that since 2005 nobody had
any problem with the word "master", it's only in 2020 that the issue
"magically" popped up. And it's no coincidence either what kind of
people are pushing for this change.

This is a solution looking for a problem.

There is a concept called "the silent majority" which applies in
software. Most Git users are not going to participate in culture war
debates in the mailing list. It is usually a tiny vociferous minority
that drives these kinds of discussions (and if it has to be said; I
don't mean any negative connotation, simply stating that they are the
opposite of silent). Even the users that are supposedly the target of
these progressive changes (e.g. black users descendant of slaves) will
probably not care at all about such changes, because they are part of
the silent majority that uses common sense and understands that
nothing ill was intended by the word "master". It is usually white
people that "defend" these "oppressed minorities" without their
consent, or need.

Did we hear the testimony of a single black person that was offended
by the word?

The intellectual Gad Saad wrote about a disorder called Munchausen
syndrome by proxy, and how it explains what many modern activists do:
[7]

"Munchausen Syndrome is where a person feigns illness, or medical
conditions, to garner empathy and sympathy. Munchausen Syndrome by
proxy is when you take someone who is under your care (your biological
child, your pet, your elderly parent) and then harm that person or
entity that’s under your care so that you can then garner the empathy
and sympathy by proxy."

Nobody affected by this change actually asked for this change, it is
being done *preemptively* just in case some actual target user might
find it offensive. The only people actually being offended are
offended *by proxy*.

I recommend the book The Parasitic Mind: How Infectious Ideas Are
Killing Common Sense, which explains this and many more problems of
the current culture war.

I have a lot more to say about this, believe me, and perhaps I will do
so in another thread, but for now the summary is this:

We are going to *actually* harm true users that understand the intent
behind the word "master" hoping we might benefit marginally some
imaginary users.

And if we don't warn them about the upcoming change, before the change
is actually implemented (as we did with push.default), they will
complain. Because unlike the users that are descendants of black
slaves who misinterpret what Git developers meant by the word "master"
and get offended as result--they are *real*, and they are a lot.

Cheers.

[1] https://lore.kernel.org/git/xmqqioq12eif.fsf@xxxxxxxxxxxxxxxxxxxxxxxxxxx/
[2] https://www.youtube.com/watch?v=kzKzUBLEzwk
[3] https://lore.kernel.org/git/20200614190842.GC6531@xxxxxxxxxxxxxxxxxxxxxxxxx/
[4] https://en.wikipedia.org/wiki/Wikipedia:Assume_good_faith
[5] https://rationalwiki.org/wiki/Logical_razor#Grice.27s_razor
[6] https://plato.stanford.edu/entries/implicature/
[7] https://thoughteconomics.com/gad-saad/

-- 
Felipe Contreras




[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux