Redesigning Facebook


So I decided to redesign Facebook. Because, you know, it’s a beautiful summer Saturday afternoon, what else would I do with my time?

I’ve sort of grudgingly started using Facebook, but I’ve never really felt like the interface worked for me: the newsfeed churns by so quickly that unless you check the site obsessively you can easily lose track of who’s doing what. Plus there’s the minefield of questionable third-party applications, games, and other irritations to skip past.

So like any good UI nerd, I decided to fix it. This has taken the form of a GreaseMonkey script, for the time being, which if you’re interested in following along, you can install by clicking this link. (It will only work if you are using Firefox and have GreaseMonkey installed, of course.)

(Update: if you came here via a facebook link, you’ll also need to close the oh-so-helpful “you came here via a facebook link!” frame first for the script to install. Marking that as another possible feature addition…)

Here’s an overview of what the script does:

Eliminates a lot of crap

Ads: gone. Third-party applications: gone. Quizzes: gone. I know some people enjoy constantly being kidnapped by mafia vampires or planting scrabulous puppies in their superpoke gardens or whatever. I am not one of those people, and I got tired of clicking the “Hide” button next to each and every individual facebook application.

(The current version of the script also removes notes, photos, links, basically everything but status updates. I’ll probably bring them back in a future version.)

Changes the sort order of the newsfeed

If you don’t check facebook constantly, it can be difficult to tell what people are talking about: they’ll make an update that refers to an earlier update which you missed and is now buried three pages deep.

This script groups all status updates from the same person together. So if you have one of those friends who updates his status a dozen times a day — and you know you do — all of his updates will be shown grouped together. The “Show older posts” link at the end of the feed still works, but instead of tacking the newly loaded posts onto the end of the list, it sorts them in with the existing ones. The idea is to make it easy to see what any given person is up to without having to scroll up and down through the feed to find all their separate posts.

Drastically simplifies the comment interface

Comment threads are now hidden by default, profile pics are gone, the “View all _ comments” thing happens automatically. This was a lot more complicated than it sounds.

(Someday I am going to make a concerted effort to learn how greasemonkey’s event handlers interact (or more often fail to interact) with a page’s built-in ajax events. Today was not that day; I threw in the towel and used setInterval to just constantly poll the page for changes. But it’s okay, I kept my nerd cred by wrapping that setInterval in an overcomplicated daemon object.)

That’s about it. The script is pretty far from releasable as is — for one thing posting a comment throws it into an infinite loop, which is, you know, bad — but if any of you play with it at all I’d be interested to hear comments or suggestions. Hat tip to Alberto Gonzales for suggesting the name “Facebeck”. My working title of “CleanUpAllThatGoddamnFacebookGarbage” was maybe more informative, but lacked concision.