On the GitHub Dashboard
Try telling these icons apart:
*  *  *  *  *  * 
Now imagine them as white icons on purple (
The people at GitHub somehow thought this was a good idea.
I can’t get the entities to work right now in #1, but that's not important. Let me illustrate the uselessness of GitHub’s design through three images of a user’s activity feed (mine):
First, what it looks like in full:
Already horrible, isn’t it?
Pop quiz! Tell me the number of times a new repo was created by me in the displayed period of time.
Exactly. Why must a commit look so similar to the creation of a new repo?!
Let us hit this point home by only displaying the icons in my activity feed this time:
You can tell without a problem that I started following someone—although you have to squint a little to see what the icon actually shows—but God help you, if you want to see what else I have been up to lately. Maybe the like the typographical formatting of the textual information may be of help here, but alas.
Ignore the icons for now. Maybe I am scanning my feed the wrong way. What does it look like if we only use the textual information to quickly ascertain my recent acitivity:
WHAT THE HELL AM I SUPPOSED TO BE LOOKING AT?! Will the madness ever end?!
Can anyone at GitHub say with a straight face that they have tried to wrap their minds around what information users prioritize and desire when looking through an activity feed? I can only imagine that their dogfooding involves using their API to display the information through something humane like one of those services 37signals provide.
This being my feed, does the first piece of textual information really need to be my name? I mean, that should be implied in most cases.
And what’s with the SHA string in the bottom left? I, being the ignoramus that I am, do not have a photographic memory of what my commit SHAs map to, and even if I did, there is no way to scan them quickly; one way to do so would be to generate a background colour for them computed with their SHA. I am sure this must be of some use to some people, but even they must hate the feed design. And for those of us who don’t use the SHA, it completely disrupts the one most important thing in commit updates: the commit message.
Disregarding the horrid presentation of text, what are the visual cues that let us tell a commit update apart from a new repo or a new “follow”?
How to Improve It?
Take on of the example commit updates:
In one line of a commit update, GitHub manages to cram these pieces of information:
- name of the user whose activity you are reading anyway, and whose identity you can ascertain by the avatar in the dashboard feed
- his or her action (verb),
- branch name (unlinked),
- relative date
A generic update usually looks something like this:
<user_x> <verb> <object> +
on/at <user_y>/<repo> <rel_date>
And it’s funny, because even in the dashboard that contains even more information with all the avatars and what not, the verb appears to always uniquely describe the action. Here’s a quick recap of what has gone on in my dashboard, expressed through verbs only:
Is there really anything ambiguous about these? They seem like the perfect distillation of the update. Just for good measure, these verbs represent:
- pull request
- starred repos
- branch merges
With a single verb, the textual information can accomplish the same thing the icons aim to do—with the proper emphasis.
Frankly, I would rather that each action did not have an icon, but just one simple, unique coloured box—much bigger than it is now. And that the colour be the same as a
font-color for the verb describing the update in the text. Already then would we be much better off. I would actually be able to tell a commit apart from the creation of a new repo, as trivial as it sounds. (Speaking of which, were you able to count the number of repos I created?)
And this is not to mention all the cruft that could and should get quite the make-over. If I were to suggest something, copy the hell out of Twitter. We may take the design for granted, but it is still an amazing accomplishment that manages to cram name, handle, tweet, relative date, and more into an unobtrusive design that lets you scan the timeline effortlessly.