a companion discussion area for blog.codinghorror.com

Discussions: Flat or Threaded?


I like the Google Groups approach. It lets you scroll through a flat model while showing you in a tree off to the left where the message fits in in the reply hierarchy.


slashdot’s new beta nested/threaded comments system is way better than anything else I’ve seen. Realtime expanding and collapsing of threads, yet still retaining permalinks to each comment/parent allowing you to throw conversations into new tabs. Much better than flat view, by anybody’s standards.


Daily I search for the answer to some code problem, and the answer is usually buried in some type of forum system. There’s something about clicking “all messages in thread, reverse-chrono date-sort mod52” that makes my brain do flips, but is the correct “classic thread view” option I want.


I agree!

Can you tell from my comments so far of what I am referring to? If this were a threaded discussion, you could! I think a flat view is worse than a threaded view. And quotes add too much noise.

A threaded view more closely imitates how humans react because, in general, people communicate with only one other, or one thought. The problem is that the UI of the threaded view is cumbersome. The nested comment structure helps in this regard, but I still like the threaded view best so I can scan the subject lines. When I chose a discussion board, one of my criteria was that the user could choose between threaded and flat views.


Threaded conversations simulate the social dynamic where one or two people break off from the main conversation and discuss some interesting side issue, ideally related to the thread topic.

No threads is like forcing everyone to sit in a circle, facing each other, taking turns to add a new comment to the discussion. Not a very natural way to run a discussion, outside of meetings.


Web forums are horrible. I prefer the chaos of usenet, where at least I can see the thread of discussion, skip entire subthreads if I so choose, and killfile the people who aren’t worth the time it takes to read them. I regularly switch between threaded and chronological view, and I don’t have to wait on a remote server to reorder the posts. There are numerous clients for usenet, so I can choose one I like instead of being constrained by the webmasters choice.

Usenet is imperfect, but for my taste it sucks less than any web forum software I’ve seen.


The thing is, many of [Joel’s discussion board] policies have fallen by the wayside or proved unworkable. […] Joel’s proposed solutions, while effective in some respects, have created their own problems and his board, like every other web forum, has its own unique antisocial behaviors that it accidentally encourages

I’m not entirely surprised. I saw that there are user moderators already.

I like the Google Groups approach.
http://reddit.com seems to use threaded discussions well
slashdot’s new beta nested/threaded comments system is way better than anything else I’ve seen

Google Groups, which I just revisited, presents a flat view of threads:


In my opinion, the situation is no better for client apps. I don’t like threaded conversations in my Outlook client any more than I do on the web.

I have a question for threaded view fans. Other than the three mentioned above, what other threaded views “work” for you guys on the web? Or in client applications? Also-- provide links!


“As near as I can tell, that’s pretty much every developer these days.”

I find that comment profoundly depressing. Forty years of advances in practically every field of computing, and now the majority of development time is going into HTML-generating database filters.


Jeff, I assume you automatically sort mail in your inbox and keep categories of your bookmarks, possibly subcategories? And at the Christmas party you did not exercise a round-robin algorithm when talking, everyone having to overhear potentially boring/lame/irrelevant issues?
Why should this naturally human composition/divide-and-conquer idiom with a hint of dynamic grouping not apply to asynchronous conversation in writing? Are we talking about that it CAN’T be done UI-wise or that it SHOULDN’T be done? You seem to advocate for the latter.


“Can you tell from my comments so far of what I am referring to?”

If you don’t reference the person you are responding to, either with a quote, by name, or with context clues like Haack did, then you are the person lending to the confusion. If you simply say “I agree” then what you are doing is responding to the original post(in a forum thread, or in this case, the blog post).

Threaded discussions have always made a conversation completely unreadable for me. This is especially the case in a discussion that has several hundred replies.


Threaded comments don’t require a click per post. You can simply indent posts and place them below their immediate parent. (See reddit for a good example of this.)


It doesn’t help either that so many threaded discussion forums are absolutely awful in other ways, too. Ever seen Blackboard?


I agree with Tomas Restrepo. The problem with threads isn’t threads, it’s web boards.

Here’s an example of the power that weeding through high-volume threaded discussions with a good smart client (in this case, a real email program unlike the joke that’s bundled with Outlook) gives you:


The same principle applies to Usenet: sure the medium has deep structural problems, but it also has amazingly powerful smart clients that more than make up for it.

With web boards, you tend to be stuck with whatever half-assed, amateurish crap the author slapped together.


Pretty much every developer is working on web applications? huh? Oh, that explains why the local store has absolutely no shrink-wrapped software, and why device drivers actually get written. How many of the Vista team were working on web applications? I think there are a few like me still, who develop windows services, client/server (without web), and desktop applications


My problem with flat discussions is that it combines two flaws: It’s completely disjointed, and it’s too time-dependent.

It’s disjointed because conversations naturally wander, so if you want to follow the 100th message of a post, you better have read all previous 99 of them to be sure you understood. In practice, of course message #100 doesn’t fully depend on each of the previous 99 messages, but because you can’t predict which it is in advance, it in some sense still does.

It’s too time dependent because the “solution” that people naturally put in place is to only pay attention to the first and last posts, on the grounds that that’s all the context they can have. So if you come to a conversation late, you basically have to make a now-off-topic “reply” to a message that may well be 50 comments up from your own.

I think the real situation here isn’t that “flat is the answer” or anything that simple; the problem is that all online interaction is unnatural. It’s a question of how you want to mold that unnaturalness and how you want it to affect your community. “Natural conversation” isn’t an option.

I’ve been implementing a comment system recently, and with malice-aforethought I’ve made it threaded. This is because I intend to inject sanity and civility in another way.


Wow, I think I completely disagree with almost of those points.

Threaded and flat discussions both have their place. Flat discussions work very well for a relatively small number of short comments. However, in my experience they are completely inadequate for large volume topics or topics which require any sort of depth of debate.

Pick a random forum and look through the length of the comments. It has been my experience that flat views actively discourage lengthy informative posts and discussions of any significant depth. It seems to lead to more of an informal conversational style, with posts replying to the topic in general, but never addressing specific concerns or questions of any one user. I believe you can see this on very forum - most replies (including this one) are the simple immediate response to the original blog. While it keeps things topical, it also inhibits depth and debate between members.

A threaded discussion does have a bad tendency to go off in multiple sub-directions, but those minor tangents are more likely to bring out specific points and counterpoints. There is more civilized debate and less shouting in the commons. Also, as one does not have to scroll through every mountain of text to post, there is more encouragement to write something long enough to provide significant information instead of a single small anecdote or opinion.

That’s been my experience anyway. In any case, it seems a well designed web app could switch between the two on a user’s preference.


I like the ‘nested’ or indented view on /.

Another approach that I think might be useful, but have yet to see implemented anywhere, is a flat view, but you can click to quote someone in a new post, and links are added to both the new post and the quoted post to let you jump back and forth easily.

One problem I see a lot is too many categorized forums. There should be one big forum, and it should be easy to both start new topics and find existing topics by searching on keywords (call them tags if you want to be hip).


My girlfriend’s school’s discussion forum is threaded. During a class, they start 1 topic per class and 1 thread per student instead.

Oh wait, now we are back to that hierarchy vs attributes discussion again.


Here’s a link to the hybrid Google Groups view.


Here’s a semi-related article that also has indented threaded comments at the bottom:


I like Simon’s idea of limiting the indentation to one level. The comments at the above link are a dizzying mish-mash of alignments. It’s impossible to tell what is related to what.

Oh wait, now we are back to that hierarchy vs attributes discussion again.

It’s no contest. Attributes are almost always a better choice. Hierarchy is an extremely specialized tool that is, unfortunately, widely and promiscuously abused.