The Changelog: Software Development, Open Source - Open source threaded team chat?! (Interview)

Episode Date: September 5, 2024

We're joined by Alya Abbott from Zulip, the open source, organized, threaded, team chat for distributed teams of all sizes. We talk about Zulip's origins, how it's open source, the way it's led, no VC... funding, what makes it different/better, how you can self-host it or use their cloud, moving to Zulip, contributing and being a part of the community...all the things.

Transcript
Discussion (0)
Starting point is 00:00:00 What's up friends? This is the Change Log. We feature the hackers, the leaders, and those taking on Goliath, a.k.a. Slack and Teams. Yes, we're joined by Ali Abbott, one of the fine folks behind Zolip.com, the open-source, organized team chat for distributed teams of all sizes. And we're going through all the things, open source, its origins, what makes it different, why it might be better, how you can self-host it,
Starting point is 00:00:52 how you can use their cloud, how you can contribute, how you can be part of their community, all the things in this show. A massive thank you to our friends and our partners over at fly.io. That is the home of changelog.com. Over 3 million apps have launched on Fly. We're one of them, and we love Fly. And you will love Fly too. Check them out at fly.io.
Starting point is 00:01:18 Okay, let's zulu. Hey friends, I'm here with Dave Rosenthal, CTO of Sentry. So Dave, I know lots of developers know about Sentry, know about the platform, because hey, we use Sentry and we love Sentry. And I know tracing is one of the next big frontiers for Sentry. Why add tracing to the platform? Why tracing and why now? When we first launched the ability to collect tracing data, we were really emphasizing the performance aspect of that, the kind of application performance monitoring aspect, you know, because you have these things that are spans that measure how long something takes. And
Starting point is 00:02:01 so the natural thing is to try to graph their durations and think about their durations and, you know, warn somebody if the durations are getting too long. But what we've realized is that the performance stuff ends up being just a bunch of gauges to look at. And it's not super actionable. Sentry is all about this notion of debuggability and actually making it easier to fix the problem, not just sort of giving you more gauges. A lot of what we're trying to do now is focus a little bit less on the sort of just the performance monitoring side of things and turn tracing into a tool that actually aids the debug ability of problems. I love it. Okay, so they mean it when they say code breaks, fix it faster with Sentry. More than 100,000 growing teams use Sentry to find problems fast, and you can too. Learn more at Sentry.io.
Starting point is 00:02:46 That's S-E-N-T-R-Y.io. And use our code CHANGELOG. Get $100 off the team plan. That's almost four months free for you to try out Sentry. Once again, Sentry.io. I-O. So we are joined today by Alia Abbott from Zulip. Welcome to the changelog. Great to be here, yeah. Great to have you.
Starting point is 00:03:40 Great to have an open source chat application out there. And one with a storied history. You all have been around a long time. In and out of Dropbox even. I would love to hear a little bit about that story. Dropbox acquired and then open source out of that. Can you give us a little bit of the history? Really?
Starting point is 00:03:58 Yeah. Yeah, yeah. Zilp has kind of an interesting history. So it was started back in 2012. So before things like Slack were out there. That time it was not open source. It was just kind of your regular closed source startup out in Boston. And when it was still in private beta, the company was acquired at Dropbox.
Starting point is 00:04:18 At the time, Dropbox was exploring kind of different strategies with chat as kind as providing a suite of Office products alongside with the file storage. And then they went in a different direction and actually open-sourced the entire Zulip code base along with the full history of the project. So all that commit history, there was a Hackweek project to clean that up and make that something that can be publicly shared.
Starting point is 00:04:44 And they very generously, I guess, once it was open sourced, Tim Abbott, who was one of the original co-founders and was working at Dropbox at the time, started running that open source project in his nights and weekends in his spare time. And Dropbox also very generously gave the trademark for Zulip to Tim as well. So at this point, there's no relationship between Zulip and Dropbox. There's no relationship at all. Yeah, yeah.
Starting point is 00:05:10 But we're definitely very grateful that they decided that they would be happy to open source it, given that they were not using it themselves. Why did they make that decision? Do you know why that decision was made? I know Tim advocated for it. And that's really just they wanted to contribute to open source and just kind of a generous gesture for the community.
Starting point is 00:05:28 Well that's pretty cool. So when they when they bought Zulip or yeah I guess was it called Zulip from the beginning? Yeah the product
Starting point is 00:05:35 was called Zulip at the time. So when they bought Zulip and then Tim came inside of Dropbox was the original idea was to integrate and build that
Starting point is 00:05:44 as part of their product and they decided not to? Yeah, originally, I don't know the details of their strategy, but I think originally they had thought that they might build their own chat app. I know you probably maybe have heard of Dropbox Paper, Mailbox, they kind of were at the time acquiring startups in a bunch of the office tools, in the office tool space more generally. And then kind of company priorities shifted. The team,
Starting point is 00:06:09 the Zulip team ended up working on the core Dropbox product. And yeah, so they just kind of didn't end up going in that direction. Very generous to open source it though. And all the history. That's like kind of unheard of, wouldn't you say? And then be disconnected completely like no
Starting point is 00:06:25 back link or connection to it just like be free bird go fly yeah and one thing that's pretty cool is that um we actually still have some of zulip's like 2013 beta customers using zulip today continuously so they still have all their chat history that like we've kept that running for them throughout the years and they're still there so pre-slack like you said definitely not pre-chat though i mean irc yeah so like hip chat and irc were around at the time exactly hip chat campfire remember campfire yeah yeah yeah yeah those were. That was a competitive landscape at the time. Yeah, totally. What was Zulip's big idea then? Why did it begin to exist in the first place versus just using HipChat, for instance? Totally, yeah. So the big innovation in Zulip is how it organizes conversations. And the idea actually came from an older technology that was
Starting point is 00:07:21 popular at MIT at the time for lots of students and folks were chatting there. But what's different about it is how conversations are organized. So in some of the tools folks may be familiar with, you probably have channels and within that channels, a lot of discussion going on kind of like in that main channel feed, maybe you have some threads on the side. Zulip is different in that when you start a conversation, you give that conversation a brief topic. So something similar to what you might do if you're sending an email and you write a quick subject line for your email. And then when people respond to your messages, they respond within that topic. And so it's a little bit of extra effort to
Starting point is 00:08:03 start that conversation. You do need to give it a topic, but then it just makes a huge difference when you're reading your messages. So now instead of kind of everything being mixed up, you have these organized conversations labeled with our topic. And so you can come in and read your messages one conversation at a time, rather than everything happening chronologically. You could say, okay, people are talking about this. Let me read about that. Okay, I'm done with that conversation. Let me move on to the next one. And so it doesn't matter if people are,
Starting point is 00:08:35 and it's a busy channel, people are talking about 10 different things at once. It's just not a problem. You can read everything in its own context and you can have a conversation that goes across time. So maybe people are working async or just busy with meetings. And so somebody comes in a few hours later or a day later and wants to comment on something that was going on. Rather than getting kind of like lost in the noise, you have all that context in the same place.
Starting point is 00:09:02 So every Zulip instance has channels, which are like long-lasting things. And then the channels have inside of them topics. Is that the architecture? Yeah, exactly. Exactly. So, and then each topic is basically kind of a topic of conversation. And that can be very ephemeral, or it can be something that you come back to after a while and that, you know both both ways uh okay work
Starting point is 00:09:26 and what differentiates a channel from a topic is it merely the their position in that structure or is there something about a topic that's different than a channel because a lot of chat apps just have channels yeah and then inside there they're just chronological but then you can kind of like drill down in threads and stuff and I'm just trying to understand, are there actual data differences between a channel and a topic, or just where they exist inside of the hierarchy? The channel is very similar to channels
Starting point is 00:09:53 in other apps. For example, it comes with some metadata like subscribers, privacy settings, those sorts of things. And then topics are just another level of organization within that channel. So for example, for your subscriptions,
Starting point is 00:10:09 you would be managing your subscriptions to channels and then you would automatically see the topics that are in the channels that you're in. We do actually have ways to, within that, mute specific topics or follow specific topics. So you can kind of set your preferences there as well. But yeah, it's just kind of another level of structure.
Starting point is 00:10:28 And there's also ways to view, instead of viewing all your messages in a feed, you can also view the topics. So there's an inbox-style view where you can see your unread topics, and then you can just jump into the places where you're like, oh, this is relevant for me. Let me take a look at that. And there's also, there's another view that lets you see the recent conversations.
Starting point is 00:10:50 So again, kind of gives you different ways to summarize what's going on and really dive into what's important for you and where you need to participate. Does every message inside of a channel have to exist inside of a topic? Or is there also just like the, we're just messaging, we're not topicking? Yeah, that's something that's configurable by the organization administrators. In general, there's not a lot of need for these.
Starting point is 00:11:15 It depends. But in general, we recommend having at least the vast majority of the messages happen in topics. I mean, once you're replying to a conversation that's already ongoing, you kind of hardly notice this. It doesn't create any extra work. You just click in and you're replied. It's not like you have to retype the topic or anything else.
Starting point is 00:11:34 So it's really not a lot of overhead. And once people get the idea, it's really pretty seamless. And we also give folks tools to kind of reorganize everything if things do end up out of place. So you can move messages between topics as well as between channels. So especially when an organization is just getting started and folks are getting used to the model, that really lets you reorganize things
Starting point is 00:12:01 if things do end up in the wrong places. I suppose if you really wanted just like a general chat reorganize things if things do end up in the wrong places like we start with. I suppose if you really wanted just like a general chat inside of a channel you could just have a topic called
Starting point is 00:12:11 general chat and then you're just like Yeah, you totally could absolutely, yeah. You know, it becomes a junk drawer. If nothing fits here then it just fits
Starting point is 00:12:18 in the junk drawer and the junk drawer ends up being the only place people talk and then you're not using the tool right anymore. Definitely. That's the biggest struggle.
Starting point is 00:12:26 Yeah, and the thinking is really that people are, I mean, people are spending tons of time throughout the day on communication. Some surveys found that it's something like half of the time for a knowledge worker is spent on some communication of one kind or another. And so just making that more efficient can make a huge difference in terms of people's time
Starting point is 00:12:45 and if you think about what you're actually doing when you do communicate and when you do chat most of that time is really spent reading messages so of course you're sending some messages but there's more time spent ingesting content and so if that process is really smooth and seamless and feels structured and not chaotic that's going to make a huge difference for people's experience the other day. I'm looking at the screenshot on your homepage, which I assume is up to date. Is it up to date?
Starting point is 00:13:17 Yeah. Pretty accurate? Pretty accurate. Okay, cool. Because sometimes homepages get out of date, you know? They have a live demo there. Their personal chat is chat.zulip.org, like their dev chat, and you can join that anonymously, Adam, and then you'd have, like, you'd actually be using the software, which is pretty
Starting point is 00:13:33 cool. If you wanted to, like, actually see how it, and you can go through channels and topics, and so that's a, I found that to be a pretty good way of just seeing exactly how it works. Yeah, where would I go to do that real quick? Because I was trying to open that conversation, like get into the actual UI.
Starting point is 00:13:49 Yeah, I don't know where the link is, but just go to chat.zulip.org. And then I think I'm currently in the design channel looking at the channels and topic illustrations topic. And it's very active and scrolly. I was just looking for the most recent conversation. So that's kind of cool. As you hop in, you can see all the recent conversations and yes, you can jump into those different topics
Starting point is 00:14:11 and see what's going on there. It seems pretty well organized. I mean, we use Slack on the daily and we have slightly less organization. We have channels and now there's threads, which is kind of a bolt-on, which kind of can act as a topic but they're more like ad hoc like hey maybe i'll reply in the thread or maybe i'll reply to the whole
Starting point is 00:14:30 channel and then it gets to be like what's the idiom or what's the general like how what's the culture around threads how do we use them and people use them differently and it gets to be hairy because of that i think this this little bit of extra structure, which really isn't very much. It's like one more level of structure. It's like channel and topic might help organize your communications. And it seems like it is because you all still exist here 12 years later. Yes, 12 years later,
Starting point is 00:14:59 and now you're a thriving business on top of an open source project. So people must like this model. Yeah, I mean, we get lots of feedback from folks and that's really the biggest differentiator for people is that level of organization
Starting point is 00:15:13 just makes a huge difference in people's experience using the product. People tell us, sometimes I have to go back to Slack to talk to my customers and it's just so chaotic and it's just so chaotic. And just having experienced the level of organization within Zulip, other things feel, people start feeling like other things are messy and hard to follow.
Starting point is 00:15:35 Adam, have you clicked around enough now to formulate what you were going to ask before? Yeah. Have you found messages from me yet? I just, I do like it. So I'm going to paint a verbal picture of this visual i'm looking at so channels on the left topics to the right of me here i am i'm just stuck in the middle with us stuck in the middle you know nice well played great song by the way i like when you click on
Starting point is 00:15:59 a channel you see these topics and then if you click on show all topics you obviously get into a channel view with all the topics in it that you can filter and scroll and you can easily go back to channels yeah i'm not signed in so i can't see how like i start new ones but it does seem pretty snappy in terms of just how easily you can map around i just wonder if it's overhead on anybody's part to organize messages, organize topics, because you can, you know? That's what I was trying to figure out. Well, for the most part, it's kind of self-organizing. So just when somebody is starting a new conversation, they'll start a new topic. I mean, in the Zulip community, we do have a lot of folks who are new contributors or somebody who's coming in
Starting point is 00:16:43 because kind of like brand new to the product or just checking it out. So sometimes they might not be sure exactly how to name a topic well or where to post it. And then when somebody sees that it was posted on place, they'll move it around to where it should be. So it's not like a big job. It's just you're reading your messages. You're like, oh, this belongs to another channel.
Starting point is 00:17:03 Let me move that over there. It's kind of like a real-time forum in a way. You know, like when I'm on chat.zulub.org, it's got the feels of a forum and the feels of a real-time chat kind of combined into one, which is kind of nice because there's, you know, in forums you often are threaded conversations. They're obviously topic-based,
Starting point is 00:17:24 but they're not real- generally to my knowledge i mean i haven't been on a forum in like active i suppose since the where's days of my life but you know i'm on forums here and there i think there's some obvious ones out there but it's not active in them i'm very active in slacks multiple slacks not just our own and really no discords at all for me so my only really experience is like older hip chat days obviously campfire and then obviously now modern application irc did you ever get an irc yet a little bit you know a little bit honestly i just it was like i wasn't quite hacker then as much as i am now. So I didn't quite get into IRC. I tried. I was, but just not like steeped like real-time chat is. But this is kind of cool because it's kind of like a forum and a real-time chat all built into one.
Starting point is 00:18:13 And it doesn't feel overwhelming. Like you see this stream of content coming past you. I think there's some psychological things that happen in real-time chat applications these days that you feel like you have to keep up or there's just a stream of data it doesn't feel burdening thus far yeah and that's a really big thing we're trying to solve for as well the sort of feel like oh i you know somebody sent a message i have to respond right now otherwise nobody's gonna like it's gonna be messy it's gonna be confusing i'm not gonna be able to reply. How do I get back there? Yeah, exactly. And then that disrupts people's focus time.
Starting point is 00:18:51 Even if they are online, you want to be able to just dive into your work and focus for a couple hours and then when you need a break, maybe check in on your chat messages and follow up on stuff. Most of the messages people are sending are probably not so urgent that you need to interrupt your flow to jump in right away. And so that's part of the design here is that to really make it possible to say, okay, I'm going to dive into the code. I'm going to dive into my project and then reemerge and follow up on all the chats where I need to respond and then go back to what I was doing. The cool thing for us, Adam, if we did Zulip instead of Slack,
Starting point is 00:19:26 is it's self-hostable. You can also use it in their cloud, so you can pay them money and they will host it for you. But if you were to, I haven't looked at the cloud offerings or the way that it breaks out pricing-wise, you can obviously catch us up with that, but they can't hold our
Starting point is 00:19:42 chat history hostage. Our chat history is being held hostage. It is. And sometimes I look at that as a plus, like, hey, who cares? Sometimes it's nice that things disappear. And other times you're like, no, I told you this 91 days ago, and 90 days is the maximum. And so it's gone.
Starting point is 00:20:00 It's gone forever, and now we've lost that information. Yeah, well, now they're going to actually start erasing it after a year, I think, right? Oh, are they? Yeah, I don't know. I don't follow too closely along. Well, I've gotten a couple of those emails and they are scary to see. I was actually a little nervous because I was trying to quickly, as this topic came up in this conversation, to find that message. Because I do recall them saying recently to us that uh there's some updates required by
Starting point is 00:20:26 september or something like that and like final notices for x and i'm like like you jared i who cares in a way but then i'm like maybe i do care you know maybe i might care right now like they don't care until you do care right you're like oh no it was in the slack and then it's gone now and you're like yeah yeah i don't know do the Slack and then it's gone now. Yeah, I don't know. Do you know much about that, Alia? What the current state of Slack's... I imagine you're probably leveraging it in some way if you're not leveraging it,
Starting point is 00:20:52 you're getting the inbound of it, right? Well, we did... I guess maybe you guys remember it was a couple of years ago maybe now that Slack switched from letting folks see 10,000 messages of history to just 90 days on a free plan. And that was really, it was framed as kind of a positive,
Starting point is 00:21:11 but what we saw is a huge influx of folks, communities, who can't afford something like paying for a pro plan on Slack, leaving Slack and importing their data and moving to Zulub. And I mean, for us, we have a really robust sponsorship program for communities and open source projects, nonprofits, education, kind of all kinds of non-business uses for Zulub.
Starting point is 00:21:39 We really try to enable folks to benefit from our software. So we do sponsor free Zulip Cloud Standard plans for folks. We have, I think, over 1,500 sponsored organizations at this point, so it's a really robust program. That's quite a few. Yeah, and it's something that we really believe in Zulip as a way to help folks be more productive
Starting point is 00:22:01 and really help them accomplish what they're trying to do. And so we don't want to wall that off. And as much as we can, you know, of course, we do need businesses and organizations that can afford it to pay for the product. But otherwise, we really do want to share it as much as we can and like enable folks to do awesome things with it. Yeah, I found the email that was scary. This was sent on June 24th.
Starting point is 00:22:25 It says, free workspace content older than one year will be deleted. And then I won't read it all, of course, but it says this policy will begin taking effect,
Starting point is 00:22:34 get this, Jared, August 26th. Ooh. As if it is as ago. The 28th. Yeah. So as of this recording, recording on August 28th.
Starting point is 00:22:43 They're deleting our stuff. But it does say workspaces will be notified prior to the policy impacting that workspace. So we do have time. They haven't rolled it out yet. And it says your workspace is on a free Slack plan because, Alia, we are a community. You know, we want our...
Starting point is 00:22:58 We've been sort of hamstrung, I suppose, by Slack. We've always been dumbfounded that they would never have changed their tune towards communities and we have several communities in our sidebar that i'm a part of and i'm sure jared you're part of something i'm not but there's relationships and business there's partners were in their channels or vice versa and it always seemed like what's the line from goodfellas jared maybe it was one of the Godfather movies. I don't know.
Starting point is 00:23:27 Which one? It was basically Pay Me, you know? Oh, yeah. You know what I'm getting at here. Yeah, yeah. It's a PG show here. That's how I've always felt about Slack. It's just like not great company.
Starting point is 00:23:40 And I'm all for companies being ambitious and enterprise focused and all that good stuff. I'm not at all against that. But I was always confused by their seemingly inability to see the goldmine of community that had leveraged Slack in its free tier to not find a way to make them pay in some way that wasn't thousands and thousands. It only seemed to be optimized for the large enterprises only, not for the smaller communities at all. chat software that they use hours every day, and in our case that can help them be more efficient with their time, that's just so worth it
Starting point is 00:24:30 and it's a very reasonable way to do things. But if you're looking at an organization where the folks using chat are not your employees, so even if there's some kind of core employee corps, a few folks who are part of a business, but then you have a large community that are part of a business, but then you have a large community that's part of that organization. Now the pricing doesn't make any sense at all.
Starting point is 00:24:51 And so folks can contact our sales team for their specific situation. But in general, our approach is really businesses, it makes sense to pay that kind of level, but not for community members, even if there's a business involved. Plus, if you're doing long-term thinking, the way you all are doing it builds value over the long run. Because the price of you all providing these standard plans for, at this point, 1,500 organizations, which are community-focused, nonprofits, open source,
Starting point is 00:25:26 research, academia, et cetera. These are people who will use and love your product and it will help generate a network effect, you would hope, that would eventually bring their business to Zulip, their friend's business, when they go to ask them for a recommendation to Zulip, you know, their, their friends business, when they go to ask them for a recommendation to Zulip, who becomes a paying customer. And that stuff doesn't pay off in the quarterly or sometimes even the yearly, because you're actually losing money by giving this away to more people. But like on the, on the measuring 10 years, 15 years, 20 years down the road, that stuff compounds and becomes massive. And it's something that Slack, I think currently has to a certain extent is some network effects where it's like people already have a Slack app on their phone.
Starting point is 00:26:10 And so it's easy to add another Slack. In fact, yet another Slack is kind of a fatigue at this point. Like, oh, I have so many Slacks. I don't want to have another Slack, but it's a big advantage when it comes to getting people to use the tool as they've already used it, if they already have it on their phone or on their laptop. And so what you're doing is you're getting Zulip out there for these people, and you're doing good at the same time. So I applaud that strategy. Yeah, absolutely.
Starting point is 00:26:35 We definitely see folks saying, oh, I used it in, we asked folks who are creating new Zulip organizations how they learned about Zulip, and a lot of them say, I've used it in a Zulip organization before. And I think a lot of the time that will be like an open source community somewhere. And also, you know, another way that folks from these communities are really contributing
Starting point is 00:26:55 is that we get a ton of user feedback. So as you saw, our development community is open and it's open signups. So folks will just come and come by and kind of share how they're using Zulip, what they think could work better, any kind of bugs they encounter, but also feature requests, as well as like just posting and proposing feature ideas in GitHub. And we just have these like really open discussions with our users.
Starting point is 00:27:23 And that's really valuable for just figuring out the ways that we can improve the product. So when it comes to Slack, Adam, you and I have kind of have maybe two values that they hit on one of them. One of them's like high quality software and design. Like that's the thing that we both care about. And then the other one's like open source community ethos,
Starting point is 00:27:46 which Slack does not have. And so they have kind of one of both. We like to have them both. And high quality software in Slack, I think that's more questionable now than it used to be. I think they really did hit it out of the park in certain ways and were groundbreaking in certain ways. Recently, I've been less impressed after some redesigns, and I feel like it's kind of stagnated. Of course, they've arrived. They are now part of Salesforce and a big company and all that, and they have other people in their minds that aren't us. But I'm curious about Zulip when it comes to the software
Starting point is 00:28:20 and the way it all works, and does it fit into all the different places that you communicate because more often i'm using slack on my phone even even though i stand at my desk for hours every day you communicate all day long and all night long and so zulip on the phones android ios zulip on the web zulipip apps do you have all that necessary surface area accounted for and how do you all manage that? Yeah, absolutely. So Zulip you can use it just in a browser tab there's also a desktop app for all the major platforms
Starting point is 00:28:55 and then Android and iOS apps and we're actually currently in the process of re-rating our mobile apps from the ground up using a different framework. We're switching to Flutter-based apps. So our current apps are definitely functional, but not as sort of smooth and beautiful
Starting point is 00:29:16 as we would like them to be. And so that next generation app is really going to get us all the way there. So we're very excited for it. And for sort of old school folks out there, there's also Terminal Client for Zulip if anybody wants to use it that way.
Starting point is 00:29:31 How about API? Is it programmable? Yeah, there's an open API and actually our mobile and terminal apps use the API to communicate with the servers. So we're constantly kind of testing it ourselves and using it ourselves and relying on that documentation ourselves. So
Starting point is 00:29:47 absolutely. Is the desktop app an Electron app? It is, yes. Have you considered a Tori app? My understanding is that the engineering team was thinking about it and was kind of waiting for... Because if you wanted to get the nerds excited, I think, if you came out and said Zulip's
Starting point is 00:30:03 desktop app is now no longer using electron then it'd be like we just throw slack right out the window wouldn't we adam all of us nerds would be like ah finally something we can use here yeah pretty much Okay, friends, I'm here in the breaks with Annie Sexton over at Fly. Annie, you know we use Fly here at Change. We love Fly. It is such an awesome platform, and we love building on it. But for those who don't know much about Fly, what's special about building on Fly?
Starting point is 00:30:44 Fly gives you a lot of flexibility, like a lot of flexibility on multiple fronts. And on top of that, you get so I've talked a lot about the networking and that's obviously one thing. But there's various data stores that we partner with that are really easy to use. Actually, one of my favorite partners is Tigris. I can't say enough good things about them when it comes to object storage. I've never in my life thought I would have so many opinions about object storage, but I do now. Tigris is a partner of Fly and it's S3 compatible object storage that basically seems like it's
Starting point is 00:31:18 a CDN, but is not. It's basically object storage that's globally distributed without needing to actually set up a CDN at all. It's like automatically distributed around the world. And it's also incredibly easy to use and set up. Like creating a bucket is literally one command. So it's partners like that that I think are the sort of extra icing on top of Fly that really makes it sort of the platform that has everything that you need. So we use Tigress here at Changelog.
Starting point is 00:31:45 Are they built on top of Fly? Is this one of those examples of being able to build on Fly? Yeah, so Tigris is built on top of Fly's infrastructure, and that's what allows it to be globally distributed. I do have a video on this, but basically the way it works is whenever, like let's say a user uploads an asset to a particular bucket. Well, that gets uploaded directly to the region closest to the user. Whereas with a CDN, there's sort of like a centralized place where assets need to get copied to. And then eventually they get sort of trickled
Starting point is 00:32:14 out to all of the different global locations. Whereas with Tigris, the moment you upload something, it's available in that region instantly. And then it's eventually cached in all the other regions as well as it's requested. In fact, with Tigris, you don't even have to select which regions things are stored in. You just get these regions for free. And then on top of that, it is so much easier to work with. I feel like the way they manage permissions, the way they handle bucket creation, making things public or private is just so much simpler than other solutions. And the good news is that you don't actually need to change your code if you're already using S3.
Starting point is 00:32:50 It's S3 compatible. So like whatever SDK you're using is probably just fine. And all you got to do is update the credentials. So it's super easy. Very cool. Thanks, Annie. So Fly has everything you need. Over 3 million applications, including ours here at ChangeLog, multiple applications have launched on fly boosted by global anti-cast load balancing, zero configuration, private networking, hardware isolation, instant wire guard, VPN connections, push button deployments that scale to thousands of instances. It's all there for you right now. Deploy your app in five minutes. Go to fly.io. Again, fly.io. And by our friends over at Paragon, useparagon.com.
Starting point is 00:33:33 Check them out. Ship every SaaS integration your users need. With more than 100 plus prebuilt connectors, you can add dozens of integrations to your app quickly and reliably with their embedded iPaaS for developers. And I'm here with co-founder and CEO Brandon Fu. So Brandon, talk to me about the friction developers feel with integrations, SSO, dealing with rate limits, retries, auth, all the things. Yeah, so there's a lot here. And I think there's a lot of aspects to the different problems that you have to solve in
Starting point is 00:34:05 the integration story in building these integrations and also providing them in a user-friendly way for your customers to self-serve and onboard and consume those integrations. So part of what the Paragon SDK provides is that embedded user experience, again what we call our connect portal. That's going to provide the authentication for your users to connect their accounts that's going to be the initial onboarding but in addition to that your users may also want to configure different options or settings for their integrations a common example that we see for salesforce or for crm integrations in general is that your users may want to select some type of custom object mapping every crm can be configured differently so your users might want to map objects to some different type of record in their Salesforce
Starting point is 00:34:46 or different fields in their Salesforce. And typically, that's what developers would have to build on their own, is this UI for your users to configure these different settings for every single integration. That's also going to be what's provided by the Paragon SDK. It's not just that initial onboarding and authentication experience, but also the configuration end user UX for different settings like custom field mapping, selecting which types of features on your integration that your user might want to configure.
Starting point is 00:35:17 And that's also going to be provided fully out of the box by Paragon SDK. With integrations, different APIs might have different rate limits. They might have different policies that you have to conform with. And your developers typically have to learn these different nuances for every API
Starting point is 00:35:32 and write code individually to conform to those different nuances. With Paragon, because we build and maintain the connector with each of the integrations that we support in our catalog, we're automatically going to handle for things like retries, things like rate limits. And so we look at this as sort of the backend
Starting point is 00:35:50 or infrastructure layer of the integration problem that we have spent the last five years essentially building and optimizing the Paragon infrastructure to act as the integration infrastructure for your application. Okay, Paragon is built for product management. It's built for engineering. It's built for everybody.
Starting point is 00:36:08 Ship hundreds of native integrations into your SaaS application in days. Or build your own custom connector with any API. Learn more at useparagon.com slash changelog. Again, useparagon.com slash changelog. That's U-S-E-P-A-R-A-G-O-N dot com slash changelog. What are some of the biggest challenges you all are facing? Good question. I guess, I mean, one sort of thing that is complex for us is the competitive landscape, like Slack and Microsoft Teams
Starting point is 00:37:00 being the sort of big gorillas in the room. And Teams effectively gives away their chat for free, oftentimes as part of their Microsoft Suite. And it's really hard to get folks... At the same time that it's free, it's not free, right? In the sense that people are spending their time and their energy and their attention in ways that aren't making them productive.
Starting point is 00:37:30 Your employee's time is your most valuable resource, and so wasting that time and energy on an app that's frustrating or hard to use or is not organized in the ways that you'd want it to be is a major cost, but it's hard for companies to budget it that way and to really evaluate it that way. So I think one thing we're really trying to do is get better at telling that story and really communicating with folks and trying to explain this, make people really sort of
Starting point is 00:38:00 feel in their guts this sort of, okay, this app might be free or it might be kind of an easy choice like Slack for most. A lot of folks are familiar with it. Nobody got fired for buying IBM. Probably nobody got fired for picking Slack for their chat. And there's lots of things that are great about it compared to products that could come previously. But choosing a chat app is just so important to how folks are going to collaborate in your organization.
Starting point is 00:38:27 And so that's really the message we're trying to get across. And that's, I think, kind of a big challenge for us is to really get people off of their kind of default mode or the easy decision there and really get folks to consider and evaluate our product and to take that time and attention away from so many other things that they need to be doing to really think about this choice in a very intentional way. It is hard to compete against free, especially when the Goliath is giving it away for free.
Starting point is 00:39:00 Yeah, I mean, Microsoft is facing anti-competitive lawsuits in Europe because of how they've set things up yeah it's unfortunate especially you would think as a user like you said nobody got fired for buying IBM I don't
Starting point is 00:39:17 I didn't make that up but I don't disagree with it to some degree except for what if you're missing out on what is free and open source but you can also pay for it when the zolop name isn't as polished as maybe microsoft obviously you know that's that's the that's the hard part is that you kind of have to win them with showing up you know with the the open source-ness of what you're doing, the way you've been in the trenches with the communities,
Starting point is 00:39:50 the way you've sponsored things, not just simply the larger brand name and the literal freeness that you can get with Teams. Now, I know that at certain points, organizations have to pay for Teams, but it's pretty much free for the entrance. And then you pay once you're literally locked in. Yeah.
Starting point is 00:40:09 And I think in the past, a couple of things that have held us back have been, one, the design of the app. That's really something that we've been focused on improving. That's been a major, major investment for us over the past year or two and continues to be. For the longest time, our users would tell us that the user experience in Zulip is second to none, but the design could use some work. And that's not such a big problem necessarily for folks who have got, kind of like once you've gotten used to an app,
Starting point is 00:40:38 you might kind of stop noticing some of these things. But in the initial evaluation, it makes a huge difference. If you open an app, you're like, oh, this doesn't look modern. This doesn't look beautiful. And so we're really trying to get away from that and have folks have an immediate kind of like positive response to the app, as well as enjoying the UI over the long term. And then another thing we've been really focusing on is that the onboarding experience, because there is a little bit of a different mental model for Zulub
Starting point is 00:41:06 compared to other apps folks might have seen. And we do want to have that be easy to understand and easy to onboard people, easy to get everybody in your organization to have folks get started with that. And also, I think almost any app, when you first encounter it, might feel a little overwhelming.
Starting point is 00:41:25 If you've never seen Discord before and you open it up, there's a lot going on. But some of these apps that we're competing with, most folks have seen them before, and so now they have forgotten that first initial feeling of, oh, there's so much happening, it's different. So we really want to help folks through that experience with Zulip, because we do have a lot of users who are coming in
Starting point is 00:41:47 who haven't interacted with it before to really get them across this threshold of like, oh, I get it. This is comfortable. Some things about it are different, but a lot of patterns I'm familiar with from other applications work here as well. And it really is pretty intuitive once I have a handle on it.
Starting point is 00:42:05 Well, I asked in our Slack community just moments before hopping on if anybody's used Zulip and what they think about it and like one person said used it at a different company liked it a lot it's like it's kind of like slack the higher-ups replaced it with teams as Zulip wasn't quote auditable so that was it wasn't the free part it was the auditable which to me makes not 100% sense but there you go. Yeah I'm not so sure because we do provide different ways to
Starting point is 00:42:29 export your data including like compliance exports or you can just export it. I don't know. Okay. Yeah.
Starting point is 00:42:35 He says it was infinitely better than Teams. So there you go. All right. Well. So that's cool. But that's an example
Starting point is 00:42:42 of that kind of like what might be a little bit. I know it's like I guess folks have their own priorities and I don't want to like second guess the management so that's cool but that's an example of that kind of like what might be a little bit I don't know it's like I guess folks have their own priorities and I don't want to
Starting point is 00:42:48 like second guess the management but so it's just where that perspective of like your team's efficiency and how happy they are with the software
Starting point is 00:42:55 they have to use you know every day like I don't know anybody who likes Teams I know lots of people that use it
Starting point is 00:43:01 I'm not a Microsoft hater anymore I used to be when I was a younger man but I will say that I don't know anybody who says, like, Microsoft Teams? That's good software right there. We love it. No one says that.
Starting point is 00:43:12 Has anyone ever said that to you, Adam? Not directly. Indirectly? Like you were listening to them talk to their spouse or something? I don't know. I love Teams. Through the tea leaves or something. Now, Discord, people seem to love. And I'm not really sure why personally i've i've signed in i've joined some discords it seems like a hot mess to me but it's very big in like gaming communities musicians and
Starting point is 00:43:36 crypto scam artists i know use it other communities and i'm not sure what it is about discord i know they have some cool audio features built in. They kind of have a lot of different stuff because it came out of, I think, gamers would hang out and talk to each other initially. Do you have a lot of, do you ever have to compete with Discord? Do you ever have to explain Zulip in light of Discord and how you all differentiate from them?
Starting point is 00:44:03 So it depends. Discord is not so much designed for business use or use within organizations that needs to be closed and have sort of, because it's a single account across all your organizations, it's sort of a different structure there. We do have folks who are Discord users who have definitely requested some features that Discord has.
Starting point is 00:44:23 I would say that, yeah, their kind their video and calling and the way they do that is quite nice. And that's something we've heard folks interested in. Something that we're actually working towards is Discord has, maybe if you haven't administered organizations, you haven't explored that side of it, but they have really nice and flexible ways to manage permissions and groups within an organization. And so that's actually a big project that we have going on right now, like really, really flexible permissions management where you can create an arbitrary group and then
Starting point is 00:44:56 give that group kind of an arbitrary set of permissions within your organization. And that, I think that's going to be really, really nice for anyone administering a large organization. That's one thing I really wish we had in our Slack, Jared, is that we have people come and they share things they should not, a.k.a. spam. Yes. And I would just like to be able to eventually boot them because I delete the message. And I look at them and I'm like, well, you're clearly not here for the reasons everyone else is here for. You violated the code of conduct intended for this place. There's no way for us in our current state to enforce these kinds of things aside from just deleting messages. Sure, we could probably log into Slack and delete their user, but that doesn't
Starting point is 00:45:43 stop them from coming back. I'm not sure if any platform can really do that to prevent somebody from recreating a new account or whatever. and you're sleeping and I'm not because I'm in a different country. And if I see a spam message, it doesn't have to sit there for eight hours until the morning or whatever time it is. When we look at Slack again, it's like, well, hey, this thing has been sitting there with people piling on or looking at it or clicking it, and we can't do that stuff. So I wouldn't mind having some moderation tools. Yeah, we have some tools.
Starting point is 00:46:24 I guess if you deactivate a user, they won't be able to rejoin with the same email, and you can also disallow throwaway email domains if you want to prevent. Definitely it's helpful for preventing spam. Yeah. You can also, personally, you can mute a user. So if you, as an individual, don't want to see somebody's content,
Starting point is 00:46:44 we do let folks have the option of meeting that person and that just hides hides all their stuff um for you um so you never have to like interact with it it would be cool if you could auto block new users if they start a message with dear sir slash madam you know auto block sorry right right about i guess yeah some Autoblock, sorry. Right of bot, I guess. Yeah. Some sort of pattern match, I guess. Oh, yeah. Known. Yeah, I mean, it doesn't happen often. We get some spam here and there.
Starting point is 00:47:12 And mostly, I get it. Go join a Slack or find a place to belong and share your messages. And you do that with enough numbers, you'll get people. I get it. It's a numbers game, but it doesn't make any sense to me because you're not really getting the long-term benefit you actually want for a brand. So it's such a nasty thing, really.
Starting point is 00:47:35 And like I said, it doesn't happen too often, but often enough where I'm like, yeah, I wouldn't mind some tooling. What would a migration look like? So for something like moving from Slack Slack into Zulub? Just for instance. Yeah sure. Just for instance. As a random example.
Starting point is 00:47:51 Hypothetically speaking. Yeah yeah yeah. Apropos of nothing. Yeah so we have instructions on our health center for how to go about it. So basically what
Starting point is 00:47:59 you would want to do is assuming you want to keep your message history you can export that through Slack. It might be limited, I guess, now, depending on your situation. And then if you're moving, say, to Zulip Cloud, so that's our managed SaaS offering, you would just send over that data to us, and we would import that into a new organization for you. And so you could preserve all your,
Starting point is 00:48:26 not just the messages, but also the user data. So you'd have a running start on that. And then we also, I don't know if you guys have integrations, but also to make it easier to move over your integrations, if you have any, we have Slack-compatible webhooks. So basically you could just kind of remap where your webhooks are sending in their data to be Zulip. And then on your own time later on,
Starting point is 00:48:52 if you want to move over to more Zulip-native integrations, then you can do that, but things would be working for you right away. So yeah, and you and you can you can tell folks where to log in or we can automatically send emails to all the users
Starting point is 00:49:09 that you imported with their login information. So however you want to manage that. And they would just get an email and they would maybe have like a password reset on the first sign up
Starting point is 00:49:18 or like obviously you're not going to import their passwords. Yeah, and we have all the social auth as well. So if folks want to log in with their Google account or GitHub or anything like that, that's also on offer.
Starting point is 00:49:32 It's 90% of my anxiety, if we're hypothetically speaking about things. Yes, we are. I feel like I've been in this waiting pattern in my own brain. I haven't taken any action. I've been like in this waiting pattern in my own brain. You know, I haven't taken any action. I've been like just thinking that maybe Slack would someday get it and somehow just recognize that there's so many communities that have, you know, built up their thing around them. And that many of us in even developer land or just let's just say tech land have numerous
Starting point is 00:50:00 logos slash icons in our Slack sidebar. So we bounce from one workspace to another. And I like that. I don't want to be in a world where I can't, where I have to like still, I guess, keep Slack or I just like the unification of it. And as a user, I don't want to have to go to the Slack app and then the Zulip app and then the whatever app.
Starting point is 00:50:22 I would just like a unification if it was possible. I'm sure it is. I think there are some out there, but there's diminishing returns. My point is that I've been just anxious about what it would take to literally migrate if ever we actually had to, because we got 7,000-ish people in our main channel. Not all of them are obviously present and active every day. I'm sure some of them come and go. Maybe some of them lurk. I have no idea because I don't really have any analytics to our usage in terms of just beyond messages I'm paying attention to.
Starting point is 00:50:54 So I just wonder if we ever moved to something else, how much would we lose? How hard would it be to get even our active people to stay involved? Right, like would they come with us and would they continue to hang out? Or they'd be like, Zulip? What? Why? Yeah, I mean, I can't promise anything about your specific experience, but we have had folks tell us that when they moved to Zulip, they actually started getting much better community engagement because it works quite nicely for folks
Starting point is 00:51:25 who are not around all the time. So, I mean, in the one kind of category, folks, as you were saying, is there maybe people who are lurking or who are just kind of coming by once in a little while, once in a while to check in on something. And if you're coming to something like Slack, you know, it's hard to, you might see the latest messages. It's going to be not really possible for you to catch up on what you missed
Starting point is 00:51:50 if you're checking in every couple of weeks or every month in an active organization. Whereas for Zulub, if you just want to check in on things occasionally, folks will come in and they'll look at that recent conversations you maybe saw when you were exploring the app. And instead of having to look at individual messages and try to figure out what's going on, they'll just see that list of topics, and they can be like, oh, this topic sounds interesting.
Starting point is 00:52:12 Let me jump into that. And so you don't even have to feel obliged to make everything be marked as red or manage your own reds necessarily if it's just something where you're not following every little detail. You really can just skim that list of what's been going on and jump into the ones that are of interest.
Starting point is 00:52:30 And so, yeah, so we've had folks say that, you know, something like an open source project that it can actually really be great for community engagement because people can select the parts that are interesting to them and just follow those and jump in on those. You can even configure notification. There's a concept of following topics. So once you've seen something that's interesting, if it's a community you're not engaged with very regularly, you can follow that particular topic and say, get email notifications when there's more messages just to that topic.
Starting point is 00:53:00 And so there's really ways to follow specific conversations and find things to engage with for occasional users in a community i do like how you can set your zulip to public as well can you do that on like a per channel basis yeah exactly so this is something that um there's an overall organization setting for whether you will you want to have public channels as an option so for example you know many some businesses might not want to share anything and they just want to turn that all the way off. And then, yeah, for any given channel, you just configure it. You can configure it to be kind of public for logged in folks,
Starting point is 00:53:36 private or public even without logging in. So yeah, what you guys were seeing in the development community is a bunch of channels that we've marked as completely public. And then you can just kind of come by and not have to log in and just view messages there. And then, of course, if you want to participate, then you would create an account and log in and post. Now, are those public channels, do they get indexed by search engines?
Starting point is 00:54:00 They don't. We do have a way to, a tool for exporting your Zulu data, and then you can get that indexed by search engines and like a archive of all the messages. But it's actually kind of a major technical the reason is it's a major technical project
Starting point is 00:54:18 to make those searchable indexable by search engines and we just haven't had a chance to prioritize that project yet, but that's definitely on the radar, but it just requires quite haven't had a chance to prioritize that project yet. But that's definitely on the radar, but it just requires quite a bit of technical work to make that work. Yeah, I mean that would be pretty cool for public ones, because then it would double as an indexable forum. Because a lot of those conversations become kind of canonical resources, or they could be,
Starting point is 00:54:41 but they are lost to the ether. One thing we do a lot is linking to conversations. So you can link either to a conversation or even to a particular message within that conversation. And so, for example, when we, let's say, file an issue for a Zulu feature, we'll generally link to a conversation where we had some initial brainstorming discussion
Starting point is 00:55:02 of that feature. And so when folks are working on it, they can get that extra content and context. And then also, you know, if they have a follow-up question, they can just pose that question in the same conversation and continue from where it left off. So that linking does make some things easier to find. So one thing you might not know, Alia, about Adam is that he is an avid home labber. And so what would a migration look like to the self-hosted if Adam were to become our system administrator and run our Zulip community out of his home lab? Yeah.
Starting point is 00:55:36 What would that look like? Yeah. So it's pretty similar except for you would skip the part where you email us and do that for yourself. One less step. even easier, Adam. Exactly. Yeah, we have an installation guide that is pretty straightforward.
Starting point is 00:55:50 We really do work hard to make it easy to self-host Zulup and also make the installation process as easy as possible. Really smooth upgrade process when the new version comes out. So it's definitely a priority for us and there's detailed documentation on how how you need to do everything um so should be very doable for you if that's something that that you enjoy yeah you just have a docker image yes uh sorry this is not the part that i personally work on nearly as much as some other things um all good. But yes.
Starting point is 00:56:25 You hear that, Adam? They got a Docker image. Okay. And what aspects of Zulip Cloud, the hosted version, are completely inaccessible to you as a self-hoster? Are there specific features that you will never be able to use in self-hosted? Or is it all there, but you have to worry about backing it up
Starting point is 00:56:44 and making sure it's up and all that kind of stuff? It is all there but you have to worry about backing it up and making sure it's up and all that kind of stuff it is all there so zulip is 100 open source there's there's nothing that we're like locking away from from self-hosters if you self-host this is the one thing that so we do offer paid plans for self-hosters um you don't have to sign up for one but they're an offer and um the kind of two two things that two major things that we're providing with those paid plans so one is mobile push notifications so the way that app store policies work both on android and ios is that if you have a mobile app which are apps are 100 also 100 open source but you probably want to use the app that we put in the Play Store or the App Store
Starting point is 00:57:26 rather than kind of rolling your own, which is a whole thing. And so the way those App Store policies work is that a single app can only get push notifications from a single server. It's kind of like an anti-spam security measure on their end. And so for your self-hosted server to send notifications to the Zulub mobile apps,
Starting point is 00:57:51 what you do is basically balance that traffic through our server. And so that's a service that a lot of folks who are self-hosting choose to pay for as part of our plans. And then the other piece is just support. So if you want any kind of support with running your Zulub server,
Starting point is 00:58:07 there is community-based support in our development chat. So folks do come by and get some help there. But if you need SLAs or if you need something more than just asking a question on chat and seeing if folks are around to reply, then we do have support offerings as well. So those are kind of the types of plans for self-hosted organizations. I did find a repo,
Starting point is 00:58:34 and I know that you may not be able to go deep on this. If you can, it's okay. It's on your Zulip org on GitHub. It's docker-zulip. So I assume this is official. It's container configurations,zulip. So I assume this is official. It's container configurations, images, etc. for all of it. There's a Docker Compose file there.
Starting point is 00:58:52 Yeah, so I guess the way it's described in our docs is it's an officially supported experimental Docker image. Okay. Official yet experimental. So, you know, tread softly, but officially. 102 lines in this compose file. I mean, that's a lot of lines.
Starting point is 00:59:07 So you've got SSL certificates set up for folks. You can set up a custom CA certificate if you want to. You can point to a different Git repo. So you can point to the official or you can have your own fork, which I think is pretty cool. And you're just a dark compose up away from running Zulu locally. Sounds pretty awesome. And you're just a Docker Compose up away from running Zulip locally.
Starting point is 00:59:26 Sounds pretty awesome. There is also an architecture document on your docs, which I found to be pretty good at describing the way the whole thing works and the various parts. Postgres backend, they're using Redis and Memcached in certain areas. It's a Django web app for the backend. And then there's a single-page app, which is written in TypeScript, probably React, I'm not sure,
Starting point is 00:59:50 for the web and browser experience. Obviously, the mobile clients you mentioned are getting rewritten into, did you say Flutter? That's right. Yeah, and so they're all using that same backend API. Now, if you're self-hosted and you want to connect your phone app to that, are you just basically saying like zulip.changelog.com?
Starting point is 01:00:12 Like, would we just create a... Yeah, just when you sign in, you put in that URL for your server and you're good. Wham, bam. What do you think, Adam? You want to Dockerize us? Well, see, now that's a great question, obviously. But now you have to be your own uptime for your own chat apps. That's the high price of self-hosted.
Starting point is 01:00:33 That is the high price of self-hosted. I would want to compare Zulip Cloud and other ways first. But I'm not against the idea of self-hosting. I just think it takes a lot of responsibility to do so. Yeah. I assume how, how then maybe you answered this already and I was reading docs or the doc compose file while you said it.
Starting point is 01:00:56 And if I missed it, I'm sorry, but how does like your iOS Android app work with a self-hosted scenario? Do you point it at like a URL kind of thing like if I was yeah exactly asked and answered so when users log in
Starting point is 01:01:14 they'll just put in the URL for your server and then they're good to go you just cname a subdomain yeah so self-hosting yeah I mean you would have to have even if it was like literally self-hosting in a closet or self-hosting on DigitalOcean, Render, those are two that are mentioned in your docs. We obviously prefer Fly, Fly.io. Not paid to say that, but just definitely very passionate. So I guess we can self-host on Fly, right, Jared? We wouldn't have to self-host anywhere. I just thought it'd be cool to run out of your closet. It would be cool, except for, I think, I don't know if the uptime would be as good.
Starting point is 01:01:50 The ping, the latency, Gerhard may have opinions about it, that's for sure. It's just chat. Worst case scenario is we can't send each other memes for a few hours. I mean, we've had folks self-host Zulip air-gapped on a ship where they weren't going to have connectivity
Starting point is 01:02:05 with the wider internet, just as there's chat within that ship community. That's cool. So if we ever decided to travel the world, maybe on a sailboat? Yeah. Like our friend Alex McCaw did, we could have Zulip on that sailboat with us. That would be cool. Self-contained Zulip
Starting point is 01:02:21 and I guess local area network only, right? Yeah. Might not be required if you have five people on your boat. You could even go local machine only. You could unplug that machine from the whole internet and have Zulip just on that machine if you wanted to. Truth.
Starting point is 01:02:39 Truth. Not very useful that way, but you could do it. Via the terminal. The terminal app even. Yeah. not very useful that way but you can do it via the terminal the terminal app even yeah what's up friends i'm here with kyle carberry cto at coder.com so kyle i've known Coder as the IDE in the cloud, and over time, you've iterated to become a fully open source cloud development environment, a CDE. How do you explain what Coder is and what it does? Coder is a platform to provision you a development environment on any cloud infrastructure.
Starting point is 01:03:19 That might be in a VM, that might be inside of a container. But Coder is kind of a developer's route to provision infrastructure for them to write software inside of. We started with the IDE, which is kind of like putting VS Code in the browser, which is what most people are certainly familiar with us for. And we kind of funneled that into more of a platform where people provision the infrastructure. And a lot of people do use a web IDE with Coder. A lot of people use a local IDE and just connect in. Okay, so what are teams coming to you for? Who's coming to you? What people really come to us for, particularly this problem is
Starting point is 01:03:49 really exacerbated if you're a large enterprise, is when you have like 500 engineers that are trying to update like a version of Python. And instead, we allow one engineer to go through that tedious work of updating some scripts or some Docker container. And then you can actually just deploy that in one click to say like 500 engineers
Starting point is 01:04:06 and make it really, really simple. Let's laser focus in on the platform engineer. It is that team's job to provide the best infrastructure, the best platform for their given applications, for their teams. What are some signs or signals for platform engineers to think about when it might be time to consider a cloud development environment like Coder.com? So as a platform engineer, developers
Starting point is 01:04:31 might constantly be opening like IT tickets that their computer isn't working properly. They might constantly want to update dependencies, but that's a big mess. You constantly have to email people across your team to say, hey, Adam, could we update from Java 17 to Java 18? Those are the kinds of problems that people typically have. That's the status quo. You ship people more powerful laptops to improve the build times of your projects. You try to reduce the complexity of your products instead of simply leveraging better hardware. We believe that the future is leveraging the cloud for a lot of these things.
Starting point is 01:05:03 You can get more powerful instances in GCP or AWS that can make the build times faster instantly. You can let one developer create a standardized environment and then distribute it to a thousand so that when you're updating from Java 17 to 18, it's just a simple pull request. You can co-locate your servers right next to something like S3 or a database they're using in development so that you get immediate data transfers and it's not slow. Many of our customers, which is a crazy thing to say, but they use absolutely massive monorepos and they get clones that go from like 10 minutes or 20 minutes or an hour to simply like a minute or 30 seconds. It's just a lot simpler when all of your engineers are standardized on one centralized piece of infrastructure and then one person can impact
Starting point is 01:05:44 the lives of hundreds of engineers. And with that, we don't believe that everything belongs in the cloud. We think that some workloads are really amazing for it, and some are absolutely terrible. Coder should be a self-serve offering to your engineers. It should not be prescriptive, where you migrate all pieces of software development into the cloud. Only the things that really get a lot better
Starting point is 01:06:02 by running them in this cloud-n native way do we really promote moving. Well, it might be time to consider a cloud development environment. And open source is awesome. And Coder is fully open source. You can go to Coder.com, get a demo, or try it right now, or even start a 30-day trial of Coder Enterprise. Once again, Coder.com. That's C-O-D-E-R.com. Coder.com. Well, there's a terminal app. I haven't seen visuals of this yet. How cool is this terminal app?
Starting point is 01:06:52 Have you seen it, Jared? I'm excited for a terminal app. I think that's very hacker. I like that. Yeah, if you go to zilv.com slash apps, you'll see a link to it. There you go. Okay. Terminal beta. Cool.
Starting point is 01:07:05 It's very 2E-like, Jared. Obviously. It's an application. I do like Tuili's. It's an official terminal client written in Python. Seems like Zulip is almost entirely written in Python, except for that Flutter part. And that web app, of course, has to be TypeScript.
Starting point is 01:07:24 But you guys have Python roots? Yeah, Zoop is one of the first kind of major projects to be using MyPy static typing in Python. So we're engineers, we're part of developing that. Awesome. I'm just staring at your terminal UI now. Same. I've seen a squirrel and I've become distracted.
Starting point is 01:07:45 I forgot to continue talking to you. What I'm seeing on the side, though, if I can talk through it a little bit and see if you're following me, Jared, is that it seems like you've got the channels, of course, and it seems like those are topics beneath it, potentially. Obviously, it's not as full-featured as an actual web UI or an application UI. Do you find that people actually use this terminal app a lot? Is it one of the primary client set that you have in your stats? What do you think the usage might be?
Starting point is 01:08:15 I don't have a number handy for you. I mean, folks do use it. Definitely not as much as their other clients, but for sure. I guess sort of philosophically, I would say one piece of it is that we've talked about just how much time folks are spending in chat. And so having that chat experience feel pleasant and natural and sort of do what you want, I think is really, really important. You don't want to be annoyed and frustrated by something in an app you're using every day. And so we do believe in giving folks flexibility and options
Starting point is 01:08:52 and configurations and different ways to experience Zulip that sort of matches well with their workflows. And I would say having a terminal app as part of that, just for some folks that is really the natural way for them to engage with a piece of software, and it feels really smooth and kind of how they want to experience it.
Starting point is 01:09:13 I think that's really valuable, just because people are different. We can't make an app that is just one way and works perfectly for everybody. There has to be flexibility for folks to engage with it in different ways. If we can use this GitHub repo as a proxy for usage, I would say there are people using this.
Starting point is 01:09:32 It has over 600 stars, but most notably 871 merged pull requests and 165 open pull requests. So people are working on this, people are collaborating on this, people are collaborating on this, and of course people only work on and collaborate on software if it's useful and being used by folks.
Starting point is 01:09:51 This is not an afterthought. This is very much an officially supported thing with 77 contributors, so pretty cool. Yeah, and we had multiple interns working on it this summer, so yeah, it's definitely interactive. That's awesome. Tell us about the team. Tell us about the company
Starting point is 01:10:06 and all the people involved. Yeah, so we have a pretty small kind of core team of folks who are paid full-time to work on, or full-time or part-time, I guess, to work on Zulip. And we do think that's
Starting point is 01:10:21 really important kind of as part of our model that there is a team of really talented expert engineers and other folks for whom this is their day job. It's really hard to run a project where it's kind of a side gig for everybody. So with this core team, we've also invested a lot into making it really easy for folks to get started contributing to Zulub. So there's been a huge amount of investment into creating the space for a really active, really lively community around it as well. And that comes in terms of tons and tons of documentation.
Starting point is 01:11:01 I think you saw some of our production documentation. There's also tons of contributor side documentation from, you know, as you mentioned, how systems work, but also just the contribution process, what a good pull request looks like for us, kind of everything about that process. And that's really something that we put a lot of thought into, like, what is that process of contributing? And how do we make that a really excellent experience, both for us in terms of kind of reviewing the work as well as for the contributors themselves and make that a really excellent experience both for us in terms of kind of reviewing the work as well as for the contributors themselves and make that a really great positive experience, great learning experience for folks. So for example, with a team of
Starting point is 01:11:37 on the order of like 15 paid team members, we had 124 people contribute to our last major release. So that's like around a six-month cycle. So it's a lot of folks who are either doing, some of them are doing kind of a formal internship program with us. We've been participating in Google Summer of Code for a number of years now. I don't know if you're familiar with it,
Starting point is 01:12:00 but basically Google funds internships for open source projects as well as kind of managing that overall structure of helping folks find projects to work on. So that's been amazing for us. We have generally most years, we have about 15 to 20 interns, most of them mentored by kind of alumni of the program or other community members. And that's been another really great way for us to bring folks into the community. But Zulip is open source, not just in the sense of the code being open, but really just in our whole model
Starting point is 01:12:35 of how we develop the product and how we engage with contributors, how we engage with our users. One time, I guess one of our folks who joined recently, he started out as an intern and then joined as a full-time team member. And he commented that he was surprised when he got added to kind of all our private company channels, just how little traffic there is in those channels. He was thinking that when we were giving him feedback on things he was working on, maybe we're somewhere off on the side discussing that amongst ourselves
Starting point is 01:13:07 and then providing the summary version. He was like, oh, wait, no, that's not how it works. I was like, no, no, no, yeah. If we're talking about how the product should work, we just talk about that in the open. That way everybody can understand the decisions, can contribute to the decisions. We're not hierarchical in terms of
Starting point is 01:13:27 it's really about what your ideas are and how clearly you communicate them and explain to them, not what your title is or how long you've been involved with Zulip or anything like that. It's really about working together to come to the best decision we can about how something
Starting point is 01:13:43 should work. Let me know if I didn't quite answer everything, all the parts of your question. Has she answered your question, Jared? Yeah. Okay. What's stopping you from, or have you considered, raising funds?
Starting point is 01:13:57 I know you had grants in the past, but I'm not sure what your angle is. I mean, there's obviously this idea of commercial open source companies out there. We're very anti rug pull, not cool here around these parts, which means don't change your license once you've gotten to critical mass because it's against your future business objectives. Hopefully I paraphrased that well enough for you, Jared. I think there's an opportunity. I'm just curious. Have you? Why haven't you? What's the status on that front? Yeah, absolutely. Yeah. So we have intentionally not raised VC money and do not plan to raise VC
Starting point is 01:14:34 money. And in terms of the business model, what we want is just to build a sustainable company on top of this open source project. So we've discussed some paid plans we have on the cloud side, on the self-hosted side, services we can provide. And so that's really our strategy to have our users pay for the software and then that funds the development of the project and the product. And kind of a key reason we don't want to go the VC route is that we feel that kind of misaligns the incentives. There's a misalignment, kind of an inherent misalignment of incentives. So for us, we're
Starting point is 01:15:11 not going to take a hundred swings at this. We're not going to try to build a hundred different products and see which ones land and abandon ones that don't. We really are building Zula because we think it's a better way to work. And we're really, really committed to making that around for our users for the long term. So as you know, as I mentioned, like we still have users from 2013 who are on Zulu now, and we want that software to be around for the long run. And so we want to just take that one single bet and make it work. Whereas VCs, their incentives are, you know, they're looking for like the next, you know,
Starting point is 01:15:47 your next Facebook, your next like giant company that just explodes. And they're willing to take big risks in order to have that probability of a really remarkable, amazing return. Whereas for us, we want to take very small risks and have a very high probability of kind of, of success without necessarily aiming for that like galactic outsize return.
Starting point is 01:16:11 Right. We just, you know, their main priority is really to get to a point where the software, we have enough, you know, we're making money to really continue to develop the software and have the staffing and the team that we want.
Starting point is 01:16:29 And it doesn't have to be, you know, stratospheric. And of course, we would like to reach as many people as we can. And we think it can benefit lots and lots of different kinds of organizations. It's a huge market, there's definitely tons of opportunity. But just like the kinds of risks are we're comfortable taking to get there are very different from the kinds of risks VCs would feel comfortable with taking to get there. What if that's not true? Which part? All of it. What if there are venture capitalists that align with open source,
Starting point is 01:16:53 which is becoming a thing? What if there are venture capitalists that see your idea as the way and they want to fund companies that have prived by cold at hands aspects to open source would your would your tune change well i think it's not just about open source like i i think there are now starting to be vc firms that are focused on open source and and really buy into that model but it's also just kind of the the structure of how and how you do that investment right so do you try to like hire up really quickly spend tons of money you know in marketing even if it's uh the return on is not there but
Starting point is 01:17:34 just to to get that growth curve you know like what are you what are you trying to do right and like what is your strategy to get there you know i'm not'm not, like, I'm not going to tell you 100% never in the next 100 years we'll take VC money. Whatever. We're a small company, right? Like we do to some extent, like kind of like make decisions about things when we need to make them,
Starting point is 01:17:57 not, you know, planning things for 50 years ahead. But just that has been our kind of strategy so far. And from, we have not seen, we have not been approached by a venture investor who we think would be completely different from all the other venture investors such that we would start thinking about it.
Starting point is 01:18:15 I think the reason why I come with those questions is less to challenge you by any means. It's like zero about challenging. And it's more like, if Zulip is the best, and it is open source, and it is superior in so many ways,
Starting point is 01:18:33 in so many models even, of how you can use the software, not just in your cloud or in the self-hosted version, the exporting, the non-fettered access to it to be able to move and all those things if
Starting point is 01:18:45 it's superior i would want to if it were me i would want to do all i could to ensure everyone could use it more and the the way you get there is generally the reason why people raise money is not because they literally just want money it's because they can leverage that money as a resource to go faster to the to the And we talked earlier about Flutter. We talked earlier about some different areas. And maybe you're slow and steady, and that's okay. There's nothing wrong with that. I just wonder if a little funding that was in alignment with your morals, values, etc. towards open source, the way you run your company, if that money didn't challenge those values if things would change because if you truly are better and we've seen even in our own slack
Starting point is 01:19:32 a person say infinitely better than x you know so we hear that ourselves even if that's truth then i would want to do all i could to get that truth to many people. Yeah, and we're definitely, so we're not currently raising money, but we definitely are currently exploring different strategies on the go-to-market side, and that's something that we're thinking very actively about, the sort of how do we increase that reach and grow faster in terms of finding different ways to introduce folks to Zulop and to reach more people. So it's definitely a major priority for us right now.
Starting point is 01:20:07 Yeah, that has to be one of your biggest challenges is like nine out of 10 people don't know who you are. Yeah. Right? Yeah, yeah, no, that's true. It's true, yeah. It is a major challenge. No offense, but I mean, even most things,
Starting point is 01:20:18 nine out of 10 people don't know what it is. For sure, yeah, yeah. Yeah, I mean, there's tons of things we're trying. I like the free for open source education, et cetera, that you already discussed. What are some of your other ideas? What are some of the things you're thinking of trying to get more people to know what Zulip is,
Starting point is 01:20:35 to make Zulip a household name? I mean, some of them are kind of standard things, so like paid advertising, going to conferences and various kinds of events and sharing that way. Another direction is content. We've had blog posts on various topics. One of the things that I talked to you, you can probably see my excitement about is this side of community management
Starting point is 01:21:03 and getting folks engaged in an open source project so uh for example like we're working on some partnering with some organizations on blog posts around that kind of thing and so just kind of getting the name out there in whatever way um because i think you know the as you were saying kind of the brand recognition and just kind of awareness matters. People aren't constantly in the market for a new team chat, but we want to be top of mind when they are starting to think about it and when it does come up. I would say we don't necessarily have
Starting point is 01:21:38 something unique other than we do have this open source angle and things engaging with the community and the open source community we do have this open source angle and so things engage in the community and like the open source community more broadly and sponsoring open source projects is definitely like one angle for us that we're investing in. Well, it's one of the hardest nuts to crack and everybody out there is trying to crack that same nut, aren't they? And so there's a lot of noise,
Starting point is 01:22:02 there's a lot of competing voices and you definitely have a lot going for you. I think leaning in on community and open, and I think moderation, as Adam said earlier, as you guys continue to flesh out the product, those are all good strategies. If there was a magic carpet that you could go on, that would automatically get you to brand awareness, of course we'd all just hop on that magic carpet.
Starting point is 01:22:27 Exactly. But in general, our style is just try to be really, like as clear and direct as we can. That's really our focus for all our kind of marketing and so on. Just we think the value is there for folks. And if we can communicate that clearly, we don't need to get super marketing, super salesy. Yeah.
Starting point is 01:22:43 Yeah, tell folks what's there. Very cool. Adam, anything else from you? Just to add on to what you're saying here, I think probably without digging into the data, I will hypothesize that probably the biggest challenge first is awareness that you exist. And then obviously once they realize you exist,
Starting point is 01:23:03 the opportunity for superior feature sets then i would say that the very next thing is like okay now what which is our requests for information on hypothetically what it would take to move what it would take to go from a slack or a discord i feel like if you could do content around that subject not just documentation like how to but like good stories of folks who've moved and their journey and to demystify the scares and concerns like my main scare is is that a proper adjective i don't know i'll allow it is that or i guess anxiety point is is will we lose the people that we have in our community? Will they bounce? If you can showcase what's on the other side of the wall
Starting point is 01:23:51 rather than me assume as somebody who is not happily but happily using Slack, given the things we've already said, still like Slack, it's still amazing. It's just they got warts for people like us, communities like us. I feel like that's the content i would personally i would look at the data and i think that would be the hypothesis get awareness show off the amazing feature set that really captures 80 of who likes you most and then show how easy it is to move
Starting point is 01:24:20 and almost make it like you should be doing this like it should happen today we can help you and if there's money to invest in quotes money to invest could be time could be people could be people hours is to guide and assist certain organizations on that path yeah and some of what you described we do have case studies on our site where a lot of folks talk about starting starting initially with something else and then moving over to Zulip and sort of that experience. But part of what you said, you're kind of reading off of the to-do
Starting point is 01:24:52 list I was working on yesterday. Just yesterday? Okay, cool. Literally just yesterday, yeah, I was thinking, you know, we have some content in our help center about that migration path, but we definitely need more clarity on just kind of bring bring all those pieces of information together and like coming from different kinds of tools here
Starting point is 01:25:09 here are the steps you take and just yeah like folks have a lot folks are busy there's a lot going on here you know the extent that we can make that easier for for people like it can make a big difference if i had to divide my time up into fifths, I'd take two-fifths of that time and dedicate it to that kind of content. Uh-huh. If not more. Uh-huh. Because fourths is like whatever, you know, like 25%, 25%. I mean, that's pretty easy.
Starting point is 01:25:33 Like one-fourth? Yeah. I feel like two-fifths sounds better to me. Two-fifths of my time would be focused on awareness and showing off the better world, the FOMO. You're missing out. Yeah. On freedom,'re missing out. Yeah. On freedom, control, access, enjoyment. Privacy.
Starting point is 01:25:51 And then obviously your dev team and engineering teams can be focused on all the surface area, Flutter, that migration, finishing out those applications, polishing the peripherals. Your dev team does a great job on documentation compared to what I've seen in a lot of projects. We see a lot of open source projects. The documentation is really good.
Starting point is 01:26:13 The readmes are very deep and detailed and organized, thoughtful. And so obviously you want your dev team to be devving. That's what they're there for. But as much as they can write about what you're doing technically, decision making, architectural stuff, not just in
Starting point is 01:26:32 documentation form, but in content form, I think that would pay off dividends as well and obviously can also double as documentation in a certain way. What's next? Yeah, exactly. What is next for you, exactly. What is next?
Starting point is 01:26:45 What's next? For you, the listener, are you going to go to Zulip.com? Got the.com. It's a big deal. It is a.com. Yeah.
Starting point is 01:26:52 It is a big deal. It's a five-letter.com. Free, open source, cloud, or self-host, unfettered. Do it. Today. And if you think
Starting point is 01:27:02 we should switch to Zulip, hop in our Slack and tell us. We'd be happy to at least try that Docker image. I mean, I'm going to give Adam a to-do, you know. See if you can get it running on Docker on your home lab or fly and just toy around with it and see how it feels. Try it on for size, you know.
Starting point is 01:27:19 Yeah. I mean, or if you want to just try Zulip, it literally takes less than two minutes to create an organization Zulip Cloud. And then you can just poke around and experience it for yourself. It's almost too easy, Adam. It's almost too easy. Yeah. I feel like we should try Cloud out first.
Starting point is 01:27:32 And if we like how it feels, take the next step. That's half the battle, right? Because sometimes that switching of the UI and everything, it can be jarring. The ideas and the features that may be there, but maybe it feels weird. I don't know. And then give us feedback. That's the other thing. If there's anything that feels off or feels confusing,
Starting point is 01:27:55 just come by the development community and tell us and we'll try to fix it. Very cool. Well, thank you for this time. Thank you for going through all the details with us. It was awesome. Thank you for the great set of questions. In a world where open source is eating software faster than software is eating the world, there's Zulip, the open source chat that has the potential to unseat the giants,
Starting point is 01:28:21 to at least unseat the giants based upon features that really matter to users. And the thing is, is that they have so much potential. What exactly is potential? Potential is kinetic energy stored, waiting to be released. And after this conversation, I'm so hopeful for the team at Zolot, but at the same time, I know it's kinetic stored energy potential not realized. Now, there are a lot of people who love Zulip and there are a lot of people who don't even use Zulip or even know about Zulip, but now you do. So what are you going to do? Well, I say go to Zulip.com, check it out, try it out, self-host it, use their cloud, contribute, be a part of the community, all the things that open source provides. Check it out. Try it out. Self-host it. Use their cloud. Contribute.
Starting point is 01:29:05 Be a part of the community. All the things that open source provides. Now, I for one am very hopeful and very happy Zulip exists. But Microsoft, Slack, Salesforce, they're massive. And so they need us to step in, to use, to try, to contribute all the things. Well, make sure you check them out, Zulip.com. And all it was inspired by this conversation to create a brand new guide called Moving to Zulip.
Starting point is 01:29:34 And that'll be linked up in the show notes for you. Okay, sponsors for today, big thanks to Century, Century.io. Use our code CHANGELOCK to get three months, almost four months of the team plan for free. Again, Sentry.io and the code is CHANGELOG. And also to our friends at Fly.
Starting point is 01:29:56 We love Fly. Fly.io It is the platform where you can do pretty much anything. And Tigris is one example of that. Check them out at tigrisdata.com. We're using it and we love it. And to our friends at Paragon, useparagon.com. All these SaaS integrations you need for your B2B SaaS.
Starting point is 01:30:22 Again, useparagon.com. And to our friends over at Coder, coder.com. Cloud development uncompromised. They're the number one self-hosted cloud development environment out there. I checked it out. I think it's so awesome what Coder can do. Check them out, coder.com.
Starting point is 01:30:41 And of course, the beat freak in residence break master cylinder, bringing those beats every single week. Much love BMC, much love. Okay. So no bonus today, but I do want to mention, cause Hey, why not? changelog.com slash plus plus it's better. It is better today. It's not better because there's no bonus. But hey, other weeks, other shows, bonuses galore for our plus plus subscribers. That is where you go to get the ad free version of our show. The way to directly support us to get closer to that cool change law metal, get bonus content.
Starting point is 01:31:23 Not this week, but hey, you know, next week. And I know because we recorded next week's show today. And we have a very lengthy, very awesome bonus content for you. You'll love it if you're a subscriber. Once again, changelog.com slash plus plus. Okay, that's it. This show's done. Thank you for tuning in and we will see you on friday Outro Music

There aren't comments yet for this episode. Click on any sentence in the transcript to leave a comment.