After a year of laying the groundwork by migrating to a VPS and setting up a test environment, I finally moved my old (10 years), large (1mil posts) PHPBB forum to Discourse back in February.
It was a big task involving a lot of work, from getting the migration script to run against phpbb3.2 through to getting Docker to work nicely with my VPS and other sites.
I’ve always been a big advocate of Discourse, I think it’s great. But sadly I had to pull the plug about a month ago and move my community across to different forum software.
This decision wasn’t made easily and I’ve coped a lot of flack from my community, as well as countless late nights working on this project.
I still love Discourse, but I thought I’d share the reasons why it didn’t work out for my community.
A large portion of my user base did not like infinite scrolling. To me it makes sense, but the types of topics on my forum may go on for up to 20,000 posts. I guess you can’t teach on old dog new tricks.
One-click quoting, something which every other platform can do, is three-click process in Discourse. My users read a post, then want to have a “quote” button that loads the quote in a composer, simple. Yes Discourse can “quote” but it takes a few clicks and my users did NOT like this at all.
Being a large forum with many users having over 20,000 posts, these users constantly hit 502 errors. Why? Well I never quite figured it out, but it seems that Discourse hasn’t quite refined the backend DB queries to handle users with a large history. When ever one of these large users tried to post, start a topic or do anything really, then they would just hang and crash out. Considering these are the influencers of the community, I couldn’t dismiss their complaints.
Finally, revenue. I’ve run Adsense on my community for years and it’s helped offset the server and time costs. Since switching to Discourse my revenue instantly plummeted, down 90%. I gave it a month, I even used AdManager to try to improve things, but nothing was improving and it was burning a hole in my pocket. Be it Ads not showing, impressions plummeting or whatever, it couldn’t go on.
Further, the official discourse ad manager plugin bug on Mobile (screen jumping around) was driving my users away. In my opinion the official ad manager plugin should be pulled back to Beta until this critical issue is resolved.
I suspect that Adsense is having an issue with the way that Discourse displays content, that it can’t index it correctly or something like that.
All these issues added up to the point where I had to pull the plug on Discourse and jump to another bit of software. It’s not as feature rich as Discourse, but instantly I’ve seen a big improvement across the board:
Pagination is still something that is needed
Adsense revenue shot back up towards where it was before
Users have stopped complaining about basic things
Maybe because I migrated an old, historic forum with users with entrenched habits, perhaps that’s why I didn’t have as much success with Discourse.
Either way, I hope my report on my experience can help the developers here fine-tune Discourse as well as help those considering migrating to the platform.
Hard relate, infinite scrolling is not good for our usage either. Pages would be a welcome feature, yet as of last time I checked in the devs seem staunchly against it.
As far as I’m concerned, drawing in users that clearly want it is worth the dev time. But hey, I don’t have their statistics.
Three? I just did this in two (click-drag-click). This is surely to encourage brevity as you are forced to select the exact text (just like I did there)? A blunt ‘quote all’ is just going to result in unnecessarily poor use of screen real-estate and storage.
In any case you probably could have built a solution fairly easily in a plugin.
It definitely confuses my users that the position of the scroll bar on their browser does not indicate where you actually are on the time line. The expectation is that scrolling to the top should take you to the first post on the page. I more or less told them to stop thinking in the context of pages.
I would actually prefer if Discourse could override the browser scrolling altogether and integrate the timeline usage in place of that. Or if that could be done in a theme component by the community, just as good.
But it does? As each ‘infinite scroll block’ is added, the scroll bar of Chrome (at least) re-scales to accurately reflect where you are. And if you pull the handle to the top, you arrive at the top?
It has never worked that way in my experience. You pull the native scrolling to the top, it definitely re-scales accurately to where you are in the topic, but it certainly doesn’t take you to the first post if you pull it all the way up.
Either way, I personally prefer using the timeline for navigation, and mouse wheel for fine tuned scrolling. Very infrequently do I interact directly with native scroll bars as a Discourse user.
I feel like there’s a good tradeoff of a single flow of replies versus pagination, though. When topics are so huge that the scrolling gets flaky, I don’t generally find the replies loaded to be of huge consequence. Topics that balloon to 100-200 replies aren’t really meant to be read from the first reply to the last. Shoot, I can’t think of many topics where that’s ever the case. That’s only ever been my use experience, however, and I wouldn’t dare devalue other Discourse owners’ posts.
That also doesn’t help at all with the fact that large threads become extremely slow and may crash, or the fact that having a single page with thousands of posts is just an eyesore.
You can attach post numbers onto the end of a topics URL and it’ll do as the above, since I did the above in about 20 seconds you could very easily break up a 10k topic into 10 or 50 sections in 5 minutes.
If you click the time stamp on a post it’ll tell you what number it is, on desktop it autopopulates the URL bar for me so you can skim through to a suitable chapter break in your topic then just copy paste it in the OP and say “Chapter 7” or whatever.
Hopefully the problems with that method are self-evident - and that’s breaking it up into only 40 parts! Trying for 50 posts per section, like sites with a large number of posts/page, gives 200 links in the OP (and takes our volunteer ten hours), and trying for 25 posts per grouping, the general standard number of posts per page, is just stupid (with a staggering 400 links in the OP and taking our volunteer almost a full day of work to complete).
Now, imagine if you were trying to bookmark posts like this by finding posts that made actual sense as bookmarks, instead of ones that are evenly spaced. Now your volunteer has to read the actual thread to find these posts. If we assume a modest 1% of the posts in the thread deserve bookmarking, then that means we need to add 100 posts to the OP at three minutes each, and add the reading time of the entire thread (roughly 400 minutes, according to the Discourse estimate of threads of roughly 10,000 posts on my site). Although this is much more manageable than the 50-post pages (containing “only” 100 links in the OP), it takes the volunteer longer - and if less posts are actually worth saving, the time it takes them doesn’t decrease due to being required to read the thread for 400 minutes).
This would make the OP basically unreadable, and I’d imagine your volunteer wouldn’t be so quick to volunteer again.
We need a better system to manage this, be it by actually adding bookmarks to the timeline or, as many have asked before, pages.