Social coding platforms are poisoning the developer's experience

6 minute read Published: 2021-04-19

Or: How removing peoples' avatars surprisingly improved my productivity and reduced my mental strain.


2021-04-20 UPDATE: I didn't even finish writing this article that Github announced another anti-feature: an achievements panel. Great to see that now Github will become a role-playing board.


I've been experimenting for the last few months how removing a specific feature of some from websites/chats impacts my productivity. This feature is the avatars of people hanging there.

It started months ago when I realized I had difficulties focusing on my work when I was on a Github repository (for example looking for documentation or going through the issue tracker to solve a problem).

For example, let's have a look at this JavaScript web framework. To me, it's difficult to find in that page the link to the API documentation (after a few jumps, I'm am taken here).

To give a counter example, let's have a look at systemd. The homepage of the project looks like this and I have a clear, direct link to the documentation - a list of man pages - which I find much more relaxing (here's the web version). It's a wall of text with just what I need and nothing more.

When I am trying to solve a technical problem, my thought process sometimes involves diverging from searching the main solution to explore "branches" and attack the problem from various angles or gather tangential data points. I cannot explain in more concrete terms without an example, but I think that any developer can relate to this thought process.

One day I was puzzled when I realized that going through this mental workflow on Github or Gitlab was strangely tiring, I had found myself wasting time on "unproductive stuff", such as checking who starred a project or visiting other people's profiles, doing dumb things like enlarging their profile image.

I'm open to debating that this could be a fault of mine, that I am too easily distracted, but when I am looking for a solution I have to visually scan a lot of stuff and filter out the uninteresting bits. This is overly complicated by the background noise of social coding platforms. Github, after the restyling of last year, got even worse. If you look at how Gitea look like (the UI mimicks the old Github) it's IMO much better than Githubs').

In order to quickly test what a slightly decluttered UI would look like, I've blocked loading all avatars. That's very easy to do, a quick way could be to block them in my /etc/hosts:

127.0.0.1 avatars.githubusercontent.com
127.0.0.1 avatars0.githubusercontent.com
127.0.0.1 avatars1.githubusercontent.com
127.0.0.1 avatars2.githubusercontent.com
127.0.0.1 avatars3.githubusercontent.com

Here's a comparison of the same portion of a page with and without avatars. The Github project is the web framework mentioned before:

This can be also accomplished with any "hacking" tool of your choice (example: a PiHole, provided everyone in the same network agrees with your policies).

So, I think I'm onto something, but I want more. Wouldn't be great to completely remove also the alt attribute of the images? uBlock Origin to the rescue! With its "element picker" I can precisely select an element of the DOM and filter it out.

Here's the result by adding this simple rule:

||avatars*.githubusercontent.com/u/*$image

So I went into a frenzy and removed all the junk I don't want to see, adding more rules:

github.com##a.Link--muted.pinned-item-meta:nth-of-type(2)
github.com##a.Link--muted.pinned-item-meta:nth-of-type(1)
github.com##.mt-md-0.mt-2.flex-md-order-none.flex-order-1 > .mb-3
github.com##.mt-md-n5.h-card > div > .hide-md.hide-sm.clearfix.mt-3.pt-3.color-border-secondary.border-top

And here is a better profile page:

Hey Nat, don't need to thank me, send me an email! I have a couple of tips on how a product geared to get shit done could look like! Ahr Ahr Ahr

The profile page now is much more relaxing without the repository stars, followers and number of sponsors. "Followers" and "stars" are red herrings, shift the focus of the visitor to useless things: instead of checking the code quality and the documentation, people are more attracted by this sort of herd judgement and first check how many "social points" the repository has.

Not everyone uses these features like Github intends to: people sometimes leave a star as a form of bookmark or follow each other as a mean to getting "street cred" ("I have X followers, I'm cool"). The social mechanisms are perverse and rarely match the goals of a platform that should help focusing on getting things done.

And until now I didn't even mention how the Gitlab UI which is utterly terrible: slow, cluttered and barely usable. And I want to mention that without JavaScript it's fully and completely unusable (at least Github lets you see something also without JavaScript).

Gitlab's UI is so broken that I won't even spend time decluttering it with the picker tool of uBlock Origin: I'll just won't use Gitlab. I am sorry about that because they are the only "big" contender to Github and I wanted to support them, but not with that UI. In the end, I'd rather support projects like Sourcehut, a developer platform with its own defined identify and none of this bullshit.

Before closing this rant, I wanted to briefly mention Violentmonkey, a Firefox extension I used to use to heavily mangle the HTML of a page once loaded in the browser (by running any custom JavaScript); but unfortunately it stopped working on Github due to conflicts with the security policies of Firefox.

So, in the end I invite you to think about it and try to answer these questions:

1. What do you look for in a platform that has "getting stuff done" at its core?
   (Github's claim in homepage is: "the largest and most advanced development
   platform in the world")

2. How much time are you really spending there on being productive or just
   fucking around?

3. How much weight do you give to the social score of a code repository (stars
   and followers)? How much do they influence your judgement?