a companion discussion area for blog.codinghorror.com

Web Discussions: Flat by Design


I think you mean “exit stage LEFT.” (from the site/page/monitor’s point of view).


Why not take the best of both worlds? Set up a local news server, build a web interface on that and allow NNTP access to power users.


“To find out, I need to collapse and suppress dozens of random meaningless tangents, and the replies-to-tangents, by clicking the little minus symbol next to each one.”

The problem isn’t threading, but the fact that you’re using your mouse (probably because the website doesn’t really give you a choice). In any decent NNTP reader, navigating the tree structure is easy because you do it with a keyboard.


The deep threading always bothers me most when trying to read AMAs on Reddit. Great site. Thanks for sharing. Buy Followers Twitter


Flat discussions have their own problems. Threads go off topic in the middle. In a nested discussion you’d have some indication that it’s off topic, in flatland you don’t.

Such problems are easy enough to solve with a system that lets a mod or cohort of users to split off topic posts from the old thread. That’s a rare solution though. Instead we have dumb nesting that doesn’t require mods or complicated cohort voting to take action on reorganizing thread. The thread organizes itself into a nested mess.

So it’s not that we must choose between two unnaturally limiting options of nested or flat. Neither choice is adequate. They are just easy to implement, familiar to users, etc. Better ways of organizing discussion can be designed, we barely scratched the surface.

But more importantly, why are there so few attempts to improve the level of discussion online? Because outside of concrete topics like on StackOverflow it has little value. So they become some write only emotional outlet, a place to relax and not think too hard. Does it matter if those are flat or nested? Not really. And you don’t have to force a potentially productive discussion into the same interface, use right tool for the job and all that.


Like Twitter, I think that Youtube have a similar discussion model. Simple and effective.




I think the comments on this post are an excellent reason why totally flat threading doesn’t work.

It’s all about the value of the comments - are they there to enhance the original post, or just a way to give Internet trolls somewhere to post (or spam)?

Suppose I see a really insightful comment and feel compelled to challenge it or enter into a conversation, without some way to link my comment to another there’s no way to maintain a productive 2-way conversation. It just turns into a bunch of random people blurting their thoughts onto a site for no real purpose.

(PS: you appear to have a spam problem in your comments)


Comic Sans!?

There is a logic to it, to differentiate… but really?


@ping Thanks. That’s a very interesting implementation. One (obvious) observation is that it doesn’t show the overall timeline of the replies, only those within a branch.


I love Stack Overflow format and i have seen it in alternative places like the Codecademy forum. It looks to figure well, and it’s nice and easy.

Take a look leading web design company : http://www.esparkinfo.com/


@Jyrki Tikka (and others)

The problem is not the underlying protocol, the problem is that, as of right now, web interfaces for discussions are very bad.

The advantage of the tree structure is that it naturally allows the individual branches of the conversation to nestle together. The issue is that there is no good visulaisation of this on the web.

The standard NNTP client would adopt a 3 pane structure. Your list of subscribed newsgroups on the left. A collapsible list of threads in the selected newsgroup at the top and a reading pane for the individual message as the main pane.

There would then be a series of navigation buttons. Next thread, next message, next unread, prev message etc. It was quick to navigate up and down any particular branch of the thread. If a post lacked context (due to not quoting) it was quick and easy to move back up the tread to gather the context

Furthermore, because the body of the message and it’s position in the discussion hierarchy was separate the fact that a message was nested 15 replies in didn’t affect the messages readability in anyway. Navigating the hierarchy of messages was separate from navigating the messages themselves.


Let me see if I’ve got this right…

A group of friends gather at a dinner party. One of them ventures a topic of conversation: an opinion, a piece of news, or perhaps even some controversy. There are replies immediately. A healthy discussion forms and through the group’s exploration of the topic, other related ideas are surfaced. Some members of the group turn away to do other things (it is a rather large party), returning sometimes immediately and sometimes after a great amount of time has elapsed. The conversation continues. Upon their return, our flighty friends naturally desire to re-engage in the fascinating discussion. But not just on the topic currently at the fore! No, they want to engage on each of the topics which have been discussed in their absence as well. They want, in fact, to be able to participate in each of the discussions at the same time, like little Garry Kasparovs deftly carrying on multiple matches in simultaneous exhibition. Their appetites for debate and exploration are insatiable, and a speech of even moderate length is quickly picked apart into multiple sub-debates. The conversation fragments. It’s no longer recognizable as a single discussion, and only by reviewing the record could you identify the topic that seeded it all. It could go anywhere and everywhere, at the same time.

That’s tricky.


"Discussion trees force me to spend too much time mentally managing that two-dimensional tree more than the underlying discussion. "

I’ve often felt the same way. And since the trees can add new “branches” at any time there might be a whole other section you’ve never even seen because you are busy working down as opposed to out. The bigger the tree is the more complicated it gets to follow.


One thing that made Usenet’s threads work better than those of most discussion sites is that by default it showed the most recent messages at the top of the page.

On those groups that followed the practice of re-posting the relevent context immedieately below the new text, it worked even better, and made it pretty easy to stay current with multiple conversations.

Voice conversations don’t restart at the top every time you contribute to the conversation, and they do allow you to easily restate the context on request. Twitter is a bit like this, and a bit like the old usenet groups (well, particularly like those groups that weren’t dominated by the notoriously arrogant OS developers)


I guess it depends on how you look at it. Though the right scrolling certainly is painful and I hate it too. There can be a better visual design for such thread comments that no one has ever thought about.

Sometimes the main topic is left aside and a gossip discussion starts and makes people more engaged. May be your site would want people to be more engaged. Threaded may give at least some opportunity on this. I still remember the old digg threaded comments that were almost always more hilarious then the main story.


I think you want the right tool for the job, and depending on parameters of the discussion, either tree or flat might be appropriate.

For example:

  • Want to “encourage” posts to stay on topic - flat
  • Want to emulate an interesting dinner party, where discussions inevitably devolve into half a dozen separate sub-discussions - tree
  • Want to keep replies to less than 200? - flat
  • Want to encourage participation from as many as possible - tree
  • Want to make it easy for casual/marginally interested browsers - flat

etc., etc.

Hence I like flat (Stack Overflow is a very nice model) for technical discussions, tree for political discussions, etc.


You can tell there are a lot of developers out of here. We are rattling our cages about the informational gains vs complexity that trees provide. I don’t really think it’s an issue at all.

The problem with the non-flat discussions described is that tree levels have too much visual differentiation (indentation, in most cases). I implore you to visit a site like Reddit where the tree provides and then look at other engines that display all comments on the same level but with information about to whom the poster is replying.

I suspect that most of the time, web readers do not care vary much to know specifies histories of discussion chains, but do care to know about to whom the poster is replying.

The problem with existing treed discussions is that the visual style overemphsaizes the tree nature. Our brains simply do not like having to keep account of every specific history in the chain. We can easily remedy this by reducing indentation/other markers that overemphasize the threaded-nature of the conversation.


*Reddit, where the indentation exacerbates the threaded-ness…


This blog post allows only flat discussions: Comments of Articles. And the way I see it Stack Exchange allows only flat discussions too. Comments of Questions and Comments of Answers. It just feels different because multiple commented entities are displayed on a single page.


Twitter is the worst example you picked for most natural structures in social networking. It’s actually a bigarse tree or a forest full of trees that appears to be a beautiful grassland when you look at it. I really hate trying to follow discussions on Twitter because it has the exact same problems you mention about Reddit and Digg, except they appear differently.

In Twitter, posts (aka tweets) have replies. These replies are posts by themselves. And they have replies (which are posts and have replies and… you get the picture). Now see this whole “tree” as a flat structure, where posts, reply posts, and their reply posts all appear at a single level. There you have it - the ridiculous but somehow immensely popular thing called “Twitter”.

To me, the right balance is always a two-level system, like that of Facebook* and Stack Exchange… and this blog: posts and replies, where replies are not posts. If you go too flat a structure, you essentially close the venue for any discussion at all (like a blog with comments turned off on all posts)**. If you go too tree a structure, you end up having the very problems of trees that you mentioned in your blog article.

A two-level system ensures discussion and also keeps it easy to follow. You make a post, and others make replies below it to discuss about it. New replies are added at the end, and you can easily follow the discussion without having to follow any tangents, branches or spin-offs. This avoids the headaches of trees while giving readers the opportunity to contribute.

  • unfortunately Facebook is starting to introduce “replies to comments” in some areas of the website (I think Pages), and that’s kinda freaking me out. But still, three-levels should be manageable.

** Twitter attempts to overcome this problem by introducing a loophole called “@reply” where you reply to someone’s tweet by making your own tweet starting as “@someone”. But it gets really ugly really fast because reply tweets are LOST in a sea of other tweets… and to overcome this problem they introduced the ability to view reply tweet by expanding a tweet… Basically, Twitter is a mountain full of fixes for problems they didn’t anticipate when they thought “hey, 140 char SMS tweets!”.