Improvements to Discourse flat comment design

Continuing the discussion from Introducing BBS, our new forums:

Honestly, I think this is the wrong debate to be having.

I don’t like your car, I want a truck


Ok, I have a car, how can I make it more efficient and usable for me.

The argument for flat vs threaded are interminable. On one side you have: “This works for reddit, hacker news and is very friendly for tangents” … On the other side: “You have a system that makes it very simple to catch up with new conversation in a topic and run very long running debates”

We have a hybrid flat design, you can open tangent topics (like this one). You can expand “in reply to” or “replies”. You can expand quotes.

Clearly, our system is not perfect.

What would you like to see changed in the flat topic design that would make you like it more?

I have raise an idea to allow you to multi expand stuff (so you can expand replies and replies to replies), there may be other ideas, feel free to pitch in.

We had threaded with Disqus, but the Preference of the House has always been for flat.

I didn’t want to switch to threaded when we left MT. I got used to it, and I’m definitely having a hard time readjusting again, but flat does encourage people to read the thread before commenting.

We are open to improvements in the “click to expand” areas:

  • click to expand a blockquote
  • click to expand “in reply to” at the top (this only appears if there is no blockquote, FYI)
  • click to expand “X replies” at the bottom

It is fair to say that I am deeply opposed to wholesale, nested threading, but I am a fan of hybrid approaches that give you one, maybe two levels of pseudo-threading.

I am also of the very strong opinion that most things you say should be more or less standalone, and carry enough explanation along – either of the implicit or explicit kind – that a person with a layman’s background in what you are talking about could follow along.

1 Like


Because we want to improve things, but saying … GO AWAY THROW IT ALL OUT COME WITH A TRADITIONAL THREADED DESIGN is just not going to fly. Threaded vs. Flat is a religious argument.

“But this indentation game doesn’t ever end.”

See, that’s a computer scientist response to a social problem. Though you are correct in a xeno’s paradox mathematical sense, you are actually wrong in that the limit eventually approaches zero. Discussions don’t go on forever. Particularly if the topic auto-locks in 5 days.

You get a much better sense of who said what, and when, with indentation. It’s naturally more legible (unless you’re using a right-to-left language, maybe) and it would be trivial to come up with some logical visual shorthand to show that a thread had been indented too far to be legible - the carriage return symbol, representing the roll of a typewriter being pushed back to the start of the line springs to mind.

Also, I am interested to hear what type of data structure you propose instead of a tree… there’s a lot of inherently intuitive stuff in tree based systems… do you propose some sort of amorphouse node based social networking graph? That could be interesting, if a bit mind bendingly insane.

Ultimately it’s a question of legibility, and as of right now, there is NO sense of linear progression. It is TOTALLY UNLIKE a discussion or conversation, and more like a random selection of tweets by strangers.

As for “most things you say should be more or less standalone” that’s like… dude, an unbelievably insulting and ignorant generalisation of human discourse. Good advice, maybe, but we’re not all just chatting in radio friendly soundbytes.

And what’s with having not time on the comments? That makes it even worse! What said what, when? Who knows?


That is a very weird comment to be making in a rather legible and well thought out post that is not tweet like and reads just fine.

It is visually suppressed but present, we used to have it below gravatars and it cause confusion. If @beschizza and crew want to make it more prominent they can.

Well, since a truly threaded view seems to be out, multi-expand all the way up and down from a particular post would be the next best thing. I’d like to be able to expand the current “in reply to” all the way up the chain to the original post. And I’d like the current “# Reply” section to show all replies as it currently does, and the number (and ideally text of) replies each of those replies has, and if each of those replies could show the number of replies to them that’d be just grand.

One aspect of current threaded systems that I do dislike is when two commenters start replying back and forth, having a conversation that stretches the threading almost to the breaking point. In situations like that I think it’d be keen if the system could recognize that the situation has become a conversation and stop the indenting.

Of course, none of those really gives you the advantages of the threaded view, which is a visual, at-a-glance way to see how a conversation has branched and expanded. And in better threaded systems, a quick way to collapse threads you aren’t interested in so that you can concentrate on the posts that are of interest to you. I don’t see any way to maintain a flat system and provide those features.

I use a browser extension that allows this on another website. i like it better than how you have discourse configured presently. my 2 cents.

can you point me at the browser extension / website so I can review the implementation?

well, since you asked:

there are some other forks, too.

One thing that I can’t recall having seen discussed in all the BBS critique/design idea chitchat is the idea of options.

Both/and instead of either/or. Why not let the user tinker a bit and decide how they want to experience things?

The IMDb forums for example, give you display options of threaded/flat/inline/nest. In Disqus you can sort stuff by oldest, newest, best rating, and popular now (Notable Replies seems a shaky hybrid of those last two.) Would letting people choose be too tricky to code or detract too terribly from the overall design?

Big thanks by the way to both you and @codinghorror (and @beschizza!) for chiming in from time to time. It’s been great to get more context behind decisions and see what y’all are mulling for the future.


I just played with that, never thought browsing 4 chan would be part of my day job :smile:

On the upside, many of the options provided are already built in to Discoruse, I can totally see the allure of expanding more than one level up, I like that function.


Its mainly a matter of resources, building a threaded interface is a major undertaking. We also are very careful about flooding users with options.

That said, we have made it public that Discourse is a system of preferences, @codinghorror has a severe allergy to threaded interfaces, personally I am not a huge fan as well.

However, if some developer took on a project that built a plugin in that space, we would not be in the business of stopping them, its in our interest to have a great API that supports great extensibility. But, to be honest, I would not expect a plugin in this space for quite a while, our extensibility interfaces still need a fair amount of love.

We would like to focus our resources on making this interface solve a lot of the problems people think can only be solved with a threaded design.

Better overview with best of, smarter analysis of conversations in the “summary box”


I :heart: that. My only complaint is that their system doesn’t allow you to change the default. Or maybe I just haven’t found the lever.

Throwing my own (anecdotal, personal) opinion into the ring—threaded comments, especially full threading like Disqus or Reddit or Slashdot uses, break my sense of being able to follow the overall tone of a topic. They string replies together with indentation and highlight a particular conversation, but the more individual threads that get spawned inside of a discussion, the more places I have to look to read all the new posts. It becomes harder and harder to understand what was posted when without paying close attention to timestamps on each of the individual threads (“Did this reply to this one nested thread get posted before this other reply to this other nested thread? Did this new top-level reply that addresses one of these points get posted before or after this deeply nested reply over here?”)

I’ve long since despaired of being able to effectively follow active discussions on Reddit—I just shrug, flip into “best” mode, and read everything in order. In fact, to me, the more threaded a conversation gets, the more insular it gets, as only people already participating in the side conversation will walk down the indentation path to reply.

Threaded discussions work for me in some contexts—USENET springs immediately to mind—but my preference is for a flat discussion that relies on quoting and hinting to tie together posts. At the very least, it means you only have to look at one place to see the new posts—at the bottom. You don’t need to follow ten different nested threads in a conversation to check for new replies to each.


Given that (1) you are clearly immovable on the idea of a flat system and (2) I have experienced flat commenting systems that did not make my head explode, I would suggest you just concentrate on fixing the Principal of Least Astonishment (aka Principal of Least Surprise): make it intuitively obvious that this is a flat system and not a threaded one.

If it were me making the design decisions, the absolute first priority would be that “replies” button: either find a tell that makes it obvious to an idiot (ie, me) that this is not a threaded view and never will be; or get rid of the bloody thing altogether.

TL;DR: “hybrid system”? Hahahahaha.

(Aside: the downside of a threaded system is that I can’t make a single post that replies to multiple posts. You could take advantage of that. Maybe you should just link a post to an earlier post based on the posts it quotes, and leave the “reply” button off altogether? Radical thought.)

LiveJournal’s default, AJAX heavy comment system, solves this by marking comments that are new since the last time you read a page as “New comment” along with a little yellow label. And Dreamwidth, a LiveJournal fork, lets users switch to a flat view on any comment page.

So almost, but not quite, like this post? I’ve seen that work quite well in other forums, where the “highlight and quote” function creates links to the quoted posts. Or were you thinking the “# replies” link would be based on the quoting function? Ahh, they already are. Nifty.
I wonder if you get a notification for this, even though my post here was started as a direct reply to @Lee_Ars.

1 Like

I don’t see an “in reply to” on your post. So that doesn’t quite work, I think.

EDIT: or on mine. Having features that sometimes do one thing and sometimes another is almost guaranteed to break POLA, although I can see the temptation, certainly.

1 Like