Week 1, or: We Really Love DNS
Hi! I'm Alex, welcome to my personal blog Bluesky DevRel log. This is my first week here, and I'm going to try to use this space on an ongoing basis to document cool technical details about Bluesky/AT that I don't think we're currently emphasizing enough in our docs or any other part of our web presence. Partly this is to keep me honest and to remind me to write those docs later, partly it's a way of first-drafting my thoughts and soliciting community feedback before I turn them into docs, since much of this will be newer to me than it is to you!
My topic for week 1 is DNS. That's right, DNS: an old friend that always takes an extra 20 minutes to do anything you ask for. Conceptually, you might expect us to not be huge fans of DNS. Jay Graber wrote a great, succinct Medium post back in 2021 about her conception of "Web3" technologies as inclusive of any user-generated authority — more often, this gets brought up in the context of cryptocurrency or blockchains, but it's also the key principle behind how social graphs work in AT. We talk a lot here about how our real product is the protocol itself, and the adjacency to $$$ Web3 technologies is particularly relevant when other Atmosphere apps are pitching investors, because there's a lot of value in being able to share that same "standard gauge" across apps (or, properly speaking, app views). I'm getting off on a tangent here, but what all this means is that you wouldn't expect us to be power users of regular old authoritative DNS. There was even a talk at last year's Atmosphere conference where we got made fun of a little bit for this.
But actually, we are huge DNS heads. Huge. Technically we even sell domain names, although (thankfully?) we haven't turned that into a standalone product offering (horizontal integration, that's the good stuff)!
The most obvious way this manifests is in how we use and assign handles on Bluesky. If you're signing up for the site for the first time, you get assigned a yourname.bsky.social handle. Now, you might think to yourself: this looks an awful lot like a real URL with yourname as the subdomain. You're right!!! And, in fact, anyone using a yourname.bsky.social handle can use that as the canonical URL to their profile in the Bluesky app, rather than needing to write out something like https://bsky.app/profile/alex.bsky.team the way you would on other social networks.
This is extremely cool, imo. It both reinforces the way that we're using the fundamental building blocks of the web — something you'll see everywhere in our product design, such as our XRPC API that's really just a bunch of wrapped HTTP calls — and it delivers on some of the fundamental promise of @ handles by letting you share a handle that's also a valid URI.
And that's not all! You've probably noticed some Bluesky users with custom domains for their handles, seeing as this place is full of nerds. You know how we enable that? You guessed it, DNS. If you click through to the "custom domain" section of our "Change Handle" settings menu, we provide a custom _atproto DNS record for you to add to your domain name that will let Bluesky resolve it.
Authority in action!
So, yes — we like DNS a lot. And if you're thinking the way I'm thinking, there's a lot that future Atmosphere apps could do with the concept of a "home page" for these DNS handles... from Linktree-type use cases, to a tangled.org take on Github pages... the possibilities* are endless.
*please note that the endless possibilities mentioned here do not constitute an official roadmap, do not yell at me.
Anyway, that's it for week 1 from me! Don't be a stranger, feel free to post at me (once again, that's alex.bsky.team) with any feature requests you may have, or join this Community forum thread where you can book a meeting to talk about any use cases you may be kicking around.
Until next time!