top | item 18013727

The Evolution of Reddit’s Architecture (2017)

183 points| Jaruzel | 7 years ago |infoq.com | reply

141 comments

order
[+] TekMol|7 years ago|reply
The Reddit redesign must be the worst redesign in the history of redesigns.

It's super slow to load.

It's slow to use (Scroll is sluggish. It loads giant images and puts huge autoplaying videos in your face. Comment function now starts an ugly html wysiwyg editor).

It misses features (outgoing links in the sidebars are gone).

It takes away screen estate by having a fixed element on top of the screen that stays there when you scroll down.

It's buggy (often weird overlaps between elements happen when you resize the screen).

It's confusing. When I click on a post I get a view that shows the post in an overlay of the page I was looking at. When I reload the page I suddenly get a completely different view with only the post.

It's almost unusable on my iPad (where I have to beg for the desktop version every time I open it because the mobile version is even worse).

It seems like they are still A/B testing it. Because sometimes I get the redesign and sometimes the original design.

Funny enough, I can see how the redesign might increase user engagement. The endless scroll with content right in your face is kind of addicting. It pulls you in a state of "I hate this. And I hate myself for using it. But I can't stop. I will just scroll down one post further.". So the experience is worse but the KPIs might be better. I bet this is how booking.com became the hell that it is.

I would love to see how the numbers of those tests look like.

[+] simias|7 years ago|reply
That's the problem with the vast majority of modern social networks, they're effectively designed from the ground up as a huge bait and switch: be user friendly to attract a community then become advertiser friendly when the community is well established and the network effects mean that most of it is captive. Even if 90% of reddit users are unhappy with the way the platform is run most of them probably won't consider giving up on their favorite subreddits. It's the same situation with Youtube, Facebook and others, and I'm sure it'll eventually be that way with Discord and whatever other flavor-of-the-year social network is popular these days.

As far as I can tell the only way around that is distributed and/or not-for-profit social networks where the users are actually in charge. MWWA: Make the Web a Web Again.

[+] protomikron|7 years ago|reply
Agreed. And I wouldn't consider myself to be nit-picky regarding design, as I mostly read Reddit for the content in specific subs.

Despite some questionable design decisions my main grip with the new design is that it often just does not work at all. I rarely alter default options in software but I had to use old.reddit.com quite often to even use the site:

  - sometimes the whole page does not work because of cookie issues
  - sometimes posts don't load (I have to manually refresh)
  - sub's sidebars missing: there was often useful information (might be the job of the moderators though)
  - unable to do local search (CTRL-F) due to endless scroll
Regarding my last point, Reddit is not the only culprit and many websites unfortunately switch to this style - hopefully at least Google keep their pagination - but I find it terrible.

With traditional pagination you can CTRL-F for keywords, go to the next page, and repeat the process, but with endless-scroll content is usually loaded dynamically depending on your viewport, so it's nearly impossible to search in a reliable way.

[+] tannhaeuser|7 years ago|reply
It actually takes so much space away with "get app" nagging that I've got about 2 lines of text for actually editing a post. Which is then not properly scrolled into view so you're basically editing blindly.

What's also confusing is that when you're pressing the "send" button, it doesn't give feedback until after about a couple seconds or so. Meanwhile, thinking it didn't "take", you're frantically pressing "send" again a couple of times, which results in as many posts because reddit also doesn't have double-post suppression. Makes you really look like an idiot.

Hint: aggressive "get app" placing actually signals to never, ever load the app. I can't believe reddit's strategy of making the mobile web experience so annoying that folks are giving in to install the app is a winning one.

[+] liftbigweights|7 years ago|reply
> The Reddit redesign must be the worst redesign in the history of redesigns.

Welcome to the user-friendly to ad-friendly switch.

They went from being a tech-oriented/friendly company to a news-style company as soon as they were bought by a publisher.

An HN post a few days.

"Why Are Newspaper Websites So Horrible?"

https://news.ycombinator.com/item?id=17942237

It's not just the horrible redesign. Reddit changed for the worse in every way possible. The quality of content is pathetic. All you get is just political ads pretending to be reddit content and reposts. But the biggest disappointment is their change in ethos. Reddit used to support free speech, now they support censorship just like most publishers and media companies.

When digg screwed up, we had reddit to fall back on. Now that reddit screwed up, there is nothing else to fall back on.

"nothing gold can stay."

[+] Quequau|7 years ago|reply
Several of the subreddits I mod make extensive use of CSS decorations. It's simply impossible to construct anything similar with the redesign. There are also so many missing or broken features that are in a state of flux it's hardly worthwhile to put forth a lot of effort attempting to do so.

Moreover watching the traffic stats it's clear that the majority of users access Reddit in the communities I care for do so through mobile apps where not only is it impossible to do nearly any form of differentiation, it's difficult to communicate community standards or other info, like FAQs to casual users.

So currently the most functional user interface that can effectively communicate all features available to communities is the old desktop one, which by design is now the least used. It's a farcical disaster.

[+] mscasts|7 years ago|reply
I'm an avid reddit user but I completely agree with you. The redesign is outright horrible to the point that if they stop allowing the old design (old.reddit.com) sometime in the future and force me on the new design I will most likely just stop using reddit.
[+] wyldfire|7 years ago|reply
While I share some disdain for the redesign, I usually forget that it exists because I'm always logged in and never opted-in to the redesigned site.

Let's at least praise reddit for having the sense to make the redesign opt-in.

[+] jccalhoun|7 years ago|reply
It is still a beta so I hope that some of the bugs will be ironed out.

However, it is frustrating because everything now takes an extra click. Mulireddits, changing from hot to new, or top all used to be right there. Now each of them are hidden behind a dropdown menu. I mean is Big Mouse an investor in Reddit and trying to make our mice wear out twice as fast?

[+] reactor|7 years ago|reply
The executive(s) who were/are responsible for their re-design must be shown doors.
[+] BrandonMarc|7 years ago|reply
I think you're looking at the re-design from a user-experience perspective, and this is probably wrong. Think of Reddit as a for-profit company, and then consider what that company might want out of a re-design. They'll talk in public up one side and down the other about making it a friendlier place and easier to use, but ... consider some alternative motives.

What might those be? I suspect some VERY important goals of the re-design are:

INCREASE USER ENGAGEMENT - get users to stay longer, and if they leave, make it less permanent ... tactically:

• all external links open in a new tab now

• infinite-scroll

• simplify subreddit / multireddit management

INCREASE AD VIEWS & AD CLICKS - with users more engaged, monetize their attention:

• make subreddit designs far more uniform, with fewer CSS tricks to really change the layout / experience

• make it difficult / inconsistent (!) to try to do some impressive CSS design, to discourage subreddit managers from taking layout changes beyond a certain threshold

• make the "post" ads just a little less obvious and a little more enticing

• make the "post" ads far more common than before

---

I could be wrong on all these. I suspect I'm right on several.

[+] dorfsmay|7 years ago|reply
> It seems like they are still A/B testing it. Because sometimes I get the redesign and sometimes the original design.

https://old.reddit.com

[+] baldfat|7 years ago|reply
> The Reddit redesign must be the worst redesign in the history of redesigns

www.digg.com

[+] mtrycz2|7 years ago|reply
Were you there on the Slashdot redesign?
[+] ddingus|7 years ago|reply
RES offers endless scroll and it works on old Reddit just fine.

Sidebar content is often gems. Seems foolish to ignore it.

Like a big middle finger to communities.

[+] m-p-3|7 years ago|reply
> The endless scroll with content right in your face is kind of addicting.

I think this is why Facebook, 9GAG and others are popular. People just want to binge content with the least amount of effort possible.

[+] drakenot|7 years ago|reply
It broke scrolling to the point that my favorite Chrome extension Vimium had to special case the reddit redesign.
[+] DerfNet|7 years ago|reply
The endless scroll view looks exactly like 9Gag. I never thought I'd see the day.
[+] Fri31Aug|7 years ago|reply
Reddit is the only major site I know which is regularly (well not so often, but often enough for me to realize) unplanned, and planned, downtime. Makes me wonder whether their architecture is really something to follow.
[+] throwaway427|7 years ago|reply
I've always thought some sort of straightforward partitioning strategy, even the simple one from Building Scalable Web Sites[1], or the Instagram model, would fit pretty nicely over most over multiple Reddit product dimensions -- partition by subreddit (with special instances for exceptionally busy reddits), partition by domain, etc.

[1] Hard to believe that book came out 12 years ago

edit: s/shard/partition

[+] saosebastiao|7 years ago|reply
Without even looking at architecture, they went from lisp to python to node. While I certainly wouldn't have chosen any of those languages, it seems like every step they took was a step backwards. What's next, tcl/tk?
[+] oftenwrong|7 years ago|reply
The talk is about the journey more than the destination.
[+] justtopost|7 years ago|reply
The redesign effectively ended my use of this site completely. It is so slow and agressively user hostile, it blows my mind anyonw would want to 'learn' from it in any way but avoidance.
[+] vezycash|7 years ago|reply
Old.reddit.com

Bookmark the version of your favorite sub-reddits for mobile use.

Manually edit https:www.reddit.com/post to old.reddit.com/post

OR

Use a chrome or Firefox extension on PC to automatically redirect reddit URLs to old.reddit.com version.

Problem solved for now

[+] overcast|7 years ago|reply
The great irony here, is that Reddit is making the same foolish mistake Digg did with a redesign, costing them their entire userbase, and propelling Reddit.
[+] DerfNet|7 years ago|reply
The difference, though, is Reddit has no peers. The closest I'm aware of is Voat, which is basically the Isle of Misfit Toys for Reddit's banned hate speech subs.
[+] ProAm|7 years ago|reply
I always say Reddit is a combination of terrible content from Facebook, the comments from Twitter and the redesigns from Snap and Digg.

I've actually gone back to Digg for interesting stuff on the web. Interesting content, no comments and it usually has about 20-40 articles a day so I dont feel the need to check it every 5 minutes.

[+] rcavezza|7 years ago|reply
I just watched the entire video and it was very informative. Fwiw most of the comments on here did not watch the video and seem a little uninformed. The node apis were built by a small group of front end developers and most of the pulled out services they're building are in python .

There were also a lot about message queues, cacheing, and ops related things in the talk.

I definitely recommend watching the entire video if you're interested in high traffic architectures.

[+] sethammons|7 years ago|reply
While those basic strategies are technically good for scaling, I think the other commenters have a very valid point: it seems a lot of folks say, "no, this strategy is not something that appears to be working because the site is slow, buggy, and, oh, did I mention slow."

I think many folks consider scaling and fast a success and scaling and slow/buggy a failure. Who wants to emulate failure?

[+] pjc50|7 years ago|reply
(Based on the transcript, thanks for providing that, I don't have time for videos)

The summary would seem to be that the first generation of developers built a monolith. A reasonably well scaling monolith, but only up to a point. Newer developers fear the blob and prefer Node to Python, so new development has been done in a cluster of menhirs of node around the python monolith.

The monolith suffered from lock contention because it was inadequately sharded across subreddits. They have now addressed this.

(Not mentioned: the redesign which shifts a large amount of CPU usage onto the client)

[+] pg_bot|7 years ago|reply
If I were to design reddit I would have enforced the following rule to handle their scaling problems. You cannot touch the database when you are reading the homepage. Instead every minute we generate the canonical list of ~500 links that is "reddit". Cache the html for that and throw it on a CDN. The "next" and "previous" timestamped links should reference when it was first loaded so you can continue paging and avoid the duplicate link problem. You can cheat for logged in users by loading in their data after page load with JS, but the site would never fail entirely if it were overloaded. Votes should never affect another record, they should always create a new record in your datastore to avoid locking problems.
[+] jedberg|7 years ago|reply
That's exactly how it has worked for 10+ years. If you have no reddit cookie, the site will never be down (unless the CDN has failed too).

The problem is that when you do have a cookie, until recently there was no good way for the CDN to know if you needed data from the servers or not, so all requests with cookies got forwarded to the servers. In most cases, you'd still never hit the database on a home page load, except possibly to read your user data out and find out what subreddits you subscribe to. But you may have a failed page load because the servers were overloaded for other reasons.

I believe they are now fixing this by doing more on the frontend, allowing for caching of logged in requests as well.

[+] threeseed|7 years ago|reply
I think you are really confused here.

The problem with Reddit isn't the subreddit home pages it's the article comment pages. There are so many of them, people routinely comment/upvote months old articles and the distribution is unpredictable so it can be difficult to know what to cache.

And there isn't a datastore on this planet that could handle an event log like what you are proposing. Reddit would receive hundreds of thousands/millions of votes a second.

[+] emodendroket|7 years ago|reply
That seems like it would totally break the model, where you subscribe to sub-Reddits you want to read and don't subscribe to ones you don't want to read.
[+] intended|7 years ago|reply
If I understand you correctly, there’s a new row entry for every vote ? I
[+] justinhj|7 years ago|reply
I hate using Reddit on mobile. I’m generally reading on a bus or train in Safari and it will virtually force me to use the app. 90% of those times it will open the store instead and maybe want to update the app, or I’m not logged in so I will have to take a few minutes to reset the password, even though I’m logged into the web app. If the app does load it’s slow and buggy. I wish I could make the mobile web page the default.
[+] slazaro|7 years ago|reply
Have you tried 3rd party apps? On Android I use Relay and it works great, I assume on iOS there are similarly good apps.
[+] matkins|7 years ago|reply
reddit.com's time spent on each request and uptime are shameful, and they are not getting any better after the redesign.
[+] Longhanks|7 years ago|reply
The redesign is such a horrible user experience, the day old.reddit.com gets shut down (assuming there is no Desktop program that comes close in quality to the mobile app Apollo) is the day I'm going to stop visiting.
[+] Theizestooke|7 years ago|reply
reddit video is particularly dreadful. I usually skip the link if it's reddit video.