Top
Best
New

Posted by danabramov 5 days ago

There are no instances in ATProto(overreacted.io)
536 points | 313 commentspage 3
tomgag 5 days ago|
Every time I see a post praising ATProto on HN I cannot shake the feeling that this might be the product of a concerted (and VC-backed) marketing effort.

ATProto is "decentr-washing" as far as I'm concerned. Even if you self-host as much as possible, if Bluesky's relay declines to crawl your PDS, or its AppView declines to index/serve your records, then to essentially the entire audience you simply don't exist. did:plc controlled by a Swiss Verein, as if this could be a reason to drop all self-sovereignty worries! Credible exit was actually always working well on ActivityPub already, and if you self-host your instance you probably won't even need it anyway. Regardless, there is FEP-ef61 now, so I genuinely don't understand why to prefer ATProto over ActivityPub, even in the foreseeable future.

Let's not even talk about Nostr, that natively solves all the issues that ATProto seems to care about. Nostr is IMHO a much superior technology, unfortunately plagued by ecosystem/people and Bitcoin-dictated technical choices (BIP-340 keypairs, brrr).

cavoirom 4 days ago|
We could develop an all in one stack that handle relay, AppView and iOS / Andriod / Web apps to serve small communities and have the Mastodon instance vibe, except one identity could appear on different instances at the same time. It doesn't exist yet, but it's possible.
diimdeep 4 days ago||
My uninformed(about this particular enterprise) but educated guess: if tomorrow VC funding evaporates all this network cease to exists. I guess based on feely that 80% of all of these Relays, PDS, Apps including, Bsky are all from few if not one company, meaning centralized behind the curtain, but decentralized evangelism. It is very possible I am completely wrong, and so be it.
flaburgan 4 days ago||
As a (kinda former, as the project is mostly inactive now) diaspora contributor who followed closely the creation of the first decentralized social network (with GNUStatus and Friendica), I'm really interested about this explanation, but it asks more question than it explains. First of all, why did we move away from blog with RSS with app readers? (We did not fully abandoned that by the way, there are still some excellent RSS aggregators out there such as https://flus.io) Because Facebook not only it allowed us to react / comment on what we were reading, it also allowed us to follow the reactions of others. The principle behind social network is that you don't follow a website author and so you know when they post, like RSS does, but you follow an account, and so you know every reactions they do. Imagine being informed when someone that you find interesting is commenting on a blog you did not even know it existed? And who themselves are following, so probably you should follow those people too, and discover even more blogs with interesting content! There were technics to try to do that with blogs back in the days. Planets (public blog aggregators) to read linked content, pingback to know when your blog post is quoted somewhere, etc. But none of this was easy, efficient and complete as Facebook was. So everyone migrated there, because it made content discoverable, which means visibility, which exactly why we are publishing on the web. But Facebook is centralized. This is a big flaw, we don't want to depend on a corporation to publish online. And so, here come decentralized social networks. I am not going to describe the Federation (the diaspora protocol) here as the comment is already way too long, but it does allow what I described above, at the cost of having an identity tight to an instance (fla@diaspora-fr.org), but from which I can easily migrate. Now, after reading this article on ATProto, it is not clear at all to me how all those interactions described above are implemented. Could you elaborate?
rzzzt 5 days ago||
Nobody asks _how_ are all the Bluesky instances :(
lern_too_spel 5 days ago||
Blogs are also hosted on instances, similar to the Mastodon diagram. The only difference is that the reader aggregator doesn't necessarily have to run on the blog host instance.
ponorin 5 days ago||
ATProto is good at what it was originally designed for: decentralizing Twitter. It allows a gradual introduction to the network and ensuring you have control over it at the same time.

When a user decides to jump ship from mastodon.social run by Mastodon gGmbH to another server, they are using a similar but different service. It has different moderators, different emotes, different themes, different federation list, etc. They all have a different flavour, and, for better or worse, they come in a single package.

When a user decides to jump ship from bsky.social run by Bluesky Social, PBC, first of all... what does that even mean? Do you want an alternative storage (PDS) for your data that will still be read by Bluesky the app and Bluesky the relay? Do you want a different "service" (what @ calls AppView) which is then not Bluesky? Do you want a different handle other than @[username].bsky.social? If that's the case, you don't even need to faff around with alternative PDSes or AppViews, you can just slap your domain on it!

Mastodon invites users to federate by giving it a character. Bluesky slices and dices it to a point where the only reason you would bother considering decentralisation is for ideological reasons. And to that point, Bluesky has consistently prioritised building their own service up rather than decentralising. You still can't export photos and videos you've uploaded (through their AppView). Until some time ago you weren't able to return to using Bluesky's PDS once you've moved away. And of course, because ATProto operates out in the open, features such as bookmarks that are supposed to be private doesn't even go through the ATmosphere. (I'd love to know if these are exported but I don't know of a way to open their ".car" file which is neither a plaintext nor a zip file.)

toomim 5 days ago||
AT does have instances. They are just grouped differently.

In BlueSky, there is only one single "AppView" instance in the entire network. There is one instantiated "Firehose". Each user can instance his own "PDS".

In ActivityPub/Mastadon, the instances are "sender's server" vs "receiver's server."

The difference isn't that there aren't "instances" in AT proto. It's just that the instances are segmented differently.

danabramov 5 days ago||
Sure, there are servers, but the different grouping is the whole point because they're not coupling hosting to apps. When people say "where are Bluesky instances", they're asserting that it's useful to run many copies of the Bluesky database server. My article is an attempt to show that this way of thinking is very Mastodon-brained because these "instances" are the only unit of decentralization that's available in Mastodon. But you don't have to think this way.

In atproto, you can swap hosting (without changing apps), and you can create and use different apps (without changing hosting). That's the thing you can't do in Mastodon because it hard-couples hosting + apps into monolithic "instances".

In Mastodon, "receiver" and "sender" talk to each other, as you say. In atproto, hosting servers never talk to one another. The data from them flows into apps.

You're right that there's often a firehose in the middle, but that's also misleading. There doesn't have to be one firehose — there's a bunch of community-ran ones. It's relatively cheap to run one yourself these days (about $30/mo). It's easy to pool them between apps. And many apps don't use Firehose at all, and instead query community indexes like Constellation (https://constellation.microcosm.blue/). So "one firehose" is misleading.

small_scombrus 5 days ago||
You're treating Mastodon as the protocol here, and sure it's a combined frontend/backend, and it is the most used one, but its just one implementation of the AP protocol. You can plug your favourite AP app/frontend into any Mastodon instance.
danabramov 4 days ago||
Right, which is why my article has this paragraph:

>I say “Mastodon” here because if I say “ActivityPub” instead, a crowd of people will show up and say that actually what I’m describing is how Mastodon chose to implement ActivityPub. Whereas ActivityPub by itself does not really specify how to actually use it in practice.

I understand there's other ways to use AP, but when people say "where are Bluesky instances" they are specifically comparing AT to Mastodon's AP topology.

iameli 5 days ago|||
There are multiple Bluesky AppViews, Blacksky has a totally independent one. And there are multiple relays, each capable of serving a firehose.
hooverd 5 days ago||
You can have your own AppView and Firehose. They're just relatively expensive to run versus a PDS.
danabramov 5 days ago||
Running your own firehose is not expensive, fwiw, it's $30/mo. If I were making a "serious" app I'd probably do that. Otherwise, relying on community-maintained ones seems fine.

Running an AppView for your own app is not expensive at all. It can be as cheap as you want. It's only expensive if you want to store gigabytes of Bluesky posts and serve them to millions of users — i.e. if you want to build the full Bluesky AppView. But why would you want to build a Bluesky AppView? That's part of what I'm alluding to in my article — atproto isn't "for Bluesky". You can build any social app.

JoshTriplett 5 days ago||
> But why would you want to build

The problem is that that sounds like "you shouldn't want to compete with Bluesky". Which makes it dangerously centralized.

danabramov 5 days ago||
I don't understand how running your own Relay is related to competing with Bluesky. A Relay is just a dumb websocket broadcaster. Yes, you can absolutely run one on your own if you don't want to rely on any of the existing ones. I don't think this has to do with competition.
JoshTriplett 5 days ago||
I'm saying that if there is any required component of a full ATProto setup whose lowest-friction implementation is "use the One True Central Implementation, which every tool defaults to and which will be very painful to change", then it's not a decentralized protocol. Are there any components of ATProto that are found not through a service discovery mechanism that would seamlessly migrate to a new service, but by every individual app going "here's the hardcoded URL we never expect you to want to change"?

I like the concept of working like RSS. I don't like the idea of having a massive ecosystem coordination problem with game-theoretic network effects, for any component of the system.

danabramov 4 days ago||
No tools meaningfully "default" to it — it's something you set up at the app level. And no, it's not hard to change, it's literally a single string constant that you put yourself into the code. If I were making a serious app, I'd likely run one myself for peace of mind. It's not difficult, you just spin up the Docker instance with it.
uberex 5 days ago||
Thanks! Your name makes me think of a funner pre-LLM time when Elm and Redux was new and cool. Great explainer!
threetonesun 5 days ago||
I feel like the charts could be clearer if they showed the primary user experience difference between RSS and AT/AP, which is how do the arrows flow for Bob's response to Cat's post. I understand it fairly well for AP, I don't think I actually get it for AT.
danabramov 5 days ago|
I have a different article that goes into this here: https://overreacted.io/open-social/#open-social

Also here: https://overreacted.io/a-social-filesystem/#links

TLDR: at the hosting layer, it's like <a href> links, but in JSON. Links can refer to other person's repo (even if it's hosted somewhere else). And then apps index everything, so they can present a coherent aggregated view (like a post thread).

threetonesun 5 days ago||
Hah, well that's my bad for not reading articles I've saved, after reading those I remembered Puzzmo mentioned this recently and they, of course, got inspired by that second article: https://blog.puzzmo.com/posts/2026/03/02/atproto/
maelito 5 days ago|
Kind of a similar article, but in French : https://bonpote.com/bluesky-enfin-une-vraie-alternative-a-tw...
More comments...