If there's one thing I've learned about myself from these journals, it's that I have an attention span like a golden retriever. That's... mostly alright. I just have to observe that behavior, and try and learn how best I can influence, alter, or learn from it.

With that out of the way... let me tell you all about what's been on my mind last week.

Discord...

It's been about a week since it broke in the news that Discord would introduce age verification for all users. Frankly, it was heavy on my mind writing up my notes last week, but I hadn't taken any action to warrant writing about it. After all, I'm trying to use these notes to recap my previous week--not blog about the coming one.

It would not be an exaggeration to say that Discord is the software I use most. As my co-moderator said to me, the only software we use more is Windows 11--so we can use Discord.

I say "co-moderator" like our server is some really hot stuff. It's not. It's a place where 7 folks hang out in varying combination and play games every night, and--maybe once in a blue moon--an old coworker might pop in to say hello. Fortunately for me, that makes it easier for me to uproot my server and fly with the wind.

To be fair to Discord, I'm just trying to keep the list of companies that I trust with my ID or biometrics as close to zero as possible. I sympathize with the challenges of complying with regulation at scale, but Discord being Discord doesn't mean I trust them--especially after the previous age verification security incident, their IPO plans, and their push for microtransactions.

Anyway, in the rush of folks looking for alternatives, I've felt weirdly alienated. Usually, I'm pretty proud of my ability to find alternative software, but Discord? Yup, it's pretty special--especially for our purposes.

Lots of people have looked at Matrix or Signal as an alternative, but their call implementations are attempting to replace phone calls--not really ideal for an audio-first third space. Zoom, Meet, Teams et al have more potential, but they're aimed at enterprise and are way too bloated and PTSD-inducing when out of work hours. Mumble and Teamspeak would be promising alternatives, were they not old, awkward to use, and lacking in high-quality audio.

Stoat looks to be the closest alternatives in features, but the three-year-old open issue about overhauling voice channels does not fill me with confidence. For my community, voice and video channels are a #1 priority. They have to work out of the box, and they have to work consistently.

Well... There's one situation in which it's okay that they work inconsistently: When it's my problem.

microclimate

Yeah, I started working on a Discord alternative. Me and surely a whole swathe of other software developers. Which of us will succeed? Who knows.

Normally, "mandatory age verification" is the sort of gaffe that I look at and go "damn, that sucks. guess I'll wait a couple months for an alternative and switch to that." This time, I couldn't shake the idea that I should try building one myself.

Here's a breakdown of the factors that made me feel that way:

  • LiveKit exists, and can be self-hosted. This is the software that Stoat is adopting for their rooms, whenever they get around to it. I've actually used it a little before, messing around with voice agents and with Element Call on our Matrix homeserver.

  • I've recently spent a bunch of time implementing my own microphone/speaker pipeline in Tauri, a framework for building desktop apps with Rust and your native OS WebView. I didn't finish putting the features together, but verifiably working part was the cpal audio chain. You can see the source on Tangled. Surely, I could do a little voice chat with this code and LiveKit?

  • The core of my Discord friend group are software engineers who 1) value their privacy, 2) like using nice software, 3) enjoy writing Rust (most of the time), and 4) like to work with me. I think. Maybe they'd also like to try replacing the software we use together every day?

Most importantly, I saw the opportunity to work on software that I actually use every day--something close to a holy grail for the kind of work I want to do. After all, the best way to remind yourself that you have a project is to use it for 10 hours a day.

So, enter microclimate--a LiveKit-based alternative to Discord, in progress by myself and my friends. We're approaching it with the thought that a server will be hosted for a group of friends, similar to Matrix, but with the intention of keeping server membership small.

The name is because I intend to use Atproto for identity--just "Sign in with Atmosphere" to start, but maybe with the idea of integrating other services over time. We're not doing anything fancy to put private data in folks' PDS's; I'm mostly inspired by Tangled's Knot architecture, so the servers will manage private data for the server. No thoughts on chat protocol (MLS, XMPP, whatever) at this time.

The wonderful thing is that I'm working on this project with friends, so I have folks to hold me accountable to my work. I'm genuinely stoked to be beholden to my friends to deliver tickets on time, with the promise of replacing our Discord server. I've already cancelled my Nitro, so the clock is ticking.

Okay, we're nearing the end of the day, and my focus is drifting. I'm not sure any of that last section was a coherent thought, but I need to wrap these up for now. We'll find out next week if I'm still writing about the same project...

Thanks for reading, and have a great week!