In short
Podcast Notes: Engineering at Discord with Justin Beckwith
Episode Overview Podcast Title: Software Engineering Daily Episode Title: Engineering at Discord with Justin Beckwith Description: Discussion with Justin Beckwith, Director of Engineering at Discord, covering the development of the platform, its evolution as a developer ecosystem, and insights on engineering practices.
Key Participants
- Justin Beckwith: Director of Engineering at Discord, leads the Platform Ecosystem Organization.
- Sean Falconer: Podcast Host.
Discord Background
- Discord launched in 2015, initially targeting gamers but has since expanded to various communities and businesses.
- The platform was designed to be extensible from day one, allowing developers to build apps and integrations.
Justin Beckwith's Journey to Discord
- Previously focused on enterprise software and cloud platforms (Azure, Google Cloud).
- Joined Discord about three years ago, drawn by the vibrant developer community already present.
Developer Platform vs. Consumer Focus
- Key Differences:
- Expectations on Stability: Enterprise platforms prioritize stability and long-term roadmaps; consumer platforms require quicker iterations and adaptability.
- User Experience (UX): Consumer-facing platforms must balance developer needs with end-user experience while maintaining a light touch on breaking changes.
Extensibility Philosophy
- Discord's founders aimed for an open and extensible platform, encouraging developers to build creatively.
- Early iterations of Discord allowed for rapid development and experimentation, leading to a vibrant developer ecosystem.
Key Engineering Challenges
- Transition to Slash Commands: Improved the way chatbots operate within Discord for better UX and privacy.
- Shifted from bots listening to all messages to using structured slash commands for user interaction.
- Focus on maintaining user flexibility while implementing necessary structure.
- Security Considerations:
- Implementing iframe security to protect user data while allowing developers to build engaging experiences.
- Proactive measures were taken to avoid risks like exposing user IP addresses.
Activities Platform
- Overview: Enabled developers to create HTML5 games and activities that leverage Discord's social structure.
- Development Process:
- Developers can integrate with Discord using an NPM module that includes SDKs for session management, invites, and game interactions.
- Games run in iframes with security restrictions to safeguard users.
Challenges in Developer Experience
- Encouraging developers to leverage the social aspects of Discord in their applications.
- Managing scaling challenges when apps gain unexpected popularity—similar to the "slash dot effect."
Future Focus
- Improving the user experience in games and activities on Discord.
- Building partnerships with existing gaming frameworks (e.g., Phaser) to enhance developers' capabilities on the platform.
- Continuing to expand the monetization options for developers, including in-app purchases and subscriptions.
Unique Aspects of Discord's Ecosystem
- Community-Centric: Discord fosters niche communities, allowing specialized apps and games to thrive.
- Whimsy and Fun: Importance of creating engaging, light-hearted experiences to connect users.
Conclusion Justin Beckwith emphasizes the significance of integrating social dynamics into app development on Discord and how the platform continues to evolve as a central hub for gaming and community engagement. He highlights that the future will focus on enhancing developer tools and the overall user experience for activities and games within Discord.
Key Takeaways
- Discord's success lies in its community-driven approach and its commitment to extensibility.
- Understanding the balance between developer needs and user experience is crucial in building successful applications on the platform.
- Ongoing challenges include managing security, scaling, and fostering innovation in a rapidly evolving landscape.
Written by AI. May contain mistakes. Listen to the episode to check what was said.
Transcript
Automatic transcript. May contain errors.0:00Discord 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.
0:50Justin, welcome to the show. Greetings, Sean. Thanks for having me. Yeah, absolutely. So you're a director of engineering at Discord, leading platform ecosystem. 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.
1:27But 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, 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 and work on something that inspired people.
2:00How do you think working on something where you're building essentially like, you know, still building like a developer platform. So this is like designed for developers, but the sort of end user of the developer is going to be consumer. How do you think that might be like different from the types of work that you do versus, you know, B2B sort of technology SaaS or some sort of, you know, 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, you know, enterprise developers are still developers.
2:29consumer 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. 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. There are these very, very hard and fast rules about how you break things and never breaking the platform.
3:01And 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 versus 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, 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.
3:39Yeah. 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 kinds 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.
4:14We 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 a consumer platform doesn't mean that you can just go break things. It just means the cycle can be a little bit different.
4:44I 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, has 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?
5:18And 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 They had this vibrant community of passionate developers.
5:48And 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 OK. 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.
6:22And 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 also in a time where companies like Reddit and X or Twitter have actually closed down their APIs. It feels like Discord's 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 seemed to be like investing resources into that. You know, given that they already had sort of this thriving developer ecosystem when you joined, like what were some of the like focal points and areas that you like initially jumped into and thought either they were a problem area or maybe there were things, you know, they weren't doing today that needed your expertise to kind of get in there and take care of?
7:11Right. 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 you would build a bot. You would listen to every message that came through on a WebSocket. 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?
7:50It 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, 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.
8:26And 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 hacker-eating 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?
8:59I 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 rolled 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?
9:25So 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. We want them to want to move to this new system. And so we spent a lot of time thinking through the end user implications of what we were building.
9:57Yeah. 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 difficult to use? If I think about back in the early days of 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 multiple musics playing and there's all these slow loading graphics and stuff like that. Because there was no guardrails around what anybody could do. So you're just having people create these horrific websites.
10:33How 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 a decent user experience? 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.
11:04If 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.
11:38And the last thing we want to do is have the out of the box experience be compromised 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 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 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.
12:16Developers don't have to think as much about how is this formatted on mobile? How would 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 like in particular, like gaming development, where I think like Discord has been really successful. like just so much has gotten easier you know when i think back nearly 20 years ago when i got into building games for a while like it was just a lot of work like it was c plus plus open gl direct x you know there's a lot of math physics but game engines have kind of you know 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.
13:07And I'm curious, I know you're more on the sort of, you know, developer ecosystem side, but what are your thoughts on how some of those things, 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 where I'm all for 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. And then we're like opening the possibilities of what can get built out there, right?
13:40And 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.
14:20And it's been just a ton of fun to work on. Yeah, you get a lot of the, like, you're basically providing a lot of the sort of social communication infrastructure that for any kind of modern game, you 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. Talk to me a little bit about activities and how that works from the development standpoint.
14:53Like, how do I get out, you know, 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.
15:29But 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 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.
16:04But 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 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.
16:38So 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, you know, we're 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.
17:15So 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?
17:48That'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.
18:17And 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 then can I monetize my game through like downloads or installs? Yeah, absolutely. So, I mean, not through downloads or... I just not really in downloads. ...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 it's called premium apps. And this works across both actually slash commands, traditional apps on Discord, as well as activities.
18:50And 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 rolling out the embedded SDK? Like you said, the activities platform was something you were working on for a number of years.
19:19Like 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 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 the main point of the app, which is connecting with people, chatting. And so I think that the first challenge is there.
19:50I 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 we get into the technical side of the house, I would say the number one challenge we faced initially out of the box was that security problem. We wanted to be so careful here because we have what is an iframe running inside of Discord, 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.
20:21That 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 has experts in building web games. 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. 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.
21:05And 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, you know, empty marketplace is not very exciting. Yeah, we 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, Letter League, kind of some of the classics when 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.
21:43And 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 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. 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, like, what's it look like as a game embedded in Discord versus, you know, me having essentially a conversation with the other people who are actually also playing the game?
22:21Yeah, so there's kind of two different modes that you can you can play these games. And one is through starts with a voice call. And that's kind of been the original mode. And it's right now our most popular 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.
22:47And 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. 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?
Read the full transcript
23:21Like 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 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.
23:50So 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?
24:20Do you want it to be private matchmaking? Really thinking through that can be helpful in figuring out how successful your game's 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. I mean, I'm not on Facebook a lot of these times, so I might be like, I need to ask my parents who are on there. 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 has been so successful with this? And what's different about it versus some of the things that were happening 10 years ago on platforms like Facebook?
24:59I 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.
25:36We 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 the kind of the social aspect that we add into the whole thing that makes it that has made it successful. Yeah, since you have these social groups and a lot of this focused on, you know, 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?
26:11I 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?
26:43Yeah, 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.
27:13For 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 like, you know, niche groups and niche experiences 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.
27:46And one of the first apps that we had built, this isn't an activity, this was just a standard bot that got built here, was a turnip app. And the thing was silly, it 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 it and take them with them. And it lets you give people turnips, it lets you have like an economy of turnips and a whole, 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 just made people so happy and it grew like wildfire internally in Discord.
28:23We ourselves are always using these kinds of bots and 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. Like that's the magic of Discord. It's the magic of extending it too. I think that's also probably the magic of sort of democratizing some access to like being able to build these types of experiences too. You know, if you're not so limited by the like technical like 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.
29:04Yeah, I mean, it's so hard to build a lot of the underlying primitives for communication into your game. Like 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, we're 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 of width for a simple bot, all the way up to a full blown, you know, game title that runs inside.
29:35And 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 app ideas 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.
30:08So 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 definitely a subset of apps that are doing that. And Midjourney is an interesting example of one that started in Discord, used 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.
30:47You're not going to get the most out of the platform that way. Like the sweet spot are 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 the sort of embedded activities compared to the traditional bots and other types of integrations?
31:20It'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?
31:51Yeah, 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.
32:26So 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 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.
33:01Yeah, I mean, there used to be the whole like, was it slash dot effect or? Slash dot. it. We're going in the way back machine. I love it. 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.
33:35for 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.
34:03But yeah, once something gets viral, it getting slash dotted, 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 a really hot show on a streaming platform or something like that. Suddenly you're getting a lot of signups.
34:35So how does that sort of 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. I mean, 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 A few of the AI apps that really took off, like 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.
35:12But 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 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 about all the way from the top with React Native.
35:46Sometimes 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 an 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.
36:28I'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, you know, 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 going sort of outside of the infrastructure question to more this growing trend that's been happening in the industry with, you know, Gen AI.
37:09we talked about, you know, mid-journey and the impact that had. But like, how is generated 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, like, you know, 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.
37:42Now Viggo will be 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 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 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.
38:13That 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 like making, being able to build games that feel native, like, are you thinking you'd actually provide the library support to do like, essentially the graphics of the game?
38:50I think this is where we take advantage of a lot of the great work that's already out there in the community, right? Like 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 deepen and tighten those relationships a little bit and work more closely with all 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 developer experience for building these type of titles.
39:23And 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 and 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? No, just this has been an incredibly rewarding experience the last couple of years.
39:54is 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. And 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. And 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.
40:25Cheers.
From the publisher
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
The post Engineering at Discord with Justin Beckwith appeared first on Software Engineering Daily.
