Subject: Re: The git spring cleanup challenge completion

From: Felipe Contreras <[email-masked]>
Date: Sat, 03 Jul 2021 13:16:16 -0500

Atharva Raykar wrote:
> On 03-Jul-2021, at 04:19, Felipe Contreras <[email-masked]> wrote:
> > 
> > [...]
> > Other than that, it's fair to say that *everyone* needs some command
> > aliases to use git. This past month shell completions have saved me, but
> > not completely. I can't imagine how a newcomer must feel using git
> > without any alias.
> 
> TLDR: I don't think young, first-time learners of Git would mind the lack
> of aliases. I cannot speak for people coming from other VCS's.

That's not the same thing. Of course a user wouldn't mind the lack of
certain feature if he doesn't know he is missing that feature in the
first place.

Humans went for thousands of years using luggage without wheels, does
that mean they "didn't mind" luggage without wheels? They had nothing to
compare it to, so they of course didn't complain, but that doesn't mean
they were "fine".

In order for them to know if they mind it or not they would first need
to try them.

> ------ Long Version -------
> 
> Hi, maybe I can help bring some perspective on how newcomers view and use
> Git. I help run an Open Source club in my University, and one of the first
> things we help a lot of new contributors with is teaching Git.
> 
> I have conducted multiple workshops over the last two years, so I have
> some idea of what the usual struggles and pain points are. I also have
> some recollection of what it's like being a new user.
> 
> Most of these new users have never used any kind of VCS before, so half
> the problem is the overload of all these new concepts of branches,
> checking out, staging area, committing, pushing, pulling, etc.

Sure, that's understandable.

> Users are not able to properly map the name of these commands with what
> it actually does. Most of the issues stem from trying to memorise these
> commands as a series of mantras and applying them without knowing what
> is actually happening.

I recall using git that way a long time ago.

> Users are confused about why there is an "add", and then a "commit".
> It seems conceptually similar to them. The difference between reset,
> restore, revert (and even rebase) is also a pain point, because those
> words sound very similar.

Yeap, I remember that.

> Combine the lack of understanding of what Git is actually doing, with the
> fear of losing work, and you get the perfect storm of a difficult
> experience.
> 
> For most new users Git is unusable, unless you explain to them the right
> mental model of Git being a graph of immutable commit objects with
> pointers to access their contents. In my opinion, trying to make this
> model more transparent to a new user is the best way to improve their
> experience.

Sure, I see those pain points, and I have sent plenty of patches to
improve that experience, but none of them have been applied.

> What new users do not have a problem with is a lack of aliases, because
> they carry no previous expectation from other VCS's, as Git is always their
> first one.

Sure, when they are learning git they don't need aliases, but after they
become fluent and can do some basic workflow without looking to cheat
sheets they *immediately* would benefit from them.

> I can imagine aliases like 'co' only adding to the overload of
> information if an instructor is not careful. FWIW, I have never seen a new
> user complain about the length of the typing, it's usually with the plethora
> of unintelligible (to them) options that each command has when they open the
> Git man pages, which adds more fear.

This is one of the reasons I suggested to split git into two binaries:
git for normal users, and git-tool for all the plumbing not many humans
use.

> I do not have an opinion about default aliases, I only had a narrow point,
> ie, on the list of impactful things that helps Git newcomers around my
> circles, aliases would not score very high. Those who love the command
> line among the more enthusiastic learners will set those aliases themselves
> anyway.

Sure, initially aliases would not help them very much, but after the
initial learning period when they actually start using git for real,
then aliases help tremendously.

Cheers.

-- 
Felipe Contreras