Reddit Then, Now And Tomorrow – Keynote Chris Slowe (Co-Founder & CTO Reddit)

Chris Slowe (Co‑founder & CTO, Reddit) gives a keynote about Reddit's past, present, and the multi-year effort to redesign and modernize the product. He summarizes Reddit's role as a network of communities ("front page of the Internet") and gives production-scale metrics (≈350M monthly active users; ≈1M total communities with ~10–20k active; ~1M posts/day, 2–3M comments/day, ~58M votes/day). Slowe recounts the UI history, the decision to rebuild mobile apps and mobile web first using React and TypeScript, the small-team origins (an engineer started the web rewrite in Dec 2016), the formation of dedicated design and user-research teams, and an ~18-month rollout process (about 50% rolled out at time of talk). Key engineering challenges included community CSS (leading to "structured styles"), offering multiple density modes (card → compact), matching or improving performance (instrumentation, repaint/reflow tooling), and building an event/analytics pipeline (Kafka → BigQuery dashboards) to guide data-driven rollout and fixes. The talk emphasizes listening to users, using community contributions, and iterating cautiously.
Questions this video answers
September 15, 2018 (YouTube video titled 'Reddit Then, Now And Tomorrow – Keynote Chris Slowe')
About 350 million monthly active users
About 1 million communities total, with roughly 10,000–20,000 active
Approximately 1 million posts/day, 2–3 million comments/day, and 58 million votes/day
An engineer started the new-web rewrite in December 2016; by mid-February 2017 it was mandated as the way forward
Chapters
Well, you know, thanks everyone for being out here at 9am on day two of the conference. Congratulations. You made it more than anything else. Hopefully I can bring a little bit of delight to all of your hangovers. As I said, I'm sort of the CTO at Reddit. Quick, quick, About Me I actually have a degree in experimental physics, which I obviously use every day. I was the founding engineer at Reddit, which was the first employee, which means I got my career started in tech, being paid almost entirely in pizza and mostly doing at the time what amounted to being infrastructure work. Though at the time there was only four of us for most of the early years. And so I also did a fair amount of front end work, which really means that the talk that I'm giving here is to talk about fixing all the mistakes that I made in the past. Now I kind of took some time off in the middle. I left in 10, came back in 15, and now after wearing down Steve, our CEO, they finally made me CTO. And what I'm really trying to say here is that all the things that we're doing now, I'm kind of not only undoing past mistakes, I'm creating future ones. So it's all entirely my fault, no matter how you look at it. So first off, start with, what is Reddit? Who here uses Reddit? Just curious. Okay. Who here would consider themselves a Reddit user? Okay, Lurkers are people too. I don't mind including you in the mix. So Reddit, we've called ourselves the front page of the Internet for a while. Really what Reddit has evolved into is a social network where we have tens of thousands of communities where users are able to talk about whatever passions and interests they might have. And so it's really about where people converse about things that are important to them. And one of the things about Reddit that I think a lot of people don't realize is we're kind of a big deal. We're kind of the biggest little site that no one's ever heard of. We've currently ranked in the kind of four to sixth on Alexa, which is a site that's been around for a long time for measuring relative size of sites. The joke we've been using is we're glad to see they finally fixed their algorithm. We have about 350 million monthly active users, about a million communities at any given time. There's probably about 10 or 20,000 that are active. And we do about, you know, our users do about a million posts per day, 2 to 3 million comments per day, 58 million votes per day. So it's a lot of throughput, it's a lot of interaction. The animated GIF on the side is actually submissions and comments kind of happening in real time, or real time when we took the gif. So there's a lot, there's a lot happening. And our mission as a company is to try to bring community and belonging to everyone. And so with that kind of in mind, this talk is about rebuilding Reddit. And so, you know, the first problem is that Reddit's finely tuned aesthetic has been described as dystopian Craigslist. This isn't exactly a launching off point for everyone. In fact, to some extent you could distill down the point of rebuilding Reddit is to build a UI that appeals to everyone. It's so simple, everyone knows what they want. And it doesn't actually help that Reddit as a platform is designed to criticize Reddit. I mean, Redditors just love talking about how terrible everything is, especially stuff that we do. And so just to kind of go back in time, here is the original version of Reddit from, from 2006. Actually. This is a little, this is maybe a second revision. The first version we read in 2005 was actually written in Lisp and was written with a bunch of hand rolled JavaScript back before JavaScript frameworks existed as a thing in the world. We rebuilt it in 06 with prototype JS, which for those of you who have been doing this for a long time will realize was a giant technological leap. It's now kind of total garbage, but at the time it was great. We engaged in a rebuild in 08, switching to jQuery, which was an exciting change. We optimized a whole bunch of things. Funny thing is that when we did it, as evidenced by the fact that users complain about everything, one of the changes we made was, you notice the top, it goes from a white bar to a blue bar. We made everything faster. We cleaned up the ui, we reorganized it, Our users complained about that blue bar for months. That was the most important thing to them was that little tiny change we've since done. A time has passed and the site hasn't really changed. This is Reddit from last year. And you can see there's some more stuff there. It's a little bit more dense. We have some ads in there, which is a nice touch, at least for the business. And really not much has changed with this idea in mind. We were kind of at the point of, well, let's take this from the top. And so in order to do that, we decided to start with our mobile apps. And the reason for that was that we didn't have any mobile apps, which I know is a terrifying thing to say. In 2016, Reddit had no first class mobile apps. Now, the advantages of that situation meant that we could build what we wanted and not have to basically justify it against our current set of apps because we didn't have any. We have a very rich third party app ecosystem which has been delightful for years, but you know, we wanted to have our own experience that we wanted to show off and we wanted to actually experiment with it. As you can see, this is actually the version of the apps from last year. They look like Reddit, but they are much more cleaned up and much more kind of what you'd expect from a modern app. Now, the problem is our users kind of noticed and here is their representation of Reddit as an app versus Reddit as a website. And you can see that they decided there wasn't enough polish on the website. So this is a good justification at the very least that we were heading in the right direction by doing a redesign. Now, another thing that's problematic about rebuilding Reddit is that we have a giant existing user base. Reddit is already special to millions of people and they don't trust us not to mess it up. In fact, they're convinced we're going to mess it up. Why would we change something that's working? And these users do have a particular aesthetic, it's just not the one you'd expect. Here's a typical comment thread on Reddit. Everyone replied nice, but one guy decided to use lowercase and apparently F him. So this is sort of a microcosm of what we're kind of dealing with. Though I love our users, I would never say otherwise. So, you know, part of why the fear. So part of the fear is from prior art. Here's one of our competitors from back in the day. This is Dig Dig and Reddit kind of grew up together. Back in 2010, Digg engaged in a major site redesign. They also at the time did a stack rebuild and did some site mechanic changes. And one of the things that happened there is when they launched it in 2010, they initially had a whole bunch of downtime. And if you kind of look closely, you'll see that it's not a drastic difference. But one of the things that's different is the fact that the scores got really small after a couple months. This is a sign of engagement drop off. So this means that what they built didn't appeal to the user base and the user base revolted and left. I mean, to some extent, we benefited from that. They ended up coming to Reddit. That was a harrowing few weeks to have to upscale, but it's a cautionary tale and it's kind of locked in our user's memory as a thing you can do wrong. We already have this beautiful thing. Why would you go along and change it? And more than anything else, what I want to emphasize here is that considering how rough it is to onboard on Reddit, whenever the user signed up, the site was perfect for them in some way. They actually were able to go over that hump of actually logging in and deciding to vote and deciding to comment. So with those kind of boundary conditions in mind, let's talk about technology. With the advantage of having not really changed the stack for nine years, we had the chance to actually pick the newest and greatest technologies to actually build a new stack on. I often equate it to we're going straight from coal to nuclear or solar, depending on what you think of those things. Skip all is intermediate level, so you don't really need them. And so we, as is the style of the time, decided to try this out in React, and we also decided to try this out in a smaller test case, which is on our mobile site. So, speaking of old experiences, here's what our mobile site looked like a couple years ago. This is actually still available from I.Reddit.com if you want to see it. It's totally functional, but you can see it's got a slightly different view. I think we had originally optimized this site for blackberries. You'll remember blackberries, they were a thing. And the nice thing about having this as an available platform to build on top of is that we could actually kind of mess with it, not really worry about upsetting our users as much. And kind of, we already had the mobile apps to build against. And so the first rewrite we did was a total and utter disaster. Part of the process of learning to build in React was learning how not to build in react. And so what we did initially was we were using React kind of as a templating system, but it's not really that. And we were able to basically at that point quickly iterate and build a second version, which is actually the current state of the mobile web experience, and kind of get the kinks out. This is all to prep for doing the major web rebuild. And so the web rebuild actually was kicked off really Quickly. So this is kind of end of 2016. We had a single engineer over the Christmas holidays decide to just on his own, start building a new version of Reddit. With React, we were kind of hemming and hawing a little bit about when to actually started. And this is the initial version of that. So you can see it's missing a whole bunch of stuff like there's no voting arrows, but the core functionality of there's a listing of things and there's some units on the side, and we've got even thumbnails included, was all put together really rapidly. So two weeks of work. So what I'm trying to emphasize here is the initial team was tiny. So we started this in December of 2016. At the time, the company size was only 150 people. Engineering being about 70. We've always been relatively small as a tech company. We're currently at around 400. Just to kind of set a scale, we had two engineers decided to spearhead this work. And at that point, we really quickly discovered this actually had some legs. And so we started to actually build out a team. And so this also meant doing things like building a cohesive design team from scratch, which means a situation where you don't have engineers doing design work, which turns out to be a really good idea. Another of those early discoveries, we also started building up a product. Org and we hired a director to actually run this whole thing. I will say that the director we hired at the time when he actually was thinking of taking the job, he told his wife he was leaving a nice job at Microsoft. And he told his wife he's going to go to Reddit and she gets out of her computer, she looks up Reddit, she just looks at him. It's like R E D D I T Reddit. You're going there, really? And it worked out for him in the end. But there was some home sailing that had to happen. And just to sort of describe to you the fact that this was a tiny initiative initially was actually a big advantage. The quote from the engineer who kicked this off basically said, with unlimited power, we would have picked a different language, but instead we decided on Typescript in an hour, possibly over lunch. By mid February 2017, it was working well enough that it was mandated to be the way. So the ultimate flexibility of this team and the small size to start off with was a huge advantage in kind of kicking off the project, which has generally been an advantage for the company. So with that in mind, that leads to the process of how do we actually get this Thing rolled out well, it's a long, drawn out process. So here's the graph of the kind of timeline we aimed for going from all the way through user testing into something like GA. The time scale for this process is about 18 months. We are still actually in the last little bits of it down in GA. We are about 50% rolled out right now. And part of that was actually to get a dedicated UX team. So the intent here is to build a product to work around this new product. And since the redesign is going to be the main new product surface, we had to make sure that we had design teams that were not only able to build in this redesign, but also to federate out across the Org so that other teams could start building against this platform we hadn't actually launched yet. We also set up our first ever user research team. I joke about the fact that our users always tell us what's wrong very quickly, but it's kind of good to be able to get that up front before you've launched a ga. So in this case, we had our user research team actually reach out to users and ask them what they think. And that included new users who had stories like, I don't know what I'm looking at and power users, which boiled down to why are you trying to kill Reddit? And between that and hundreds of hours of videos, we had a chance to actually get a sense of how to make a redesign that covers both sides of that spectrum. And the most important thing is our Alien got a redesign. We gave him a third dimension. I'm actually kind of astonished we now have 3D mockups of our Alien, which is really funny considering the first version, I think, was drawn in paintshop pro 12 years ago. Some issues that came up here, one of the major ones is css. So one of the things we decided to do early on is as part of allowing communities to customize, we gave them the ability to build CSS as they wanted it, so they could actually skin their site to look like whatever they wanted to. So here's an example of what the RuPaul's Drag Race community looks like. The amazing thing is, you wouldn't kind of believe this is Reddit. The side effect of doing css, besides the fact that you can make these really amazing custom integrations, is that it totally locked in the dominant. We couldn't actually make any changes to the core site because even moving a div around was going to be enough to screw up the CSS of hundreds of communities. And it was very hard to Actually test. So we decided on another approach, which is this thing called structured styles. Over the course of several years, close to a decade of having CSS available. As you can imagine, CSS is kind of a very rough tool to use when you're not actually a web designer or a web developer. So what had happened was we had a set of effectively CSS style packs that were passed around between communities, which meant that there was an opportunity to kind of like grab the first 90% of features that were covered by CSS and integrate them as an actual toolkit that could be applied. And so the intention here is to make an actual UI for styling communities. And in that case, you can kind of see there's some ability to actually make changes not as rich as css, but kind of, but at least close enough. Another issue with Reddit is white space. Here's what Reddit looks like when you're in compact mode. You can see why our bounce rate is kind of high for new users in that case. It's very dense, there's a lot of text, and our users who actually like density love it. I've heard it compared to, it's like having a terminal interface for the web, which again, not a really sexy product, but very useful high utility. So what we decided to do was basically create different compactable modes. This goes all the way from a standardized card view mode where you have Instagram or what have you style giant image with a title down to let's just compress everything we can get in on a page. It actually turns out that when we built this mode, the density is actually higher than it is for the old site, which was something that the engineer on this project was really proud of, that he could cram in just one more link on standard resolution. Okay, so another thing is taking this all from the top performance. Say what you will about old and creaky monoliths, but they tend to be performant because most of the bugs have been cleaned up over that intervening set of years. One of the main issues also with a traditional web app is that it is all server rendered, so it is effectively instant load. Switching to react means that we are going to start doing all this rendering in place via some sort of API call, which means that even if the total time is the same to the user, it feels a lot slower. The user is actually sitting there waiting for the loading page because the shell loads instantly. The result here is basically to measure everything. We had to basically instrument the entire stack in JavaScript to make sure we know what's going on. Another problem is just generally scrolling. Reddit is just text has been a joke for a very long time, but we need to make sure that the new design has the same kind of buttery, smooth scrolling that you expect from the old site. What that actually meant is building tooling. So here's a tool that one of our devs built where every time a container on this page decides to reflow or repaint, it actually blinks. So you can see that the stutteriness in the scrolling is a side effect of you get the sidebar refreshing and rebuilding, you've got the main content well redrawing and this kind of gets into that learning how to use the new tools we have available to us with React. With this tooling available, it actually made it a lot easier to make it look like this. So same kind of thing, no more repaints, much better experience for the user. And this has been an ongoing process. In fact, if anything, right now one of the main initiatives to getting to GA is to continue to iterate on performance and make sure it's as performant as the old stack, if not better. Another fun thing to bring up here is as we started to roll this out to users, we got a good set of responses that were basically conspiracy theories, which are my favorite thing on Reddit, I have to say. Here's one. Actually there was complaints about the speed and the user reverted and said I still have performance issues after opting out of the redesign. This seems to be because anyone who's using the redesign as an option in their preferences and it's sent to a version of Reddit which looks like the classic view but has the performance problems of the redesign. This is actually really clever. I wish I had thought of doing that, but it actually turns out that the preference was working as expected. They were going back to the old site. I think that becoming cognizant of performance issues meant they started seeing them everywhere, which is a funny side effect. Another one, three ads and eight posts. This is a little ridiculous. We had a PM who replied, hey y', all, this is definitely a bug on our end. We'll look into it. Sorry about that. We actually meant to have every post be an ad. I just love that one. Funny enough, in the last couple days I found out we did have a bug where actually every post was an ad, so hilarity ensued when that one happened. Now, the side effect of doing this as kind of a slow rollout over the course of so long is that we've actually had the ability to take advantage of our community to help us. This is above and beyond the feedbacks side. The community will actually kind of do some of our work for us to some extent. So they want to see us succeed. And so we've had users actually building complete style guides on how to use structured styles without being asked and just basically in their free time. I think that the most delightful and humbling part of Reddit is the fact that there are so many people who are willing to dedicate their free time to make a community better with nothing than their own sense of goodwill to get from it. So it's really amazing. We really appreciate it. Okay, so the long story short, tldr here, listen to your users. They don't always know exactly what they want, they generally will tell you what they don't want. And so the fun part is always trying to navigate the path in between to give them what they actually need. So the last thing I want to talk about is the kind of making sure to be guided by data. So launching this. As you can imagine, the side effect of doing a major overhaul on something like Reddit is that Reddit as a product works. Changing the product means we're effectively going to be throwing out years and years of optimizations or even just kind of like ways of using the site. And so part of that is actually building up a modernized analytics pipeline as well. So here is the state of the analytics pipeline in 2015. It's very boring. Basically we did log processing and generated some graphs. Not a lot of insight into how this product works, to be honest. It's resilient, it's fast, and it gives us basically no information about users are actually doing. So part of the fun process here was to actually turn that into this. Of course, there was a couple steps in between. We didn't just jump straight into this one. But the idea here is to actually not only have log analytics, but to have Kafka consumers that can go through, listen to events, have those events get populated, get sent to BigQuery where they can actually populate dashboards, keep track of what users are doing, and start to actually build feedback mechanisms. Reddit has never been much for doing recommendations or optimizations. And so we tried to set the groundwork of not only knowing what our users are doing, but using that information to help improve their experience. Kind of live, which is the part with this giant loop around the outside. It's been a heck of a lot of fun. So part of building events is knowing the events are actually firing. And so we built an event debugger so here's a new version of Reddit, and we had this little side panel that devs could pop up and actually see events as they're being sent to the server, so they could actually make sure that things are being properly metriced. We found all sorts of hilarious cases of things where we were somehow measuring that things are being hovered but not clicked, which is kind of an important thing to keep track of. Also, hover events tend to flood your pipeline very rapidly. So here's that kind of showing, and the result of this is being able to build dashboards. So here's kind of what the live rollout of the stack looked like over the course of many weeks. You can see that all the graphs are kind of up and to the right because we're kind of graduating traffic. We're able to keep track of not only what users were doing, but where they were interacting on the site, where they were using the redesign. It gave us a chance to basically figure out if, you know, is engagement down, what communities are actually functional in the redesign. Generally, are users using it as they should be, as they're intended to be using it? This is in addition to overall feedback and so final reveal slide. I think I've kind of given a lot of pictures of what this looked like over time. Here is the kind of the current old stack and here's the new stack. And, you know, it's not drastically different. It's different enough that users still complain about it because we change things. But the intent is to not build a site that looks like everything else, but a version of Reddit that looks familiar in a modern setting and just want to end with a thanks to the team here. This is the final group of the redesign team. The original engineer who started this is Niranjan, the guy with the hat in the back, who kind of kicked this off in his spare time. This is Anand, who's our director on this. And it's been a really fun experience overall. And with that, I'd say thanks Obligatory. We're hiring. We are mostly still based in the US but we're looking everywhere these days. And more than anything else, thanks for having me.
More from Chris

Reddit CTO Chris Slowe: The Engineering Decisions That Built the Front Page of the Internet

Chris Slowe (CTO at Reddit) Fireside Chat at Startup World Cup Grand Finale 2023

How We Are Building External and Internal Communities at Reddit - Chris Slowe, CTO at Reddit

How Reddit CTO Chris Slowe Started His Career | How to Run a Tech Company ft. Reddit CTO






