Discussions: Flat or Threaded?

Clay Shirky's classic articles on social software should be required reading for all software developers working on web applications. As near as I can tell, that's pretty much every developer these days.

This is a companion discussion topic for the original blog entry at: http://www.codinghorror.com/blog/2006/11/discussions-flat-or-threaded.html

"** Quoted snippets are helpful if used in moderation. Unlike Joel, I don’t have total recall of the last five posts I just read; judicious use of a few contextual quotes helps me keep the rest of the conversation in my brain. "

I agree

Regarding quoted snippets, I think it also depends on the expected amount of traffic and how far back the item you are quoting is.

For Digg and Slashdot, it makes sense. For the typical blog that has at most 10 to 20 comments, I don’t think it does.

Notice I didn’t need to quote you, it was enough to start this comment by saying “Regarding quoted snippets” and it flows more like a natural comment than a

Point By Point

By Point

By Point

Attempt to dismantle an argument.

I meant “flows more like a natural conversation”, not “flows more like a natural comment”.

I should clarify, I do agree that very judicious snippet quoting is useful for high volume conversations or when referring to a comment 10 comments in the past.

But I think Joel’s point is whether or not the forum software really needs to support that with some sort of “quote” button.

If you really need to quote a snippet, you can just select the text to quote and cut and paste it into the text box. Sure it’s a pain, but that helps make sure people do it only when necessary.


Agreed - in theory, branched threads are useful for a tangent, however unless you go into each branch, you have no idea what the tangent was!

The world is flat, and I like it that way! And any time you can fit in the word discombobulating within a post makes it even more readable :slight_smile:

I think that Digg has hit the sweet spot with their comments system.

They support only one level of threaded commenting, but all the comments appear on the same page. I dislike the slashdot method of commenting, and the karma system means anybody that isn’t a zealot will get modded down completely.

It really depends on the amount of comments that will be displayed. For a small amount of comments, threads just get in the way. For 100+ comments, Digg’s system seems a good choice.

That said, I hate digg. =P

I also think the main pointa about quotes of previous comments in discussions is to quote the parts that are relevant for understanding the new comment.
A “Quote” button makes it far to easy to quote the full text of the previous comment (probably with even more nested full quotes of other comments) and just adding some short comment to it (like the famous “I agree”).

I’d agree with much of that, except the lack of quoting. Whilst it is true that it’s much nicer to keep it flowing like a normal conversation, on a noisy post it really is difficult to keep track. As much as I’d like to remember what somebody was saying (and more importantly who the heck said it), chances are 5 people have said similar, but different points. This means to keep it flowing like a conversation, and give enough relevant details to make it clear what post you’re talking about, you’ve got to effectively paraphrase the entire post. On the occasions where people have done that, I find myself scrolling back up through the page to see what they said anyway, albeit just a glance.
My preferred method of attack to this problem is collapsible quotes, collapsed by default. If I need to see what they were reading, pull down the quote and see. But that adds more UI, and client side scripting.
Another solution is to provide an easy way to link back to previous posts. That way the quotes don’t clutter for those who don’t need them. However, you can’t provide an easy way to return without client side scripting, or needles page reloading, and it comes with a lot of it’s own problems.

Dear god, threaded views are horrible. Whenever you’re googling for the solution to a problem, you inevitably come upon one of those hideous threaded formats where you have the “Next In Thread” “In Reply To” links, which seem to be totally frickin random.

Without threading, it ends up being really difficult to reply to someone and make sure that they end up reading it and/or that other people know what you’re replying to. The only thing you can do is to quote everything, and then reading the comments becomes annoying, as there’s duplicated information everywhere filling up the page. When very little discussion is intended on a particular article, flat views might be okay, but for anything more than a handful of replies, you really ought to organise them structurally somehow.

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.

Then why doesn’t this flat blog post allow me to quote a post and/or add tags? For example, if you respond to this post, which was in response to my original post, how can I just read that information?

Yes I agree, attributes beat hierarchy, but flat posts typically do not have attributes. It becomes mundane to try and find/follow something. At least in a hierarchy style there is some built in attributes (this post is linked to your post).

When you have a large amount of responses in a flat style, it basically becomes noise, and starts to lose context. Albeit, you have get that on threads that don’t follow the thread.

What we need is a attribute based hybrid, much the way that GMail works. Allow me to respond to your post, but know that it came from your post so that is a conversation. But allow me to search through it and view it as a flat style too.

very interesting topic :wink:

well, actually, I like the slashdot way of threading comments. It’s biased, but it’s easier to read, actually.

I usually “talk” with several people using gmail and everyday I read a single daily topic with 100+ short messages, just like a chat, and it’s exactly the flat model you said, because the conversation flow inside a single message subject. Probably many people use gmail as a chat tool because they’ve attached a gmail talk and an ajax updater, and this work pretty well

I think that the flat model is better suited for discussions where you don’t need any information order, for example, blog comments, or daily chat.

But for FAQ forums, I can’t say that there is anything better than threaded comments. You want an information, and it’s specific and you want it fast.

So I think they are different things.

best regards


I agree wholeheartedly.
I’d only make one exception, though: http://reddit.com seems to use threaded discussions well, and seems to make them work (I specially like how they put the most interesting comments on top, and hide the trollest ones).

I find flat comments much better, as you can read an entire page of 15-20 posts with one click. Threaded comments require a click for each post, which takes far too long for my tastes.

Wow – for once I’m in violent disagreement with Jeff.

I think threaded conversations are /essential/ for decent online disussion and conversation.

Unless you have threading, you can’t:

  1. Easily and clearly respond to a specific post
  2. Easily know to which post any given post is responding to.
  3. Follow a conversation between two or more people.

Jeff argues that branching is a problem, but branching is what makes communication possible! If you can’t branch, you can’t easily converse.

Perhaps the issue isn’t threading, but instead the execution of threading online. Reddit has very nice online threaded discussions. Give that a look.

We’ve had great luck with threaded discussions with customers on our private support forums. Newsreaders present the threaded discussions in a treeview, allowing for true online conversations with no wondering who is responding to whom about what.

Nick Hodges
Delphi Product Manager

I’m not sure I agree 100%. I personally find it much easier to read threaded conversations in general. The problem is not the threaded model; it’s that the threaded model on websites sucks. It’s just way to uncomfortable, even (particularly) with collapse/expand DHTML tricks.

Threaded views are best left to smart clients instead (where a flat view would be horrendous).

The thing is, many of those policies have fallen by the wayside or proved unworkable.

* No registration

No, and occasionally you get some troublemakers spoofing posts by known users. Joel has created a “recognized user” checkmark, which kind of amounts to after-the-fact registration.

* No user moderation

There is, now. Several users were chosen to moderate each of his forums.

* No email notifications for new posts

There is an RSS feed, though, which carries a similar risk of isolating users from each other by taking away the necessity to frequently check back with the forum.

* No posted rules

There are posted rules for the Business of Software and .NET Questions forums, though not for the main one.

* No support for quoting or reply shortcuts

People do it anyway by copy-and-paste, and frequently complain about not being able to see the post they’re replying to.

* No unread post shortcuts

No, but the board does indicate (by link color) whether there are posts you haven’t seen yet in a thread.

* Arbitrary deletion of off-topic posts 

There is, both automatically by a Bayesian spam filter, and manually by the moderators, but “arbitrary” is a funny thing, isn’t it? You can never catch anything, so some egregiously offtopic or offensive posts hang around a long time, and then people wonder why their much more benign post was deleted.

I agree with much of what Joel wrote in that article, but I think what his board has demonstrated is that the problems he wrote about don’t arise from the threaded nature of Usenet discussions, but from the nature of asynchronous, text-based conversations. If you don’t give people the ability to quote in their replies, they’ll do it anyway, and complain about having to do it manually. I don’t think there are any easy answers to this problem, and I think time has shown that 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.

Hmm, not sure I agree with you on that one. There are extremes, sure threading CAN go wring (/.) and become cumbersome but so can the flat style with 200+ messages with 6 or 7 conversations going on between them. What I see a lot in flat-style fora, is posts with grouped comments/answers to any number of previous posts. The result ressembles a hashtable (distribution wise) with references to itself (existing items), and that is by itself a treestructure.

Usenet handles the problem fine, natively and gives you the choice of sort machanism (at least in Thunderbird). The problem is the relatively static/flat nature of the browser, there have been Ajax atempts, but it still does not feel natural.

The pseudo way digg handles it is a middleground but ultimately it suffers from the same flat-style issues as mentioned. I like the context/semantics extracted so in most cases, I favor threading (though not joining :wink:

Addendum to my previous post to illustrate a point. Who am I answering, Jesse or Jeff? How long did it take you to determine this?

I like threading because different people participating in the discussion often have different ideas about what the main topic is and how to go about interacting around it. Saying that threading is bad because discussions don’t work that way is like saying that online discussions that go over a day and lack the immediacy of IM is bad because discussions don’t work that way. Also face-to-face discussions can’t involve the number of people that online discussions do and to the extent that they can involve a substantial number of people, they very often don’t.