November 24, 2006
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.
But I somehow missed Joel Spolsky's related 2003 article on social software, Building Communities With Software.* It's an excellent, albeit somewhat long-winded, explanation of the way Joel runs his community forums. Although I recently accused Joel of jumping the shark, his scathing criticism of Usenet, Slashdot, and IRC is right on the money. All three are deeply flawed social software models, incapable of sustaining civilized discussion.
Joel advocates policies on his discussion boards that seem unworkable, even borderline anarchic:
- No registration
- No user moderation
- No email notifications for new posts
- No posted rules
- No support for quoting or reply shortcuts
- No unread post shortcuts
- Arbitrary deletion of off-topic posts
Reads like a recipe for disaster, doesn't it? But with one minor exception**, I'm in complete agreement. When it comes to writing social software, Joel's curmudgeonly advice may very well be the right approach. Read the rest of Joel's post to understand why.
In particular, I share Joel's intense dislike of threaded conversations:
Q. OK, but can't you at least have branching? If someone gets off on a tangent, that should be its own branch which you can follow or go back to the main branch.
A. Branching is very logical to a programmer's mind but it doesn't correspond to the way conversations take place in the real world. Branched discussions are disjointed to follow and distracting. [..] Branching makes discussions get off track, and reading a thread that is branched is discombobulating and unnatural. Better to force people to start a new topic if they want to get off topic.
Two of the oldest and most popular discussion boards on the web, phpBB and vBulletin, avoid threaded views. The phpBB developers won't add threading. vBulletin offers threaded views, but they are off by default-- and often disabled completely by administrators.
Personally, I have yet find any threaded discussion format I like. Aside from the philosophical objections Joel raises, threaded discussions are painful to use. You're forced to click through to see the responses, and once you do, there's far too much pogo-ing up and down the hierarchy of the threaded discussions. It's all so.. unnecessary.
Flat discussion views have their limitations, too. But they're minor compared to the trainwreck that is threaded discussions. Until we can come up with a new discussion model that doesn't add a slew of new problems, let's take Joel's advice and stick with simple, flat discussion views.
* Thanks to Phil for pointing this article out to me.
** 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.
Posted by Jeff Atwood
"** 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. "
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
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 :-)
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 ;-)
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.
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.
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 ;)
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.
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.
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 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.
So what's wrong with a nested comment structure? It seems like you get the best of both worlds, threaded discussion and all comments on one page with no pogoing up and down?
You still wouldn't see the latest posts in a single block at the bottom (or top) of the screen. You'd have to scroll around to make sure you saw all the new posts, as they could be nested anywhere in a long thread.
Borderline (or outright) anarchic is how web sites best function. For an extreme example of this, visit some of the large anonymous imageboards such as Yotsuba or Futaba. Literally hundreds of posts a minute, no names or other identifiers, and yet they work well.
There's still pogoing, but it's all on one page now. Livejournal (until you exceed some threshold) is an example of this. If one comment generates two replies, and the first has a couple dozen children, grandchildren, etc, by the time you get back to that second reply you'll be wishing it was all on separate pages - at least that way you could quicky flip back to reread the original context. It also makes following things over time extremely difficult, if you don't have [new] tags or similar.
In general, conversations between several people, whether they're a 3-way flamewar or a 40-way discussion, are going to be chaotic no matter what format you try to read it in. At least linear gives you a chronological sense of what's current, an easy to follow flow of conversation. Threaded makes it easier to prune/split, admittedly.
Flat comments work well for small discussions. Once you go above 20 or so comments, it becomes completely unusable. Nobody cares enough to read through pages and pages of text just add to the discussion. You mostly get a bunch of disjoint statements from people that ignore everyone else. (Like this post.) If you want to keep participation low and discussion superficial, use flat comments. If you want to create a community of many individuals having long discussions with each other, then you have to use nested comments.
Flat is the way to go if people are reading and responding to the prior responses. In my experience, that is not the case. For example, I did not read most of the prior responses before posting this response. I am responding to the original article, not to the article with a bunch of comments added. Of course, I am on sample of many, so if most people do read every response before responding, then by all means, flat is the way to go. But given the quantity of responses to an article I see on Slashdot, I don't think people read everything.
One quibble: deleted comments should be somehow available or otherwise note that something was deleted. Or else you can have sites like monstersandcritics or Indymedia, where some dishonest editors silently delete all comments they don't like, no matter how benign or reasonable. If you don't want to hide them behind some sort of threshold or trap, at least leave the position in place with a [deleted] mark so that people know that stuff is disappearing.
I don't consider this a moderation policy, but way of giving commenters some trust in your system. I quit going to monstersandcritics after witnessing a mass deletion in just a few minutes of literally all comments representing one side of an issue in their news page, and looking at what s/he chose to leave. It left a bad taste in my mouth and I prefer not to contribute ad traffic to such a site. To anyone who didn't actually see it happen, it might as well not have. This is an advantage Slashdot has over other sites.
When are we going to see comment counts in the feed or [WOW!] comment feeds?
Sorry, I don't buy it. I usually read all the comments anyway, but it would be nice to know which parent comment any particular comment is refering to. It shows context; quite important when following a conversation.
Ctrl-F and Google would help initially in finding the content, they pretty much lose all usefulness after that. Searching != Organization.
Arbitrary deletion of off-topic posts is something that has a high potential for abuse. What if Joel had a bad day and decided that my post was off-topic and deleted it? Unlikely, but not impossible. His blog would be no better than an IRC channel at that point.
Oops, it should have read "finding the content, but they pretty much". I actually learned to spell and write proper english in school. Really, I did.
Joel says: theading "doesn't correspond to the way conversations take place in the real world" - so he's never wanted to respond to somebody saying something interesting, or irrelevant, in the course of a normal conversation? He keeps on topic the *whole* time? How does he change the subject then?
In the real world you don't mark new topics - you drift into them. This is what threading is mimicing, and that's why people like it. Flat discussions frustrate becaue they are designed to pander to the ego of the topic. For example, I CANNOT have an effective conversation with anyone else on this thread without confusing everyone.
Yahoo screwed it up with their new threaded financial message boards. I know one stock message board for the stock Novastar (NFI) where the entire message box jumped wholesale to another site (InvestorVilliage.com) because of the change. Postings dropped by 5X and Yahoo scrambled to put flat format back on the board. It's there again, but since 80% of the people are gone they must have lost a huge chunk of revenue.
Well... I certainly can't argue with the popularity of flat boards like phpBB. Other than to note that, even with their billions of burgers sold, McD's still sells crap for food. phpBB and kin are fairly easy to install and configure, and i suspect this has a lot more to do with their popularity than any specific usability features.
As for calling these things "conversations"... Look, if twenty people were standing in a room discussing message boards, it'd quickly take one of two forms: one person talking, other people replying... or, the larger group splintering into smaller groups. Everybody yelling their thoughts all at once isn't a conversation, it's madness.
I mean, look at this blog - we're not *conversing* with you, we're leaving letters to the editor, comments on articles that may or may not ever receive a reply, and for which there's no mechanism to even know if a reply was left. You stand on your soapbox in the town square, ranting and raving and throwing out pamphlets, and the passers-by pause to sit and nod or shake their heads.
Oh, and USENET - Joel's comments seem to indicate his problems with the *presence* of a community, rather than the lack of one. Most communities IRL have their share of never-ending discussions, obscure traditions, and a certain amount of suspicion towards outsiders - i suspect that any really *successful* online community will exhibit similar traits. SPAM, on the other hand, is death to any discussion forum.
Finally, i'd like to point out a threaded web-based message board that actually works: the one used by the CodeProject site for its internal message boards on articles, forums, and the like. Rather than forcing a slow, jarring page refresh between messages, it uses a simple DHTML mechanism to display threaded messages.
Threaded ftw. It's impossible to have a civilised back-and-forth conversation in a unthreaded environment unless you're continuously quoting vast amounts of stuff to maintain context.
But only when done right: visit http://z.iwethey.org and have a nose around.
This Joel apparently hasn't used IRC since '88.
Oh get outta here. You shouldn't need to click through posts, just press N on Thunderbird. *Threaded messages are good, web interfaces for forums aren't.* I wrote my own NNTP server and forum scraper just so I could follow a dozen forums from a single *desktop program*, and the biggest problem was dealing with stupid forums with no threading.
Threading works, but only if you have proper client support:
per-user state (read/unread)
kill subthread (ie mark this message and all children read)
move next unread (which should be instantaneous or nearly so).
What wrecked Usenet was (1) spam and (2) there isn't a good web interface - they're just not responsive enough.
The only solution I can see for (2) is an AJAX interface that downloads a huge lump of state to your client. The solution to (2) is much simpler, it's what usenet calls retromoderation ie being able to delete messages if they are spam or nonsense.
If you want a good example of a threaded client that works, try ameol (www.ameol.com) but you'll need to be patient as it's a decade out of date.
I have seen a somewhat successful threaded comment system this website http://www.storm-artists.net/ (Anything that can be commented on has threaded comments, including the forums)
I am a member of the site above. I did some research on my own about six months ago on flat vs. threaded view of comments. Every single person (out of 20 some active members) said they wanted the threaded view over flat view. Granted, my sample size was tiny but I don't see many people other than myself preferring the flat view.
I like the format that allows a single level of nested comment, still visible without drilling down to a new page. Good for quick remarks, without the usability issues of allowing infinite nesting.
"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."
My feeling on this is either you're reading the comments because you want to read the comments, or you're skimming the comments because you want to talk and/or add to the discussion. If you're doing the latter, you should read all the comments anyway to make sure you're contributing something new to the discussion and not just talking to hear yourself talk (or writing to see yourself write). The exception is when you're looking for an answer and hopefully google/ctrl-f will get you to the 1 in a million post you need.
As of June 2011, this article is painfully misguided. All of Joel's anarchic rules are nowadays ignored, given the massive increase in vandalism and spam. (Right now, the two comments above mine are spam).
I'm a member on both flat forums (xda-developers, notebookreview) and threaded ones (reddit, slashdot). For the same number of posts in a thread, say 200, I rarely manage to read an entire thread on the flat forums, because the posts are so disjointed.
With threads, if a thread goes in a direction you're not interested, you can ignore that, and go to another branch. With a flat forum, you have to read or skim until the conversation goes back to what interests you. I'm not saying it goes off-topic, and that a new thread was started; no, it's just that you are not interested in that direction.
Finally, it should be pointed out that more and more commenting systems (Disqus being a large example) are threaded.
In my opinion, flat forums had a headstart, but it's an implementation that lacks vision.