cover of episode Engineering at Discord with Justin Beckwith

Engineering at Discord with Justin Beckwith

2024/12/10
logo of podcast Software Engineering Daily

Software Engineering Daily

People
J
Justin Beckwith
Topics
Justin Beckwith: 本期节目讨论了在Discord领导工程的经验,特别是平台生态系统组织的工程领导工作。他分享了加入Discord的经历,以及Discord作为开发者平台的演变过程。他重点介绍了从基于WebSocket的聊天机器人过渡到基于斜杠命令的模式,以及在保证用户体验和安全性的前提下进行这一重大更改的挑战。他还详细介绍了Discord的Activities平台,包括其技术架构、安全措施、盈利模式以及与其他游戏引擎厂商的合作。最后,他还讨论了生成式AI对Discord平台的影响以及未来发展方向。 Sean Falconer: Sean Falconer作为主持人,引导Justin Beckwith分享了他从企业软件开发到面向消费者的开发者平台的转型经历,并探讨了企业级开发者平台和消费者级开发者平台在开发模式、速度、稳定性以及对破坏性更改的容忍度方面的差异。他还就Discord平台的可扩展性、用户体验、安全性和盈利模式等方面与Justin Beckwith进行了深入的探讨,并对Discord平台在游戏开发和社交互动方面的成功经验进行了分析。

Deep Dive

Key Insights

Why did Justin Beckwith join Discord?

Justin was drawn to Discord because of its vibrant developer ecosystem and the opportunity to work on a consumer platform for the first time after a career in enterprise software.

What was the state of Discord's developer platform when Justin joined?

When Justin joined, Discord already had a thriving developer ecosystem with developers building chatbots, slash commands, and rich presence features. The platform was core to the product and inspired developers to extend its functionality.

How is building a developer platform for consumers different from enterprise platforms?

Consumer platforms require faster velocity and adaptability, as they need to react quickly to user demands and trends. Enterprise platforms, on the other hand, prioritize stability and long-term roadmaps with minimal breaking changes.

What was the first major project Justin worked on at Discord?

The first major project Justin worked on was transitioning chatbots from listening to every message to using slash commands, which improved scalability and privacy while maintaining feature parity for users.

What challenges did Discord face when transitioning chatbots to slash commands?

The main challenge was ensuring that users didn't lose any functionality during the transition. Discord had to provide a structured system that felt familiar and user-friendly while improving privacy and scalability for developers.

How does Discord balance user-friendliness with developer extensibility?

Discord allows developers to build creative experiences, even if they don't look perfect, as long as they don't compromise the out-of-the-box user experience. The platform provides structured tools like slash commands to ensure consistency and ease of use.

What is Discord's Activities platform, and how does it work?

The Activities platform allows developers to build HTML5 JavaScript games that can be embedded within Discord. These games can be played in voice calls or text channels, with Discord handling the social infrastructure like voice, video, and chat.

What are the security limitations for games built on Discord's Activities platform?

Games are restricted to web-based technologies (HTML5, JavaScript) and cannot expose users' IP addresses. Discord proxies all communication to ensure security and prevent direct user-to-user or user-to-developer interactions.

How does Discord's Activities platform impact game distribution?

Discord provides a fast path to users and distribution for game developers, making it easier to reach a large audience. The platform also offers social features like voice and video chat, which enhance the gaming experience.

What are some technical challenges Discord faced with the Activities platform?

The main challenges included ensuring a seamless user experience within a chat app, securing the iframe environment to prevent data leaks, and optimizing performance for web-based games to run smoothly on both desktop and mobile.

How does Discord support niche games and experiences?

Discord attracts communities of interest, allowing niche games and experiences to thrive. Developers can build apps that cater to specific communities, leveraging Discord's social layer to create unique, engaging experiences.

What is the future focus for Justin and his team at Discord?

The focus is on improving the Activities platform, making it easier for developers to build high-quality games that feel native to Discord. This includes enhancing social interactions, performance, and user experience for embedded games.

Shownotes Transcript

Translations:
中文

Discord is a popular communication and streaming platform that was originally launched in 2015. It was first popularized in the gaming space, but its user base has grown to include a broad array of communities, businesses, and social groups. Justin Beckwith is the Director of Engineering at Discord. He leads engineering for the platform ecosystem organization and has played a pivotal role in developing Discord's embedded app SDK.

Justin joins the podcast with Sean Falconer to talk about leading engineering at Discord. This episode is hosted by Sean Falconer. Check the show notes for more information on Sean's work and where to find him. Justin, welcome to the show. Greetings, Sean. Thanks for having me. Yeah, absolutely. So you're Director of Engineering at Discord, leading platform ecosystem. I want

I wanted to just start off by having you kind of walk us through, walk myself through some of your journey to Discord. And what was the state of the product as like a developer platform when you joined? Yeah, so I had a really unique opportunity in joining Discord. It's coming up on three years since I've been here, which is hard to believe. And before this, most of my career was really in enterprise software.

So I'd worked a lot on cloud developer platforms, had an opportunity to work on Azure, on Google Cloud, a couple of different platforms there. But this was the first consumer platform I had a chance to work on. And one of the things that really drew me to it was that there's this large, vibrant, excited kind of platform.

There's just a whole slew of developers that were already there. They were already building things, building chatbots, slash commands, rich presence, all kinds of any way that they could extend what was on Discord. People were trying to do it. And it was kind of a unique opportunity to walk in where that ecosystem had been defined. It was kind of core to the product. And I'd have a chance to come in and work on something that inspired people.

How do you think working on something where you're building essentially like, you know, still building like developer platform. So this is like designed for developers, but this sort of engineering,

end user of the developer is going to be consumer. How do you think that might be different from the types of work that you do versus B2B sort of technology SaaS or some sort of managed service or something like that? It's a really interesting question. I think that there are a lot of places where they're similar at the end of the day. Enterprise developers are still developers. Consumer developers are developers. And we want a lot of the same things. We want great documentation. We want walkthrough guides. We want SDKs, command line tools, etc.

I'd say the places where it was uniquely different really came around velocity and stability. So I think on an enterprise platform, you kind of have it beat into you where it's like, you want to know your roadmap, you want to have that three-year roadmap. Some places I've worked, we had public 12-month roadmaps where we talked about what we're going to release, right?

There are these very, very hard and fast rules about how you break things and never breaking the platform. And in a lot of cases, and sometimes in enterprise software, crummy UX is okay. The number one thing that you need is the ability to get the job done. First, make the API exist. And then if we want to make it easy to use, or if we want to go have great UX behind it, then we can go focus in there.

And I think what I've found is that the expectations on a consumer-facing platform for developers, they're a little bit different, right? Like it's expected you're going to move faster. It's expected that just the nature of the product itself is

It's not going to be as predictable where we're going to go from one quarter to the next because we're trying to chase users and we're trying to react more quickly than a large enterprise scale platform. Yeah, you and I were chatting before we started recording. We were both at Google at the same time. You worked in cloud. I worked in cloud. I think cloud, you're dealing with like a 18 to 24 month public roadmap.

Any breaking change of an API is probably going to be like a year and a half minimum deprecation cycle or something like that that you're going through. Do you think when you're building like a developer platform where the end user is going to be consumer, are people sort of more forgiving of those kind of breaking changes or are the same expectations there?

Yeah. So I think that this is where it's like the same expectations are there for the end user. We can't do anything that's going to break end users, right? That would be a complete failure for us. And we absolutely don't want to willy-nilly introduce breaking changes. And so that's one of the things with the activities platform that we've put out there that we've been very careful, right? We've worked with a lot of partners. We've spent a couple of years actually building this thing out, getting it stable, making sure that we had a good handle on the primitives of it.

But just because it's for a consumer platform doesn't mean that you can just go break things. It just means the cycle can be a little bit different. I think that the industry just moves a little bit faster. Yeah. I think one of the things that's really interesting about Discord is that it was designed, from my understanding anyway, to be extensible and sort of adaptable from day one. And I think it's really hard to build a product that has a singular focus and

has your product market fit and be really good at that while also being good at being extensible and being extended in ways that probably the founders never ever thought anybody would extend it in that way. Can you talk a little bit about, as far as you know anyway, the decisions behind that and what was particularly difficult about pulling some of that stuff off?

Yeah, I mean, I think that you'd mentioned it being maybe extensible in ways that, you know, maybe the founders didn't think of. That's actually not true. Jason and Stan, the co-founders of Discord, they constantly talk about the value of it being an extensible platform and how that was one of their goals, actually, from day one.

And I think that made it a lot easier for me to walk into this job where they had this kind of running head start. I'd mentioned it already had this vibrant community of passionate developers. And it's because it was built like that from the beginning. And they kind of erred on the side of make it open, let people use the platform in the way that they're going to use it. Early on, we might change some things. We might break some things and that's okay. We know that people are kind of coming in and just trying to build against it. But they definitely started with that philosophy of keeping everything open and then just

seeing what people would build. One of my favorite things when I joined here, we have, of course, all of our communication at Discord is through Discord. And AppCity, the channel where we communicate most with the team, has this kind of channel description on it that says, you honestly wouldn't believe the things that people make. And it's really resonated for me. And it's turned out to be entirely true as you see the stuff that people just kind of come up with and build.

Yeah, it's kind of interesting in, you know, also in a time where, you know, companies like Reddit and X or, you know, Twitter have actually closed down their APIs. It feels like discourse kind of going the other way where they're actually leaning into this even more. And it's becoming, you know, it was already a developer platform, but there really seem to be like investing resources into that.

Given that they already had this thriving developer ecosystem when you joined, what were some of the focal points and areas that you initially jumped into and thought either they were a problem area or maybe there were things they weren't doing today that needed your expertise to get in there and take care of?

Right. So, I mean, in terms of like needing my expertise, that's certainly not the thing that I provide for the team most of the time. I'm there to kind of guide, unblock, you know, very much in the style of letting the experts that we have do their best work. But the first place when I joined the team that we spent a lot of time was kind of helping shepherd this transition with chatbots, where originally the way that chatbots kind of were born on Discord because everything was just open was

was you would build a bot, you would listen to every message that came through on a web socket. If that message summoned your bot, sometimes it was with, you know, like a bang and then the bot name, then you would parse the message and react to it and then respond just like a user would, right? It was effectively using the same APIs we used in the client to send and receive messages. And this worked kind of initially out of the box, but as we grew and as more and more users came on board, we realized, well,

One, that was a pretty difficult way to build a bot because you had to handle the scale of listening to every message in every single server and responding to that. And two, from a privacy standpoint, we didn't want to put users in a position where, you know, as these bots proliferate, they could start collecting all these messages and doing whatever with it.

And so one of the things that was put into motion before I got here, but I had to help see it through, was this transition to what we call slash commands. And that's effectively building a model where a user has to summon the bot in a very specific way. You register your commands. It has different sets of data types. We can provide really nice, fancy UX over this to make a great user experience. Whereas before it was a little bit more hackery and kind of terminal feel. Now we have broad, rich UI that makes it easy to use.

But kind of helping the team through that and what that breaking change meant, what was a reasonable amount of time to give developers, how do we communicate it, how do we make sure that we have all of the features that we need in place before we kind of make this migration? I would say that was the first big project that I got to work on when I came in. So ironically, it was thinking through a breaking change.

and how we roll that out in a way it's safe for users. Yeah, so what were some of the decisions that had to be made in order to do that gracefully? I think the biggest issue there is always going to be trying to give the same amount of features that users are accustomed to. So we wanted to make this change that we thought was going to be good for developers and was going to be good for users. We want to make sure we did it in a way where they weren't losing anything, right? So we want the same level of flexibility, but most importantly, we wanted users that are using these bots day in and day out to be able to do most of the same things.

So a lot of the decision-making was how far do we build, right? How do we take this system that was completely open-ended, put some structure around it, give it some nice primitives, make it feel good, make it feel like it wasn't just we're asking users to move just because we asked them to. We wanted them to want these bots, right? Like we want them to want to move to this new system. And so we spent a lot of time thinking through the user and user implications of what we were building. Yeah. How do you sort of manage to strike a balance between...

making something that's user-friendly to the consumer, but also extensible to developer to a place where you're not able to extend it

where it becomes just like difficult to use. You know, if I think about, you know, back in the early days of like MySpace and some of the things that people could do, you'd hit a MySpace page and your browser would basically crawl to a halt because there's like multiple musics playing and there's all these like slow loading graphics and stuff like that. Because there was no like guardrails around what anybody could do. So you're just like having people create these horrific websites. How do you basically give people the freedom to create while

essentially putting some limitations around what it is possible so that they are always creating like a decent user experience? It's a great question. I think I'm kind of of two different minds here. I'll be honest with you. I think, you know, on one hand, if you want to have a truly open platform, you have to be able to accept that people are going to build things that maybe don't look great or don't look the way you would have built it.

And if it's not popular and if it looks bad and if it isn't a great experience, they're not going to use those apps. If someone creates an app for your phone that looks terrible and doesn't use the right primitives, then you're probably not going to go download and install that. Right. But if it does something great, if it does something novel, if it does it in a way that we never imagined you building it.

Like that's the goal, right? And you can't get that level of creativity and you can't get that break out of the norm and the expectations unless you get a little bit more freedom on what they can build.

So that's kind of like one piece of it where I definitely have, that's my general mindset. That having been said, we also want to make it easy for developers. And the last thing we want to do is have the out-of-the-box experience be compromised, like on Discord for something you can do with a developer. And I think that's where with slash commands, it's a great example where we spent just a ton of time, like stylizing it, having developers provide us with a declarative way to say, these are my commands, these are the inputs.

giving them structured ways to provide output, not completely giving up formatting. And one of the advantages of that that we get that's obvious is kind of to the user getting that level of consistency. The other kind of hidden advantage that you get out of it actually is managing a lot of the things that come from having a desktop web and mobile platform.

developers don't have to think as much about how is this formatted on mobile? How does it look with this device? How does it look in this situation? And we can do a lot of that for them. Yeah, I think there's a lot of stuff that has gone into not only making development easier, but also in particular gaming development, where I think Discord has been really successful. Just so much has gotten easier. I think back nearly 20 years ago when I got into building games for a while, I

it was just a lot of work. It was C++, OpenGL, DirectX. There was a lot of math, physics, but

But game engines have kind of lowered the bar there, made things much easier. And then with Discord, you're getting cross-platform compatibility. And then as a game designer, you have kind of like a fast path to users and distribution. And now you throw in things like Gen AI and just even using it as a development tool, it was probably easier to build a game now than it ever was. And I'm curious, I know you're more on the sort of developer ecosystem side, but what are your thoughts on how some of those things and...

in particular, like Discord and the distribution that's available there has impacted how we build games and design games and what kind of games are possible.

Yeah, I think that's one around all four democratizing developer platforms, right? I think anywhere in the industry where we can make it easier for more people to build, especially folks that are creative and don't have traditional backgrounds, maybe in computer science, then we're like opening the possibilities of what can get built out there, right? And I think those are all positive. I think that's been one of the funnest projects I've ever worked on here at Discord has been the release of activities.

and making it so that developers can build HTML5 JavaScript games, put them right into Discord. And I mean, web games, that's not like entirely new, but I think the twist that we're able to put on it that's a lot of fun is sort of bringing the social structure to that game.

So instead of starting a game, you know, maybe on your own and then going off and playing it solo, it's something you can do with friends. You can do it in a video call, have context, have video, voice, chat, all of that just kind of already taken care of in there and then bring your game into that environment. And it's been just a ton of fun to work on.

Yeah, you get a lot of like, you're basically providing a lot of the sort of social communication infrastructure that for any kind of modern game, you're probably would have to build from scratch if you didn't have it out of the box through a platform like discord. Yeah, I mean, if you're already here, you're hanging out, you're with your friends, and you want to find something to do, it's nice to just have it out of the box, be able to go into our app launcher, pick a game, and you just get all that stuff for free. Mm hmm.

Talk to me a little bit about activities and how that works from the development standpoint. How do I get out building one of these? Yeah, so we have a lot of great guides. We were talking earlier about standing up our first developer relations team here at Discord over the last couple of years has been fun. And so we have great documentation on discord.dev that goes step by step. But at the end of the day, the games that we support right now on the platform, they're web games.

They're HTML5 and JavaScript. You host them. We have an NPM module that has our SDK that kind of gives you all of the hooks into Discord. So you can get things like session start, knowing what people are playing, invites, sharing interesting things that happened back in the game back out. But you, for the better part, can build a standalone HTML5 JavaScript game, add the social layer in with Discord, and then go through some lightweight steps to publish it in a way that we can access and launch it through Discord itself.

But at the end of the day, if you're comfortable with web development, web game development specifically, it's pretty easy. And then as a developer, I'm using the embedded SDK to build those experiences. And then is that loaded up essentially as like an iframe embedded directly within Discord? Exactly. Well, it's...

It's an iframe, but it's locked down in a variety of ways to make sure that it's safe for all of our users that are using it. But yeah, it effectively loads the whole experience inside of an iframe in the client, and that's both desktop and mobile platforms. Yeah, what are some of the limitations that have to be put on that to make sure that it's secure? I'm sure there's a number of privacy challenges as well that come along with that. One of the nice things about working at a company with a world-class security engineering team is

is that they really helped us make sure we got that right. And we've had a couple of years to work on it sort of out of the gate. In terms of how it limits what you can build, most of the things that are really limiting there are like, well, A, it is limited to web. So we're not able to go provide things like native game development just yet. That's not something that we can go out and build. So it's restricted to HTML5, JavaScript,

And any feature that has a risk of exposing the user's IP address to other users or to end developers, those are actually things that we try to avoid as well. And I would say that's probably where the majority of the limitations come from, honestly, is that

At the end of the day, Discord is a communications platform that is primarily working with the people who game. And one of those big risks in gaming communities is having someone get your IP and then getting DDoSed while you're trying to play a competitive game. So that's something we're incredibly sensitive to. And when you're dealing with something like an iframe or a web app like this,

We have to be really careful to restrict which APIs you can put into place and how you build it to make sure you do it in a way where there's no direct communication from user to user or even user directly to the developer. We actually proxy everything. And then for me, if I build one of these games, these activities, I put it in Discord's app store, people are installing it, it gets really popular. Is it on me to essentially be able to scale the infrastructure to match how much interest there is essentially?

That's exactly right. We definitely discussed the idea of having our own hosting platform. That's something that we went back and forth with a number of times. But at the end of the day, the variety of ways in which people can build these backends, the richness of them, the differences from one game to the next and what its requirements look like, we really wanted to leave that to developers to be able to own the intricacies of that stack.

and own how they're going to scale it. We have some developers that have their own whole backend ecosystem that's common across all of their games, regardless of where they run. And so we didn't want to dictate the backend to developers. But yeah, ultimately, they're responsible for how they scale and the stone of triumph, how they carry that. And can I monetize my game through downloads or installs?

Yeah, absolutely. So, I mean, not through downloads or... I just not really a download. Specifically. Yeah. Downloads, not really a thing in this case. Yeah. But that's something that we've been working on for the last year as well is what's called premium apps. And this works across both actually slash commands, traditional apps on Discord, as well as activities. And we've had a number of features we've rolled out where we'll do all the payment platform stuff for you. And you just have to integrate. You can sell in-app purchases, subscriptions,

We have some new things that are about to come out in the next couple of weeks that are going to continue to make that better. But we've been actively working there for a while and all that stuff's out and you can absolutely monetize. Yeah. And then were there particular, I guess, like technical challenges with rebranding?

rolling out the embedded SDK? You said the activities platform was something you were working on for a number of years. What was some of the big challenges there besides some of the security things that we mentioned? Well, I think we talked a little bit about building out a developer platform for a consumer ecosystem and how that can be a little bit different. I think the first thing we really needed to nail down was the user experience.

Playing games inside of a chat app comes with a number of like interesting UX challenges and figuring out how to do that in a way that's delightful and gets people coming back and doesn't interfere with like the main point of the app is like connecting with people chatting. Right. And so I think that like the first challenge is there. I mean, yes, there's a bunch of interesting technical challenges, but the first ones were really the UX and making sure we got that right.

When getting to the technical side of the house, I would say the number one challenge we faced initially out of the box was that security problem. You know, we wanted to be so careful here because we have what is an iframe running inside of Discord, you know, making sure that nothing can escape that iframe, making sure it doesn't get access to anything on the user system that it shouldn't have access to, pen testing that, trying out all kinds of different ways to make sure that we'd covered all of our bases.

That was one of the key technical challenges that we had going in. When it comes to the titles themselves, because actually many of the initial activities are actually built by Discord. We have an in-house studio that goes and is experts in building web games for

Performance was really a bit of a challenge because we have these games we want to build. We want to have great experiences. These are game developers. We have a Discord that have worked on large AAA titles, and they have very specific things they want out of that experience. They want it to be great.

But building it in a way that runs on the web, that is also rich with features, gameplay mechanics, performance, and would run not only on a desktop, but on a mobile device in an iframe was actually a pretty big technical challenge. And it's been inspiring to watch them work through that.

Did you have to do some work to like kind of seed the marketplace of the app store essentially with building some in-house apps to launch with something like this? Empty marketplace is not very exciting. Yeah, activities have actually been on Discord for a couple of years, but they've all been those first party ones that we've built. So these have been titles like Chess in the Park, Poker Night, Let

Letter League, some of the classics we wanted to put out there to feel out, is this something users want? And so I think out of the gate, we had over 40 titles that were available before we went to GDC last year and opened this up for anyone to start building. And then even during that time, over the last couple of years, we've been working with a bunch of other game studios. So we ourselves tried it out. We built some titles. We had some games we felt great about. We worked with other partners like FRVR, a couple other companies, and

to release their titles that we thought were really exciting and captivating on the platform. And also to make sure we had the API right. You know, if you're the only one that's tested your API, you can't be sure that you have that thing right or that others could use it. We wanted to get that validation as well. In terms of the UX, what

What's it look like as a game embedded in Discord versus me having essentially a conversation with the other people who are actually also playing the game? Yeah, so there's kind of two different modes that you can play these games in. One starts with a voice call, and that's kind of been the original mode, and it's right now our most popular mode.

Where we get in, let's say that we're in a server and we get in a voice channel, we're talking and we just decide, hey, I want to play a game or I want to listen to music. That's another thing. We have multiple music activities that are available as well. Someone can click in on the app launcher while you're in that call. You pick the activity and then other people can just jump and join in. And you're still in the voice channel. You're still in Discord.

You have text, you have voice, you can scoot around the rest of the app, but you're just inside of the main screen playing a game. We also have outside of the voice call, if you want to have something that's a little bit more async, you can start these games from inside of a text channel as well. And let's say you want to start a game, have other people see that the session is happening, then join in without having to be in the voice call first. You can do that as well.

This episode of Software Engineering Daily is brought to you by Jellyfish, the software engineering intelligence platform powered by a patented allocations model and boasting the industry's largest customer data set. You know, one of the biggest shifts in the past year or so is the adoption of Gen AI coding tools like GitHub Copilot.

and engineering leaders are trying to figure out if their teams are actually using it, how much they're using it, and how it's affecting the business. Are they shipping more? Is more roadmap work being done? How do you know beyond anecdotes and surveys? That's why Jellyfish introduced the Co-Pilot Dashboard in 2024 in partnership with GitHub.

and since then they've analyzed data for more than 4,200 developers at more than 200 companies. Want to know an interesting finding? Developers are shipping 20.9% more with Copilot. The folks at Jellyfish have a ton more insights, and you can get started seeing your own team's data so you can plan and manage better. Learn more at jellyfish.co slash copilot today.

What about multiplayer? Like if I'm building one of these activities, like what do I essentially see as a developer to know how many people are there, like how I can help them interact with each other and so on?

Sure. So we provide APIs for that. That's one of the main benefits you have of building this into Discord is that you get that stuff kind of for free. So we give you a list of the current participants that are inside the call, people that are inside of the activity, and then you can build your game around that. One of the things that's been kind of interesting to work on is thinking through all of the models of multiplayer where it's like some games you can show up and if you're the only person there, you have to show up with other people in the call. So like small party games.

Others that have built on top of the platform will do global queuing.

So you can show up on your own and there's a global queue of everyone playing that game. And then you can still have that communication just with your group inside of the channel. But I think that this is something that's evolving and developers, since we've opened it up, are doing all kinds of interesting things we didn't expect, which is exactly what we were hoping for. But I think for people that are building these games, having a lot of clarity on what are the communication structures? Do you want global queuing? Do you want it to be private matchmaking? Really?

really thinking through that can be helpful in like figuring out how successful your game is going to be. There was a period where platforms like Facebook and other social media platforms were like really big, I think, in gaming for, you know, the Farmville era of like Facebook and stuff. I mean, I'm not on Facebook a lot these times, so I might be like, I need to ask my parents who are on there. But like, it seems like

They kind of blew up and then they have fallen off, at least is my sense. Why do you think that Discord's been so successful with this? What's different about it versus some of the things that were happening 10 years ago on platforms like Facebook? I think at the end of the day, Discord is built for gamers by gamers kind of platform. Gaming is through the DNA of the company. It's something that people here care deeply about.

And I think that we wouldn't put a platform out there that we ourselves didn't want to go use. That's kind of first in our hearts and like the first sets of users that we really think about ourselves. So I think that's kind of the first thing is it's not like this was a social media platform that we then added gaming features onto. It's always kind of been core to who we are and what we built.

I think the second thing is really starting with the social group first. We don't want to build a generic gaming platform. There are plenty of those out there. That has been done many times.

For us, it's about finding something to do with your friends. So having people that are here, we want better ways to hang out, better ways to connect and be together. And that's kind of the social aspect that we add into the whole thing that has made it successful. Yeah, since you have these social groups and a lot of this focused on connecting with your friends or at least like online communities that are similar to you, do you think that

This allows like sort of more niche games, niche experiences to be successful at scale than something like, I mean, it's hard to find essentially your audience if you are in a niche without something like this. I'm so glad that you asked that question. That's the magic of Discord actually, is that we attract all of these communities of interest and we help people that are passionate about niche things find each other and build their communities up.

And that doesn't go for just the servers themselves or the communication that happens there. It happens with apps too. We see this today with traditional slash command apps where...

You know, you can build something. Are you super into Magic the Gathering? Yeah, there's an app. Someone has built slash commands for that. D&D, we actually have Rule 20 that came onto the platform and released their platform through Discord. Even more niche than that, though, because it's open, this kind of gets back to what I was saying earlier, we can't predict what people are going to build. And you can extend Discord in any way that you want to that makes sense for your community. So I think that's the exciting part of all of this is watching not, yes, the big titles are important.

And we want people to launch games and get all kinds of eyeballs and become wildly successful as a business that's critical. For me personally, I love the niche stuff. I love something that's only going to make sense for one community and one server, but it solves their problem exactly. That to me is very, very exciting. Yeah, it's like most of the stuff that I've built in my career. It's like so niche that only myself and a handful of other people care. In terms of niche groups and niche experiences that have been built on the platform, what are a couple that really stand out to you?

Oh, goodness. I love the apps that get built that are just silly.

I'm personally one of my core values and something I deeply enjoy is whimsy. And I one of the first apps that we built this was this isn't an activity. This was just a standard like bot that got built here was a turn up app. And the thing was silly was built as an example of how to use user apps, which are like apps instead of installing it in the server, users kind of have control and they can install and take them with them. And it lets you give people turn ups, it lets you have like an economy of turn ups and, and

And it became like a gift-giving thing where someone did something nice for you and you're like, here's a turnip. Enjoy that. And it's a silly thing. It was kind of pointless, but it made people so happy. And it grew like wildfire internally in Discord. We ourselves are always using these kinds of bots as a way to communicate and show gratitude. And I think those types of experiences, the things that help me connect with people, show gratitude...

have fun, be silly. That's the magic of Discord. It's the magic of extending it too. I think that's also probably the magic of democratizing some access to being able to build these types of experiences too. If you're not so limited by the technical hurdle of actually building something, and you can focus a little bit more on your imagination, then it potentially opens up the world

of people that can essentially create experiences like this that maybe haven't been able to do that in the past. Yeah, I mean, it's so hard to build a lot of the underlying primitives for communication into your game. If you're starting with the game and then trying to build all of this, it distracts you from that end experience, right? Distracts you from the creative process of building the game itself.

So I love that we kind of were the social box that you can just kind of build within. You have the community existing and it kind of scales like you can start with something that's very little code that you don't have to build a ton with for a simple bot all the way up to a full blown, you know,

game title that runs inside. And you kind of get to scale based on your abilities and how deep you want to go. Yeah, I mean, I think it's really fascinating that like mid journey started on Discord, and you know, blew up from there. And it's like, probably not what you think is the most like natural path to using something like mid journey, but you know, it worked for them. And I'm curious, like, are people using Discord as almost like a place to test and

Since you have access, I think there's 200 million monthly active users or something like that on Discord. So you're able to reach a very large audience in theory quickly. So are people experimenting there and then maybe taking it outside of Discord as things develop and actually grow in popularity? I think

that yeah there's there's definitely a subset of apps that are doing that and you know mid journey is an interesting example of one that started in discord use that to kind of get their viral growth and awareness and to spread through communities

I know that they are going out there and building some standalone experiences, but kind of the magic of most of the apps that get built in Discord is using it with your friends. So if it's just an app that you're building to use for yourself or for like a utility app that's for one person, you can build that in Discord and we'll successfully help you scale it and you'll grow. You're not going to get the most out of the platform that way. Like the sweet spot are really, really the apps that help people do things together.

And I think that with some of those early AI apps, it's not that I could generate the image that made it fun. It's generating the image and then sharing it with my friends and then having them riff on it and then having that spur new ideas. So I think the real successful apps on Discord are going to be the ones that sort of embrace that social aspect. How's the user engagement been with like the sort of embedded activities compared to the traditional bots and other types of integrations?

It's still emerging. I think that the thing with traditional bots that you have to keep in mind is that those have been there on the platform since pretty much day one. As Discord grew, all of those existing bots grew with the platform and become kind of vital and integrated and important. Activities, like we have strong numbers, we're growing, more and more people are using it. It's not quite caught up to bots yet, but it's going to take a little bit of time.

What are some of the challenges as a third-party developer I might face when using some of the developer tooling that's available on Discord? Yeah, I think some of the biggest challenges we've seen so far for developers that are coming onto the platform. One is if you're an existing game studio, you're an existing developer and you want to build something, you know, the Discord's popular, it's out there, you know, you kind of want to figure it out, but you don't have a lot of expertise in it is,

building things in a way, just like I was saying earlier, that take advantage of the social aspect. I think that if you try to build a game where it's like you just come in, you use it, you play it, and you don't fully embrace the idea of people communicating and playing together, then you're not going to be as successful as someone that really understands the Discord dynamic and how those communities work. So I'd say that's the first place where folks that are maybe coming from traditional gaming backgrounds have had to go learn and had to learn the best way to integrate that

On a technical level, you also touched on this a little bit. I think the biggest challenge is dealing with your own success.

So if you're an indie, you're an indie studio, you build a title, you put it out there, you think this might be popular. And then we can have the effect of pointing 200 million monthly active users at an app and scaling it very quickly if it becomes popular. So as a developer, I think helping people recognize the potential for the scale of their success has been another interesting challenge. Yeah, I mean, there used to be the whole like, was it slash dot effect or? Slash dot effect.

Got it. We're going in the way back machine. Yeah, we're going in the way back machine, you know, where that was like for a blog article or something like that. But is that something that has like impacted existing people like building apps on the platform? Like it's like, oh, I built this for my friends and then suddenly it blows up and I'm like my server is just completely, you know, boiling over. That can happen. Yes, that's definitely a risk. I think for activities, because it's the second time we've done this, we kind of lived this with bots the first time.

For a lot of the partners that we work with, we give them some controls to do slow scale out, right? And we can control like, you know, how many impressions they're going to be getting, like where they get possession inside of our shelf. Some partners, we do geo rollouts where we'll start only say in Canada and do like a slow rollout that way so that they can scale up with it. And that has been effective. That's helped us out so far with activities specifically making sure that for the bigger titles that we know we're going to have this issue, we can work with them. And we have some tools, tools in the toolbox to help.

But yeah, once something gets viral, it getting slashed out and getting the Reddit hug of death, you know, all the Discord laser beam. These are all things you do have to be thinking of. What about on the Discord side in terms of, you know, infrastructure challenges? Like you've grown a lot, especially with the developer oriented platform, like

I would think that even as people are building games and a game gets popular, it could actually bring new users to the platforms too. It was kind of like having like a really hot show on a streaming platform or something like that. Suddenly you're getting a lot of signups. So,

How does that impact traffic that you have to deal with on the back end? Yeah, I'm going to be honest that we've yet to have something so successful that it has actually challenged us in terms of the overall scale of Discord. The platform is what, eight years old now. It's been out for quite a long time. Like I said, 200 million monthly active users. I would say the closest we've come is we've had a few of the AI apps that really took off. Midjourney is a good example where we noticed that one.

when it really took off. And so for those, there are some interesting backend challenges that our core tech engineering team will have to go solve from time to time. But for the better part, it hasn't been anything we couldn't handle.

Discord went through a huge boom during the pandemic in terms of growth. And it's in a really stable, great spot right now to handle that kind of traffic. So eight years ago, what's the kind of like backend stack look like, as much as you are familiar with anyway? Yeah, we actually have a great blog that often talks in detail about how some of the moving pieces here work. I love this question in interviews. It's actually really fun when I'm working on hiring and I was like, oh, what kind of languages do you use? And I get to take a deep breath and talk

Talk about all the way from the top with React Native. Sometimes you're in Swift and Kotlin. Sometimes you're mostly in TypeScript or React. Working all the way down to we have a Python API layer that is like the most basic HTTP API. Good old Python and Flask, just like anyone else would do. And for the core communication, the pieces that are really interesting are in Elixir running on the Beam VM, which is just kind of magical technology for anybody that has built a messaging app.

Once you find the Beam VM, you learn that everything starts to get a little bit easier and you can scale pretty well on it. For bits where we have very, very performance needy parts, especially coming from that API layer, we do a fair bit of rust these days for performance, stuff that has performance requirements around it.

I'm not familiar with the Beam VM. So what is that project? Yeah, so the Beam VM is just the virtual machine that if you build applications, originally Erlang, so a lot of telephony systems were built on top of Erlang running on the Beam VM. And more recently, most people that are targeting it are using Elixir as a programming language, which kind of has that like

a functional Ruby sort of feel to it. It has Jean-Claude Ruby. If you've never worked with Erlang and you start working with it, but it really just makes message passing and building high throughput messaging systems easier.

You're going sort of outside of the infrastructure question to more this growing trend that's been happening in industry with, you know, Gen AI. We talked about, you know, mid journey and the impact that had. But like, how is Gen AI impacting the Discord platform? Are you seeing a lot more app developers trying to build stuff related to that or even your own investments into the space?

I think that it follows the lines of a lot like any trend that comes and goes on the internet. I'm not saying this one will come and go.

But it's what's hot right now. It's what's fun and interesting. And so of course, when that happens, people are going to bring it to their social spaces. And it's been fun to watch Discord be the center of it in a lot of cases, especially with Midjourney, now Vigil doing a lot of the same things, but with the video. I think that Discord is a great place for it because it helps people share, build off of each other's ideas, and kind of be creative in a group setting. And I

And I think that at some point there will be the next wave and hopefully that one's on Discord as well. But I really think it comes down to that social aspect and sharing that makes it popular. What are you focused on, you know, you and your team for the next six to 12 months that you can share? Yeah, we want to make everything about building games on Discord, building activities better.

That means giving users more ways to interact with them, making it feel like a top-notch experience, making it feel like running it. You can build something as good as a native game that runs inside of Discord. We want to give them more ways to communicate with each other, invite people, build your social network, and do all of that on the app. So this year was really a lot of making it possible. And next year is going to be about turning that crank and making it great.

is what we're hoping for. In terms of being able to build games that feel native, are you thinking you'd actually provide the library support to do essentially the graphics of the game? I think this is where we take advantage of a lot of the great work that's already out there in the community. One of the companies that we've been working with is buildsphaser.io.

wonderful HTML5 JavaScript web gaming platform. We have other partners that we've worked with from the beginning that make that stuff possible. We want to like deepen and tighten those relationships a little bit and work more closely with all of the companies that are building game tech that lets you export to web as a target. And I think that the more we do that, the more that developers are going to get best in class, you know, developer experience for building these type of titles. And we can focus in on the part that we're good at.

Right. Yeah. So it's more about sort of partnership and creating probably like an integrated experience of like, here's sort of our opinionated way of building games on Discord. But you're not building everything, you know, soup to nuts from the ground up. Exactly. Unity is out there can export to web phaser is there, you know, there are a bunch of these web platforms that are quite good. How can we make them better? How can we work with them? That's what we're going to do. Awesome. Well, is there anything else you'd like to share? Yeah.

No, just this has been an incredibly rewarding experience the last couple of years. I think, like I mentioned, the magic of Discord is that it's here for people to have fun. It's here for whimsy. It's here to bring folks together. If people take anything away from this from a like why you should build on Discord, it's about integrating into that social layer. It's about integrating to like go to where people are already connecting with their friends and think about how you can build experiences that take advantage of that connection. Yeah, that's it.

Awesome. Well, Justin, thanks so much for being here. I really enjoyed this. Yeah, this was awesome. Thank you so much for having me. Cheers.