41
loading...
This website collects cookies to deliver better user experience
git blame
to a neutral equivalent (e.g. git author
or git inspect
). I argue that the use of git blame
primes workplaces and teams for blame culture and contributes to unhelpful feelings of shame. The language we use shapes our cognition, feelings and behaviours in small but systematic ways, and it is for this reason that I argue renaming the otherwise useful feature git blame
is long overdue. I also investigate the source code of git in an attempt to understand how the feature got introduced, and connect with its author to find that he, too, wishes the feature was named differently. Git blame is a git command which reveals what revision and author last modified each line of a file.
git blame
, subconsciously adding the tiniest bit of additional frustration to an ever-growing stinking pile of frustrations upon each discovery of me as the culprit. In 21st century language, I'd summarise my feelings about learning of git blame
as follows: 👀. If you're asking yourself, why would the feature be named blame
instead of author
, when it primarily gets used to identify the code's author, then you and I are asking ourselves the same question.
git blame
shouldn't get used with the intent of assigning blame within teams. A big assumption to make, that I bet some teams with archaic or authoritarian work philosophies would disagree with. But philosophical differences regarding effective collaboration are beyond the scope of this article. git blame
to find the code's author in a blame-free context. Great. But even so, 2 issues remain: git blame
as git author
, when in fact, the feature itself could just be named git author
in the first place? git blame
should be allowed to peacefully continue existing and priming workplaces for blame culture. alias
feature that allows you to replace any command with another. Technically, nothing's stopping me from renaming git blame
to git candyfloss
. But the feature is ubiquitous and difficult to avoid, so creating an alias in my local device would barely reduce my exposure to it. git annotate
is another git command with nearly the same functionality. Whilst git annotate
doesn't differ from the criticised feature by much, it doesn't solve the issue for the exact same reasons described above. git blame
is worth discussing, let's now delve into its history. “The in-joke was that I name all my projects after myself, and this one was named ‘Git’. Git is British slang for ‘stupid person’,” Torvalds tells us.
git blame
was the result of the same strain of dark humour? Maybe a seemingly innocent but really quite insensitive joke that feels so on brand for the Linux creator's past? I say past here, because the man is apparently evolved now. git blame
would have been reconsidered. I'd say, it's about time we retroactively abort it.git blame
started as a joke is, in fact, completely wrong. But let's dig into how I derived at this sobering conclusion. git blame
was introduced. The beauty of git itself being an open source project made with git, means that anyone can check out who authored which changes when.git log --all -p --reverse --source -S 'blame'
.git annotate
to produce what we now know as the git blame
output, based on CVS itself supporting an annotate
command. Neither of the commands existed in git at the time (although now, they both do). git blame
was the result of a joke or an intentional, serious, naming decision. But from reading through the documentation, it started seeming more and more like git blame
was the result of a work ideology that starkly departs from mine, and embraces a culture where assigning blame is the norm and tolerance for mistakes is scant. git blame
implementations. Then, 2 people independently created their own versions - one of which became git annotate
, named consistently with SVN, and the other became git blame
.+
+ A: 1 2 T 4 T 6
+ / \
+O: 1 2 3 4 5 6 M: 1 2 T 4 M S
+ \ /
+ B: 1 2 3 4 S S
+
blame
is likely the result of 2 things: the word's variable naming utility and the collective mindset at the time. "In hindsight, I should have taken the opportunity to come up with a better name, e.g., "praise" which has been suggested by others."
blame
in a version-control context existed elsewhere prior to git, because it is a succinct descriptor, and a reflection of the collective prevalent mindset at the time that no single individual is responsible for. git blame
feels easy to brush off. Once the initial twinge of surprise at discovering the feature subsides, it's easy to go back to work and never question it again. But as I've explained above, the language we are exposed to continues to affect us in subtle but real ways. git blame
on any one person might be negligible, its cumulative effect on an entire industry that encounters the feature every single day is significant. Over time, tiny amounts of shame and hesitation encountered by millions add up to a mountain of innovations foregone. git blame
exists. To those who do, I'd say: get with the times, folks. Being a dick is 2000 and late.