New posts, read posts, unread posts - I like this

As I fiddle more with Discourse, here and at the other sites that have popped up, I’m beginning to wrap my head more around the options for managing my “state” in the flow of topics. At first I was a little put off by the lack of a traditional per thread read/unread concept, and I kept wishing for a “mark all read” button. Then, I started paying attention to what Discourse was and wasn’t telling me about new topics and new posts, and I got confused. I couldn’t understand what appeared to be inconsistencies in the number of “new” posts, versus the amount of notifications I was seeing about those new posts. There were posts going up in threads I’d read, but I wasn’t seeing any indication of them.

However, rather than posting a note to complain, I went exploring in my account preferences and got really friendly with the “automatically track topics I enter” and “consider topics new when” drop-downs. The defaults weren’t working for me, but you guys have actually included a thoughtful number of different potential variations; through twiddling, I was able to settle on some options that work well for me—track after 1 minute, and “new” topics are <1 week old.

I am very pleased with the results—and with the fact that this way, I feel like I can manage where I am in all the ongoing conversations, but not have to occasionally hit the “I GIVE UP, MARK ALL READ” button. This also avoids the “just starting out” problem, wherein a new user to an established forum pretty much is forced to mark all read before the new user can start actually using the system.

So, kudos. This is a well-thought set of options and the combined functionality is excellent.

A question on implementation, though—I’m not a dev, so I don’t get much out of combing through the code, but how are all the read/unread counts tracked and updated? Is this one of the things Discourse uses Redis for? Seems like for a busy forum, that would be a crazy-stupid amount of IO.

(Also, just as a quick aside, you guys are really having to deal with a shitshow over on the McNeel forums. I’ve been reading the posts over there from some of the USENET-loving diehards and I don’t at all envy you that feedback management :wink2:)

5 Likes

At the moment this is all done in the db, a http request fires of every few secs that tells us about your reading activity, if you leave the browser or switch tabs we stop sending it up.

There is a fair room for improving perf arount the tracking endpoint, to be honest, scale issues is something I really want to have. I live for that. So much more fun that decided how to paint the bike shed :smile:


Huge thank you for the kudos (maybe one day hopefully we will see a Discourse at Ars :smiley:)


Regarding my Vietnam that is the McNeel forums. I actually like the community, they really care, that is why they are so vocal. Its a great lesson seeing how a newsgroup migration plays out. Replacing newsgroups has always been one of our goals.

2 Likes

Great to hear, because this is the exactly way we always looked at it – having a “mark all read” button is the same as a we suck at designing software and we give up button. :smile:

That said, we do really need a way to manage topic state, if I have 30 topics muted, there is no way to unmute a bunch of them. We need a UI mode that lets people perform operations on groups of topics, including changing the notification state.

We’ve talked in the staff IRC channel some about Discourse; not everyone is convinced that all of Discourse’s assumptions are universally correct for every community, but everyone is definitely keeping an eye on the app as it evolves. We’re content with phpBB for now—well, that’s not exactly true. The pain of migrating away from phpBB right now outweighs the benefits, since one of the huge positives about the Ars forum is its 14 years’ worth of posts. That was why it took so long to jump off of Infopop to phpBB in the first place—finding a way to migrate the posting history.

However, back to the topic—I do have some additional observations. My style of reading, usually, is to look at the “Latest” list, and open every topic I want to read in a new tab. Then, one by one I work my way through all the open tabs. I’m noticing when I do this that it occasionally seems to confuse Discourse, and even if I read all the way through a topic from top to bottom, I’ll occasionally get notified that the topic still has “old” posts (via the gray number badge, instead of the blue one). When this happens, I find I have to revisit the topic and scroll through it, sometimes several times, for Discourse to correctly note that I’ve read all the posts.

This might just be because I’m doing this with dozens of tabs, but it does seem a little funky. When I’m re-visiting a topic just to make the notification badge go away, I’m definitely wishing for that “mark all read” button then :wink:

2 Likes

what do you mean by ‘we stop sending it up’, do you, a little more geekily, mean ‘we stop sending AJAX requests from the browser’ ?

thanks