Home jorge.ortiz@gmail.com

Feeds and Flows

28 Dec 2010

Feeds are everywhere these days. The most famous feeds are Twitter's Timeline and Facebook's News Feed, but every new social or real-time app includes one or more feeds as key parts of their product. Feeds might seem like a new trend, but they've actually been around for a while. I'd argue that chat rooms, IM conversations, and email inboxes are all examples of feeds that predate Facebook or Twitter. Despite their popularity and importance, I've yet to see any attempts to classify different feeds or even to develop a common vocabulary about the characteristics of feeds. I'll attempt this below, by classifying feeds based on two characteristics: source and focus.

Source and Focus

A feed's source is where new content appears when it is published to the feed. A top-sourced feed publishes new content at the top of the feed, whereas a bottom-sourced one publishes it at the bottom of the feed. When new content is published to a feed, the feed must decide where in the feed to focus on given the new content. In a top-focused feed, focus stays at the top of the feed (regardless of where new content is published), whereas a bottom-focused feed keeps focus on the bottom of the feed (also regardless of where new content is published). Together, the source and the focus determine the flow of the feed.


The most famous flow—reverse chronological or reverse chron—is a top-sourced and top-focused flow. It is top-sourced because new content appears at the top of the feed, and it is top-focused because when new content appears (typically by refreshing the page), focus stays at the top of the feed. Reverse chron is the standard flow for blog home pages, the standard Timeline View on twitter.com, the Facebook News Feed, most email inboxes, and SMS interfaces on at least some phones (old Nokia phones come to mind).

Another common flow—which I'll call chat flow for lack of a better name—is the bottom-sourced and bottom-focused flow. In this flow, new content appears at the bottom of the feed, where focus also stays. This is the flow typically used for chat rooms, IM conversations, the Unix tail -f command, and SMS interfaces on at least some phones (most notably the iPhone and Blackberry Messenger).

Less common—and as-yet unnamed, but I'll call it the third flow—is the top-sourced, bottom-focused flow, where content appears at the top, but focus stays at the bottom. Notable examples of this flow are the Tweetie for Mac and Twitter for iPhone (née Tweetie for iPhone) apps. In these apps, focus stays on the last tweet you read (roughly, the "bottom" of the feed) and new tweets appear at the top of the feed, without moving the focus.

The last flow—which I can probably call chronological or chron for symmetry—is the bottom-sourced, top-focused flow. This flow is probably the one that has been in use the longest (think of a standard list of historical events), but isn't commonly used in social/real-time apps. The one example I can think of is the Facebook Birthday Feed.


Despite being a very primitive way to classify feeds, this gives us a vocabulary to talk about them and a framework to think about them. For example, flows where the source and the focus are the same (reverse chron and chat flow) give importance to recent content at the possible expense of missing older content, whereas flows where the source and focus are different (chron and third flow) prioritize reading all the content at the expense of not being immediately aware of when new content is published.

Given that they both emphasize recency, why choose reverse chron over chat flow or vice versa? Chat flow has the advantage of presenting content in chronological order, so if several entries in the feed are related their order makes it natural to read them in top-down languages like English. Reverse chron, on the other hand, discourages reading related items in chronological order. This discouragement is probably fine for unrelated blog posts, but contributes to the awkwardness of reading conversations on Twitter. So why do blogs, Twitter, and Facebook choose reverse chron over chat flow? I suspect the nature of the web discourages the use of chat flow; it's unnatural to make content flow upward in HTML. (Indeed, the examples of chat flow that I can think of are all native apps, or web apps trying to mimic native apps.) Twitter might also have been mimicking the SMS interfaces of the time.

What about reverse chron versus third flow? Proponents of reverse chron like its focus on recency, but all of us who lack the discipline of Inbox Zero have had the experience of losing track of an important email because it fell too far down our inbox feed. Tweetie seems to have chosen third flow as a direct response to the weaknesses of reverse chron, making it much easier to read every Tweet. Depending on your approach to Twitter, this is either a boon or a mistake.

Likewise, Facebook seems to have found reverse chron to be inadequate for its Birthday Feed. From a technical standpoint, it would have been easier for them to insert birthdays into the regular News Feed, but from a product standpoint it would have been a mistake. If N days before a birthday Facebook inserted a birthday notification into the News Feed, it would fall down the feed (become less prominent) as time passed and the birthday got closer. They could conceivably bump birthday notifications the top of the feed with every passing day, but then they would be trying to swim upstream, which seems unnatural. Chron flow solves these problems: new items (birthdays N days away) appear at the bottom of the feed (least prominent), and as birthdays get closer they rise up the feed (becoming more prominent).

Open Questions

This discussion focused solely on vertical time-based feeds. Are there non-vertical feeds? Are there feeds that aren't organized based on time? What other characteristics of feeds should we pay attention to? (Some that come to mind: When do items get added to a feed? When do items get removed from a feed?) Are there more nuanced differences between reverse chron and chat flow? Does anyone else use third flow? Did I miss any prominent examples of the other flows?

If you have answers to any of these questions, let me know.

— Jorge Ortiz