Mar 26, 2013

On Channel Following Limits

TL;DR: While trying to improve a critical part of Twitch, we made a hasty code change that limited the number of channels viewers could follow to 100. That was a mistake and we’re sorry! We’re raising that limit soon to 2000, with room for even more growth in the future.

We work hard each and every day to ensure that Twitch is the best place to broadcast and view live gaming video. We move very fast and deploy code all day long with the goal of making Twitch an even better place. Yesterday we deployed code that limited the number of channels a user could follow to 100. Below I’ll explain why we changed it, and how we’re going to address this issue.

Whenever you follow a channel, we create a follower relationship between you and the channel you follow in our database. This permits us to show you information about who you follow, and show channel owners information about who follows them.

From a users point of view this is wonderful. It lets us populate (the second most-visited page no our site) with a customized directory of live video.

We want to make the site even more customized and “live” — meaning that as someone you follow comes online we want the site to let you know. To do that we “listen” for updates to the channels that you follow. That listening process is data intensive — it taxes your network connection, it taxes your computer (only a little), and it taxes our servers. In order to ensure QoS and site stability, while renewing the site’s focus on follower relationships and live content, we decided that we should limit the number of channels a user can follow to 100. We low-balled it. By a lot.

Why? As developers we have a tendency to put nice round numbers on things. We chose 100 channels that a given user could follow because it seems big, particularly when we considered the “listening to updates” portion of this. If everyone that was on our site concurrently listened to 100 channels… well… that would be A LOT of listening taking place.

Making servers and server-side software run efficiently is a hard job by itself — compound that with the potential for unbounded computations, and you have a very hard job indeed. So, it is fairly common practice among engineers to limit things. Rarely do users discover those limits. For example, I don’t know if there is a limit to the number of people that you can follow on twitter, but I assume there is. I know that for a long time Facebook had a maximum number of friends that you could have. All of this is about being as efficient as possible, not only in server resources but also in user interface constraints too. Imagine, for example, following 10,000 broadcasters on twitch and then deciding that you wanted to unfollow some of them — you’d end up with a list that effectively scrolled for ever and that would be a UI nightmare!

Following relationships are proving to be quite the engineering challenge (note also last week’s site availability blip). We have a plan that will massively up the limit we’ve put in, from 100 all the way to 2000, with room to increase it even more if possible. Ideally we’d like to work out how to make this unlimited, but in the meantime we need to come up with a number that makes you happy while permitting us to make a better product, and ensure site QoS and stability. If we can make the upcoming features work for users who follow 2000 channels then I suspect we can make it work for numbers well in excess of that.

“So,” you might ask, “Will this happen again?” I can’t lie to you guys… probably. Twitch is growing very, very fast thanks to all of you. We are iterating on the product just as fast, which means we deploy code all day every day. Our goal is to make Twitch a better and more stable experience. We take a reasonable level of care to make sure we do not break things; if we didn’t take the care we do the site would be broken constantly.

We love working on this stuff — it is technically challenging and really rewarding. We’ll make mistakes sometimes, and we always strive to learn from them and not repeat them. Our core focus this year is to make the site absolutely fantastic to use, we will add to that core focus the aim to make these changes, no matter how amazing, as non-disruptive as possible.

As always, we’re listening. Feel free to jump into the comments below with your questions/concerns. Thanks for reading!

Mike — Director of Site Engineering, Twitch

In other news
Mar 26, 2013

Evolve Launches Universal Twitch Integration LIVE! From GDC

Evolve Launches Universal Twitch Integration LIVE! From GDC Post
Mar 25, 2013

Twitch at GDC 2013

Twitch at GDC 2013 Post