Top
Best
New

Posted by danabramov 5 days ago

There are no instances in ATProto(overreacted.io)
536 points | 313 comments
1dom 5 days ago|
> Every single time a post about atproto hits Hacker News, somebody asks in the comments: “But where are all the Bluesky instances?”. The problem is, there are no instances in atproto! The question is a category error. Instances are a Mastodon-brained concept, and I wanted something I can link to that explains this clearly.

I feel like you've (perhaps purposefully?) misinterpreted "instances" just to plug ATProto specifically at the expense of ActivityPub (and RSS, a bit). I think you lower yourself by doing this:

1. it forces you to omit and contort the interesting technical truths about ATProto and Activitypub, like Relays and their pros/cons for ATProto and account migrations and pros/cons for ActivityPub

2. it creates unnecessary conflict and criticism and seems unnecessarily divisive for 2 platforms solving problems in such a similar space

It's also just seems a bit silly: why would you assume that when someone asks "where are the instances?" they're not using the common mainstream use of the word "instances", like, servers, or running software, or VMs, or containers?

Sorry if this is overly harsh or I've misunderstood, but it gives me a strong vibe that it was motivated by disdain and frustration towards ActivityPub and ActivityPub users rather than wanting to legitimately inform the world about ActivityPub.

I did enjoy the diagrams and the explainers though! I just felt like the subtle digs and pops at activitypub were an unnecessary distraction.

danabramov 5 days ago||
I'm being a bit cheeky in the article's tone but I am fairly confident from discussions in the past that "But where are Bluesky instances?" is a common question which usually demonstrates a misunderstanding of the architecture where "having instances of an app" is seen as a measure of decentralization.

My article was an attempt to dig at this specific misunderstanding by comparing it to "But where are Google Reader instances?" which I think illustrates its absurdity. I genuinely do think that the two pictures I provide close to the end clear this up in a way a lot of early atproto/ActivityPub discussions completely gloss over.

Re: Relays, I wrote here on why I didn't include them: https://news.ycombinator.com/item?id=48600963. They're kind of incidental perf optimizations rather than essential to the model. In the post, I wanted to focus on the model.

JasonSage 5 days ago|||
From my perspective, I care about the centralization/decentralization aspect a lot, and if I'm coming into the discussion with a much better understanding of the Mastodon side then _of course_ I'm going to ask about the instances--that's the vocabulary I'm going to use to try to probe for flaws and gaps. It's not necessarily that it's the instances specifically I care about, or that I'm somehow technically misguided.

What I hoped to read in the article is how we approach topics like centralization, censorship, moderation, data ownership--and with a technical lens. But I feel like all I got was "here's why instances are the wrong vocabulary" without substantively talking about the part I personally care about and want to marry the technical understanding with. Maybe I just read too shallowly and need to sit with it.

danabramov 5 days ago|||
I see! That's a huge topic by itself since you're raising a lot of questions. Maybe this could be a different article. My aim with this one was just to clarify the network topology because it is a prerequisite to having the other discussion, and too often that prerequisite is not there.

If you ask a list of specific questions, that would help a lot. I might be able to write something or reply inline here.

wmf 5 days ago|||
I'm one of those "is it decentralized yet" people and to me the real concern is the AppView since I assume that's where censorship would be applied if it ever happens. People keep telling me about PDSes but I don't care about controlling my PDS if other people can't see my posts.
danabramov 4 days ago|||
I wouldn’t say censorship alone is the primary motivation here so I’m a bit wary when people bring it up. But the way to think about it is that your data being on PDS is the mechanism that creates a market opportunity for other apps that, among other things, differ in moderation strategies.

Concrete example: Bluesky banned a person, and Blacksky community disagreed with that ban. When Blacksky switched http://blacksky.community app to have its own complete stack (including its own database), that person’s posts became visible there (despite them being banned on Bluesky app) because they reversed that moderation decision. This was possible because the data for this person’s posts still lives on their PDS.

In general, the data being “pulled outside” products is what enables new products (or forks of products) to come onto the scene and immediately begin competing because they don’t have to solve the “cold start” problem. If you log in, all your stuff is “already there”. And it’s the same shared world so the community doesn’t get forked. You’re just looking at the same underlying data under a different lens, and products act like lenses rather than boxes.

This doesn’t mean that “censorship” can’t exist (every layer can ban you, as always) — but it means that every layer of the stack has opportunity for competition that isn’t possible with centralized platforms. In fact, arguably, it’s more flexible than a Mastodon instance because you can’t fork a Mastodon instance “with all its users” and offer a version that reverses some moderation decision. In atproto, you can.

hack1312 3 days ago||
Does Blacksky have its own DID system, are they using did:web, or do they rely on blue sky’s did:plc? iiuc did:plc is what allows people to change their handle/use custom domains with the same account, but only Bluesky offers or can run did:plc, everyone else who wants to run their own full stack themselves is relegated to did:web which essentially has the same restrictions as ActivityPub where your account is tied to the domain hosting the DID.
tancop 2 days ago||
> only Bluesky offers or can run did:plc

PLC is set up in a way where the database is fully visible and exportable. any censorship would show up in logs. if bluesky ever pulls it off at least part the community will stop trusting them, start their own server and patch apps to use the new domain. i know its not that easy in practice but its possible because everything is open source.

> ...your account is tied to the domain hosting the DID

thats nothing like the activitypub model. the atproto equivalent of an instance is your PDS which is something most users dont self host. did:web is not bound to a PDS, it uses a domain you own and a static https server you probably already have to host one file in `.well-known`. the risk of losing your account is much lower because someone would have to steal your domain or vps. theres no admin who can take it away.

hack1312 2 days ago||
yeah yeah “PLC is mirrorable” but can I run my own federated did:plc service at this moment for my own community? As far as I understand, I cannot and am limited to did:web and all the associated drawbacks, or having users sign up with Bluesky’s PLC directory to actually allow for the username portability ATproto promises.
palata 5 days ago||||
> I don't care about controlling my PDS if other people can't see my posts.

Isn't that similar with Mastodon? Someone on an instance that does not federate with yours will not see your posts, and I guess someone on an instance that would censor you would not see your posts?

That someone would have to change instance if they disagree with the moderation, and doing so is more painful with ActivityPub than with ATProto, right?

Disclaimer: I have no skin in this game, I don't use social networks. Just interested technically :-).

nrabulinski 5 days ago|||
It’s not more painful because there’s plenty of alternatives for activitypub instances, but only one bluesky. And you’re meant to either host your own instance, or pick one that aligns with your views and interests, such that the bulk of moderation is handled for you in terms of which instances you federate with etc.
chokolad 4 days ago||
> It’s not more painful because there’s plenty of alternatives for activitypub instances, but only one bluesky.

No, there is not. There is blacksky, northsky, eurosky. They all display the data from your PDS.

kuschku 4 days ago||
I'm already running my own RSS reader, Matrix server, Mastodon instance, etc. How do I run my own appview? They surely have a git repo, docker images and helm chart, right? And if I can't self-host it, surely every local computer club should be able to, as they are with all the other protocols?
danabramov 4 days ago||
You can trivially host an appview for your atproto app on your own. I have a hobby atproto app, and I host an appview for it. I mean — an “appview” literally just means “a server with a database that ingests stuff from the network”. It’s not some mysterious thing or some concrete distribution. It just means you’re aggregating stuff into your database.

It’s just as cheap as hosting any webapp.

But what you’re asking is not that. You seem to be saying “I want to host my own Bluesky appview”. That’s resource-intensive for the same reason “I want to host my own Twitter backend” is expensive. It has nothing to do with the protocol! If you want to host a database application server that stores gigabytes of data from millions of users forever, you’re gonna have to pay for that. This isn’t some kind of gotcha with the protocol, it’s just common sense.

That’s the “instance brain” from my article. You’re used to the shape where the only thing you can host is a “isolated copy of the same app that only deals with a few users”. But that’s not the atproto topology! What atproto lets you host is the real thing. Like a second real Twitter app that “just works” with all existing users. That’s the value proposition here. Or — if you’re not actually in the mood to host a product with millions of users — you can make your own app that has nothing to do with Bluesky. And of course your own app aggregating its own data would be cheap to host because it won’t be aggregating millions of records.

Do you see the disconnect? Atproto allows competition at big scale — actually forking real products — which AP doesn’t do in principle. But you’re using this ability as a knock again atproto. Atproto scales arbitrarily up, so you take the highest scaled up example you can think of (Bluesky app with all its users and posts) and compare it to the cost of running the most scaled down version of AP (an isolated app for some people).

To make the comparison fair, we’d need to scale atproto down in your example. You can definitely achieve scale identical to Mastodon (and thus identical in costs) by taking the Bluesky app server and adding custom logic which ignores all events that aren’t relevant to some hardcoded lists of users (your “member list”) or people they follow. That would be an accurate comparison, and yes, you could totally host that.

People don’t do that because it’s kinda niche. Maybe it would be nice if there were ready-to-go distributions of Bluesky appview that do this kind of filtering. But also — it’s just kind of a non-goal for most developers on the platform. Most developers create their own different apps, rather than host alternate projections of the Bluesky content of the whole world.

kuschku 4 days ago||
Say bluesky is applying content moderation techniques I disagree with.

What steps do I have to follow to get the majority of users to see my content?

Another example. Let's define decentralisation in terms of bus factor:

How many companies could go bust today before most users would notice?

> To make the comparison fair

Okay, so let's build that, then we can actually talk about building a decentralized network on atproto.

How do I build a relay that fetched all content from people I follow, plus all replies to those posts (no matter who sent them), plus automated backfilling if I click on the profile of someone who I'm not following yet?

From what I understand, in bluesky the PDS does not know about replies to a post. So I'd need to scrape the entire network anyway, no matter what, even if I only store some of it.

And every blue-stodon instance would have to scrape every single PDS. So it's a much much worse O(n²) issue, isn't it?

cavoirom 4 days ago|||
> And every blue-stodon instance would have to scrape every single PDS. So it's a much much worse O(n²) issue, isn't it?

They could rely on some relays to build their AppViews. The flexibility is already there.

kuschku 4 days ago||
I feel like you're missing the point of a decentralized protocol if at every step you suggest to use centralized services instead.
cavoirom 4 days ago||
You can self host every component in the stack. You can create a new one for your use case.
lmorchard 4 days ago||
And then once you've self-hosted ever component in the stack, you have one (1) Mastodon instance equivalent :)
cavoirom 4 days ago||
Yes and no, it could scale to the whole ATProto user base.
lmorchard 3 days ago||
Scaling is not useful if that's not your goal
demux 3 days ago||
A mastodon instance is not useful if that's not your goal lol
danabramov 4 days ago|||
> What steps do I have to follow to get the majority of users to see my content?

You can’t “get” the majority of the people to see anything, that’s not how anything works. Neither on centralized systems, nor on Mastodon, nor in real life.

On a centralized platform, if you get banned, there are no steps you can take. Your account is down — goodbye.

On a Mastodon instance, there are also no steps you can take. Your account is banned on the instance — your entire identity goes down with it.

On atproto, it depend on whether you’re banned at hosting or app level.

If you get banned at hosting level (usually something clearly illegal would trigger this), you’d have to find another hosting (assuming apps haven’t banned you too).

If you get banned at an app level, people will see you through different apps. You’re right that this presupposes that there are apps that (1) people use, that (2) haven’t banned you, (3) and that display the same type of content.

But, even if you’re looking from solely censorship resistance perspective, atproto at least enables competition in moderation space to happen. If enough people disagree with the lens, it is possible to build a an alternative lens over the network.

This isn’t theoretical — there was a situation like this where a person got banned at Bluesky app, but the Blacksky community wanted to reverse the decision. When Blacksky got an independent app database running, they overrode it. But yes, this does require investment and a subset of community being interested in alternative moderation / features / etc. You can’t “force” people to hear you but there’s a market for alternatives.

> How do I build a relay that fetched all content from people I follow, plus all replies to those posts (no matter who sent them), plus automated backfilling if I click on the profile of someone who I'm not following yet?

The realtime part is trivial. You just filter the stream of everything as it comes in.

Backfill would either require you to index the network yourself or to rely on existing indexes. You could use Constellation (https://constellation.microcosm.blue/) to fill up threads (query by thread root ID), and you’d hit the user’s PDS to fill up their profile page.

You could actually see that in practice now at https://reddwarf.whey.party/ which my article links to. It’s a Bluesky client that doesn’t have a server at all (and doesn’t hit Bluesky API). It’s lazily getting stuff on the client purely from PDS’s and from Constellation. It’s a bit slower than an appview-backed experience but it works fine.

novemp 4 days ago|||
> On a Mastodon instance, there are also no steps you can take. Your account is banned on the instance — your entire identity goes down with it.

> On atproto, it depend on whether you’re banned at hosting or app level.

> If you get banned at hosting level (usually something clearly illegal would trigger this), you’d have to find another hosting (assuming apps haven’t banned you too).

This isn't as different as you make it sound. Most people on AT Proto are using Bluesky, so "getting banned" is fundamentally the same for them as getting banned from a Mastodon instance. Conversely, you can just run your own Mastodon instance and the only thing you'd have to worry about is defederation (an "appview ban").

kuschku 4 days ago|||
> On a Mastodon instance, there are also no steps you can take. Your account is banned on the instance — your entire identity goes down with it.

You're constantly looking at it from the wrong perspective. I don't care about the instance I'm on banning me because I am the one that hosts my instance.

What I care about is that I am able to connect with any of my friends without the data going through any central arbiter that can decide what we get to see or not.

And on mastodon, if one instance defederates from me, pretty much everyone else will still be able to interact with me anyway, it's not the end.

inigyou 4 days ago|||
Other people use many different mastodon servers but all bluesky users use bluesky
miki123211 4 days ago|||
The difference between Bsky and Mastodon is that Bsky unbundles PDSes and App Views, while Mastodon does not.

Migrating to a different App View should be painless in theory (app views are not supposed to collect any state that is not saved in the PDS, not sure if Bsky does or not), and you can use multiple app views with one PDS. On Mastodon, you have to migrate both at the same time, and moving content across instances is not yet a fully solved problem.

kuschku 4 days ago||
The difference between the two is that Bluesky has a central audience with decentralized content, while Mastodon has a federated audience with federated content.

Blueksy holds all the power, while the users hold none, whereas with Mastodon has many separate communities, similar to the old-school BBSes, forums, IRC and teamspeak servers.

JasonSage 5 days ago||||
I appreciate that a lot! The article has a deliberate and explicit scope, and covers it well.

I'm hoping that perhaps my personal perspective shades why "instances" comes up, or why the reaction on HN seems to include the wider scope than the article itself covers.

Vinnl 5 days ago|||
I felt the same: when folks ask this question they might not be using the correct terminology, but what they actually want to know is how many different PDSes (that's what you mean by "atproto hostings", right?) there are in a typical feed.
ascorbic 5 days ago||
Currently, just over 3000: https://blue.mackuba.eu/directory/pdses
kuschku 4 days ago||
There are:

- 221 with over 5 accounts

- 74 with over 20 accounts

- 19 with over 250 accounts

- 8 with over 1000 accounts.

And only a handful of those have open signups (13 with open signups have >50 users).

Many of them are actually ActivityPub instances with a PDS bridge, e.g., https://join.wafrn.net/

And most of the other open signup instances are also primarily designed as their own social network, just using AT proto as a compatibility layer, e.g., https://sprk.so/ https://haruhwa.com/ (which is an invite-based, snapchat-style ephemeral social network), https://surf.social/, https://pckt.blog/ (a microblogging platform), aesthetic.computer (a collaborative programming/art platform)

That leaves only bluesky, blacksky, eurosky, selfhosted.social, self.surf and npmx.social.

Even during Facebook's heyday, the unsuccessful diaspora/friendica/gnu social/etc networks had more decentralization than that.

ascorbic 4 days ago||
Spark, pckt (and leaflet, tangled) etc aren't using atproto as a compatibility layer: they're fully-fledged apps built on the network.
Vinnl 3 days ago||
Right, but I think a typical Bluesky user never sees data from there in their feeds?

Don't get me wrong, I think it's pretty cool that you can run all these different apps and have them store their data on their own PDSes. And theoretically it's possible for everyone in my Bluesky feed to be on their own PDS and use different apps. But the question from a Mastodon point of view is: is that the case in practice, and if not, how likely is it that there will ever be a significant portion of non-Bluesky posts in an average microblog feed, on atproto?

cavoirom 5 days ago|||
I could see "Bluesky AppView" has similar semantic as Mastodon instance: network, moderation...

The difference is on ATProto, when I get banned, people must switch to another "AppView instance" (could be reusing the same Bluesky AppView stack) to interact with me. I summary, my data is not lock in, but my audience could be.

On the other aspect, Bluesky AppView is only a small part (a microblogging network) of the bigger Atmosphere where we can create different AppViews for different use cases, e.g. publishing (leaflet.pub), code repository (tangled.org). Users can use the same handle and PDS for these AppViews.

palata 5 days ago||
Yeah I wanted to say that. From a user's point of view, it sounds like the AppView is the instance. If you disagree with the moderation, you can move to a different AppView (that may use different relays) but keep your PDS.

Whereas with Mastodon your PDS is your AppView, so if you leave the AppView you lose your PDS (and have to somehow export it).

Is that correct?

cavoirom 4 days ago||
Yeah, I have the same understanding. On Mastodon, an instance is an all on one package. On Bluesky, each component can be deployed separately. The nuance is Bluesky PBC own the Bluesky (iOS, Android, Web) apps, the AppView and the default PDS hosting, I could say it's centralized by default and decentralized at will.
ncallaway 4 days ago||
> I could say it's centralized by default

I'm not sure that's totally right, though, because I (using the entirely default bsky stack) can and do regularly interact with people who are using different PDS and AppView's (like, I can interact with Eurosky and blacksky accounts).

I think the thing that is centralized by default is the bsky moderation layer.

Groxx 5 days ago||||
It's a comparison they are directly inviting, by constantly claiming it's decentralized. And then its defenders get upset when people rightfully point out that there is only a single instance, because that single instance going down takes the whole thing down. Like in Google Reader.
danabramov 5 days ago||
If atproto app goes down and it’s open source, anyone can put it back up with all public data intact.

Even if it’s not open source, anyone who wants to write the code can still get it back up with all public data intact.

I think it’s a substantial difference with “takes the whole thing down”. Can we acknowledge that?

Groxx 5 days ago|||
if mastodon.social goes down, people would rightfully say that mastodon.social went down even though it's open source and anyone could run their own.

>"But where are all the Bluesky instances?"

I agree that it doesn't mean "atproto went down", and I don't mean to imply that. but "bluesky went down" is completely accurate, and bluesky is the one claiming to be decentralized due to using atproto. there are no other instances in bluesky's network, only partial ones (blacksky, last I heard they were still working on a major piece?), hence the "no it's not" responses. and that's also how they're directly encouraging people conflating the two.

danabramov 5 days ago|||
I’m speaking about the hypothetical situation where an app is blown from the face of the earth, not temporarily goes down. I thought that’s what the parent discussion was about. I’m not sure what we’re discussing now.

All I’m saying is that if a developer forever takes down some atproto app, another developer can put up a new app that shows the old app’s data because the data is actually inside the users’ repositories. This is similar to how if Microsoft ever discontinued Word, you could still open Word documents in Google Docs. Does that make sense?

Re: Blacksky, they do fully run on their own infra now. So it doesn’t depend on Bluesky’s database.

Groxx 5 days ago|||
it's somewhat similar, yeah. minus the part where bluesky itself is by far the majority host of people's data. that puts it more in the realm of "Office 365 Online + OneDrive storage" than "Word" - a lot of people will lose a lot of data, though something resembling it can be started up again. and people with backups (their own PDS) will just move to OpenOffice for a bit.

Blacksky finishing their full forking does finally give them a much stronger leg to stand on for "bluesky is decentralized", though.

PDSes are great and I really wish Mastodon would support something similar. Mastodon's lack of account portability / data ownership / lightweight hosting is a massive issue.

danabramov 5 days ago||
Yeah that’s a fair clarification. At the very least I think Bluesky hosting should start doing something for automatic backups.
neko-moe 5 days ago|||
They're funding Fig to create and run a "full network backup" solution. What Bluesky really needs to do is figure out a way to get users to own their own backup recover key, whether personally or through some third-party service.
Fraterkes 5 days ago|||
I'm sorry, just to clarify: in your scenario where the app/company is suddenly vaporized from the face of the earth, if that happened to Bluesky right now it would effectively mean that >90% of content currently published using Atproto would be lost?
danabramov 5 days ago||
No and yes and no / it depends.

Realistically, I can't say "yes" because I'm sure there's plenty of copies of entire network by now. They would be out of date but would have all old records. So that could be maybe 70% that's already backed up. I guess they likely won't include images/blobs. There's an ongoing project to build an always-available full archive with this specific purpose (https://atproto.com/blog/introducing-hubble-a-public-mirror-...) so it is also an active area of work.

If we imagine that nobody has a full copy today or is unwilling to share it, the answer would technically be yes.

I'd still say that, for an app going down, the answer is "no" because "Bluesky app" and "Bluesky hosting" are like two separate services. The point I was making was that specifically "apps going down doesn't destroy data". (The distinction between "Bluesky app" and "Bluesky hosting" isn't completely contrived because I'd expect the cost of running the app to be many orders of magnitude higher than the cost of running hosting.)

But if you pick a hosting company, and users don't have backups, and nobody does mirroring, then yes, hosting disappearing would destroy data. As with literally any hosting.

wolvoleo 5 days ago|||
Yeah I'm kinda waiting for this. I don't like to join bluesky because I want it more decentralised but I can't join blacksky because it's only for black people.

I'm kinda hoping someone sets up a rainbowsky or something for us in the LGBT community. Now that I would join.

hack1312 2 days ago|||
Blacksky is not only for Black people. They’re only reserving the blacksky.social domain handles for them, everyone else who wants to have a Blacksky account can use the myatproto.social domain.
quasigod 5 days ago||||
https://northskysocial.com/ might work for you!

You can have an account on Northsky and use it with Blacksky's appview!

wolvoleo 5 days ago||
Oh thanks! I wish they'd have their own appview but I guess that might take time.

I'll definitely try it out!

quasigod 3 days ago||
NP! And yep, their own appview is a WIP. You can read more about their future plans here if interested: https://northskysocial.com/posts/beginning-phase-2-of-norths...

Theres also front ends that avoid using an appview at all if that sounds preferable to relying on an appview not run by your PDS host: https://tangled.org/whey.party/red-dwarf

dlock17 5 days ago||||
The blacksky servers also host myatproto and crypto anarchy PDS's, which are open to anyone
krapp 5 days ago|||
The obvious question is, which group gets dibs on "redsky?"
chickensong 5 days ago|||
The Fixx https://www.youtube.com/watch?v=cit17Si-Vts
hexasquid 5 days ago|||
I hope it's shepherds
EnglishMobster 5 days ago||||
Blacksky is now fully independent and does not have any reliance on Bluesky whatsoever.

In fact, in cases where Bluesky _did_ go down, Blacksky was still working fine (if a little slow due to the amount of Bluesky people on Blacksky), and people were able to make posts and everything.

ncallaway 4 days ago||||
> blacksky, last I heard they were still working on a major piece?

While that was true, I don't think it's true anymore. I think blacksky is fully independent. Eurosky is currently in the spot you're describing (partially independent, but moving towards also being fully independent).

mozzius 5 days ago|||
blacksky does now run the entire stack themselves
pocksuppet 5 days ago|||
Can they? 99.8% of the Blue Sky app data is hosted on the Blue Sky company servers.
1dom 5 days ago||||
Thanks for the fair response, I agree you're being cheeky. Sorry, I'm being lazy not searching here, but have you written anything on if instances of something is a good measure of decentralisation? (FWIW, I feel independently owned/managed instances in the traditional non-mastodon-definition seems like an okay measure of decentralisation.)

I completely agree with the point in your link that relays are different to instances - I love architectures involving dumb-relay or zero-trust type nodes. But I think Relays should still be mentioned in your post, since they're probably the main architectural element which protect PDS instances from the scale issues heavily federated AP instances might face, right? (I only have a high level understanding of ATProto and very little experience with AP, happy to be told I just need to learn more for this to make sense.)

danabramov 5 days ago||
In Mastodon/AP, different instances talk to each other which creates the scale problem you’re mentioning.

AT doesn’t have this kind of issue even without Relays. This is because PDS never talks to another PDS so there’s no quadratic growth of edges. PDS only talks to apps, and there’s limited amount of apps on the network. And end users hit apps which cache stuff, so apps tend to take the user traffic hit.

Relays are helpful more on the app side because you don’t want to teach each app to crawl PDS’s and subscribe to them.

I didn’t dive into Relays in the article because they’re kind of a “next obvious optimization” but not really inherent to the model. There are other models like apps hitting shared backlink caches (like Constellation). Relay isn’t fundamental in the way hosting and apps are.

kuschku 4 days ago||
Wouldn't I have the same quadratic growth (if not worse) if each community were to self-host their app view and relay?

> because you don’t want to teach each app to crawl PDS’s and subscribe to them

Why not?

If I want true decentralization, that means no central component. For the same reason that communities and individuals host their own RSS readers, each community will in the end also have to host their own relay and app view.

The benefits of decentralisation, including fault-resistance and censorship-resistance, can only manifest once every community is self-hosting their own relay and app view.

danabramov 4 days ago||
Maybe we’re just ideologically misaligned here. I think every single little community hosting a copy of every single app is insane, and not where I’d like to end up. It’s like the extreme end of the spectrum compared to centralized Web 2.0. I think atproto’s ethos falls somewhere in the middle — community is mostly a “soft” primitive, and there’s only so many full-scale “copies” of some app as there are strong opinions+funding bundles that motivate their existence. So maybe not too many for large scale ones.
kuschku 4 days ago||
> Maybe we’re just ideologically misaligned here. I think every single little community hosting a copy of every single app is insane, and not where I’d like to end up

Well, it's where we used to be — and it solves most of the issues of the modern web. Forums, blogs, IRC, teamspeak, gaming servers, etc, it all used to work relatively well with that approach.

rimunroe 4 days ago||
I don’t think the problem I want solved here is replicating forums, blogs, IRC, Teamspeak, or gaming servers. I want something a lot like Twitter but with some way to take my stuff and leave if an asshole takes control. I don’t want Mastodon, because from what I’ve seen of it when friends link me stuff from it it’s extremely clunky and slow. Plus, whenever I’ve gone to create an account I’ve been presented with a huge list of servers to chose from, many of which seem to be focused on a specific topic, which makes me think I need to pick which community I want to be tied to with minimal knowledge.
kuschku 4 days ago||
Twitter became a global phenomenon with the same UI and an even slower ruby on rails implementation behind it, despite the constant fail whale.

> Plus, whenever I’ve gone to create an account I’ve been presented with a huge list of servers to chose from, many of which seem to be focused on a specific topic, which makes me think I need to pick which community I want to be tied to with minimal knowledge.

As you're already self-hosting ATproto anyway, why not self-host a mastodon instance as well?

rimunroe 4 days ago||
> Twitter became a global phenomenon with the same UI and an even slower ruby on rails implementation behind it, despite the constant fail whale.

I’m not sure what this comment is responding to. I don’t want a constant fail whale or a slow experience, and I don’t think a lot of other people would want that either.

> As you're already self-hosting ATproto anyway, why not self-host a mastodon instance as well?

Hosting a PDS is free, plus it’s considerably lighter weight conceptually than a whole Mastodon instance!

matt_kantor 4 days ago||||
My immediate question while reading your post (as someone who doesn't know much about ATProto) was "but where is the box for Bluesky?".

You didn't draw a box for Mastodon either, but my understanding is that it'd encompass all the individual instance boxes in the Mastodon-brained diagram. I think if you were to draw a box for ATmosphere it'd encompass everything in your ATProto diagrams. But what about Bluesky, Eurosky, etc? Are they "apps" in your diagram? I don't think so because I'm pretty sure they also host users' data. Are they the dotted "hosting" boxes? What are these things even called? Apparently not "instances"; are they "services"? "Networks"? "Providers"? Something else?

danabramov 4 days ago||
You’re right that this is confusing!

Bluesky is two things. There’s “Bluesky hosting”, and there’s “Bluesky app”. Conceptually and on the network level they have nothing to do with each other. These are different pieces of software running on different stacks and they are agnostic of each other. Bluesky the company happens to run both because it’s kickstarting this whole thing. But you can swap hosting (I just did) while using Bluesky app, or you can keep Bluesky hosting but use other apps in addition (like Tangled) or instead of Bluesky (like Blacksky).

Eurosky is a hosting provider primarily. They happen to also develop an app (Mu Social) but afaik currently that’s just a skin for the Bluesky app (it talks to Bluesky app API). Nothing stops them from removing that dependency (like Blacksky did) though and making it an independent forked app though.

So the answer is — companies and organisations in Atmosphere often provide services for different roles in the system. Some do just hosting, some do apps, some do other kinds of network infrastructure that is used by many apps, and many do multiple things at once.

ori_b 5 days ago||||
"but where are the instances?" is asking "if Bluesky the company disappeared or turned evil, would there be a Bluesky network that kept going?".
embedding-shape 5 days ago|||
> why would you assume that when someone asks "where are the instances?" they're not using the common mainstream use of the word "instances", like, servers, or running software, or VMs, or containers?

Of course depends on the context, but in a lot of discussions about ATProto, ActivityPub, Mastodon and nearby areas, people talk about "instances" as in "ActivityPub instances that host my data and my profile uses its URL as a 'name'". The blog post is specifically for that context I think.

It's less about trying to hide around the issue, and more reframing how you see the concepts, as people start to associate words with concepts and structures. So when people talk about "decentralized social media", lots of people think about ActivityPub, which typically (always?) has a kind of federated architecture, and the instance is one of those nodes in the network. When these people see ATProto, instinctively (and perhaps rightly so) they literally ask "But why is there only one Bluesky instance that people join?" as those concepts map close to what they know.

Overall I think the post is a good and useful addition to the discourse, with perhaps not a completely novel perspective, but posted publicly for future reference when this inevitably gets asks again sometime in the future, specifically for the people who have these previous associations already formed in their head.

echelon 5 days ago||
All of this goes away if we just do P2P social media.

Swarms of content.

Cryptographic identities and content signing/attribution.

Cryptographic hashes for content uniqueness/immutability.

Immutability in general.

Ephemerality (content lives as long as some node cares to retain it, otherwise it gets forgotten).

Concrete but extensible ontology for core concepts.

You don't need login. You don't need to agree on a common platform. 3rd party tools and extensions can filter content, provide trust graphs, interest graphs, etc.

You can just slurp up and score whatever might interest you. Your agent or algorithm might do pre-filtering against your preferred heuristics to downsample to relevancy.

You could write any client for this in any shape or form. Completely different look and feel for different people and interests / focuses.

iameli 5 days ago|||
Daniel Holmgren discusses this in his really good atproto ethos talk — the P2P networks are cool but incapable of delivering on what users expect from modern social media https://youtu.be/1A-0k58TfPo?si=f_d4uoz_I8kMoKDw
embedding-shape 5 days ago||||
> All of this goes away if we just do P2P social media.

This is the wrong way to see it. There is no "Best and correct" solution, only solutions with different trade-offs. ActivityPub/Mastodon/Federation makes sense in some cases, "pure" direct distributed P2P makes sense in some cases, one central server makes sense in some.

Bluesky/ATProto just made different trade-offs, for different use cases, some of which wouldn't have been possible without the architecture they ended up with, which sibling commentator expanded on exactly what.

danabramov 5 days ago||||
The problem with client P2P is there’s no aggregation at scale. You can’t even accurately calculate things like post likes. Not to speak of recommendations, search, and all other basic things people expect from social apps.

Atproto is an attempt to engage with the problem space in a way that hits the baseline UX of Web 2.0 apps.

But it’s worth noting atproto designers come partially from P2P lineage. Some worked on Scuttlebutt, IPFS, and others.

fabrice_d 5 days ago||
> You can’t even accurately calculate things like post likes.

And maybe that's a good thing.

msla 5 days ago|||
Technical problems give way to philosophical differences but the over-arching problem is that the people behind ATProto really want to make a social media ecosystem that attracts lots of average people who will refuse to understand that the solution you're giving them can't do things Twitter could do back before Musk bought it. People get angry enough at Bluesky not having an edit button, and it's at least possible to talk about how editing can be abused.
fabrice_d 5 days ago||
You can switch to the AppView from https://mu.social/ and you'll get editing working.
jimbobthrowawy 5 days ago||
mu.social is a "client".

An "AppView" is the API server that most clients connect to that aggregates data from the network and serves it in a more useful way. mu.social still uses bluesky's AppView (api.bsky.app).

The name is confusing. I thought clients were appviews myself for a while.

danabramov 4 days ago||
I kind of started calling them all “apps” with true appviews being “independent apps”. I think sometimes it makes sense of think of this as an implementation detail. For example, Mu could actually switch to its own database if they do a bunch of technical work in the future. From the users’ perspective, it wouldn’t be noticeable.
afavour 5 days ago|||
Perhaps, but that isn’t what users want.

Coming up with a new model for social media and also dictating what features are good and bad for users is going make user adoption a tough challenge.

doublepg23 5 days ago||||
Nostr is basically this.

It's a cool idea, in practice it kind of sucks as an experience.

It's been developed adjacent to the Bitcoin community and I can't say there's much going on besides spam.

smazga 4 days ago||
Yeah, kind of a bummer. There are some cool ideas that have been implemented in nostr, but everything has that bitcoin/zap hussle.
xgulfie 5 days ago||||
Secure Scuttlebutt was a fun implementation of this, but the project is all but dead with Staltz working for Bsky and the other maintainers moving on.
pocksuppet 5 days ago||||
Both Blue Sky and Mastodon are that, if you squint.

(NOT ATProto and ActivityPub. Those are platonic ideals of protocols which have no real-world implementations. ActivityPub, especially, was obviously designed by architecture astronauts.)

echelon 5 days ago||
> architecture astronauts

Not sure how I haven't heard this one before, but I'm stealing it. Salient descriptor.

npunt 5 days ago||
Even has a wikipedia article https://en.wikipedia.org/wiki/Architecture_astronaut

Joel's post was the genesis https://www.joelonsoftware.com/2001/04/21/dont-let-architect...

Salient indeed!

bblb 5 days ago||
> They tend to work for really big companies that can afford to have lots of unproductive people with really advanced degrees that don’t contribute to the bottom line.

Interesting. I'm an architect by title because my employer doesn't have the career path of a "senior specialist who really knows their stuff and wants to keep going at it". No. We have only two paths: either Manager (not interested in the slightest), or the almighty Architect. Every time I'm forced to architect something, that bit about the bottom line comes to my mind.

qznc 5 days ago||
I'd say an architect is kind of the opposite from a specialist. The specialists cares about the stuff only they know. The architects care about the stuff everybody should know.

Anyways, it's similar in my company. People get the architect title, so managers can justify the salary promotion.

pjc50 5 days ago||||
P2p networks either kill your phone battery or require you run a hosted instance somewhere, which cuts out about 99% of potential users.
miki123211 4 days ago|||
This doesn't work for intermittently-online, battery-powered, CGNATed mobile devices, and that's what people are using in practice.

The Google / Apple walled gardens don't make it any easier, but even without them, the fundamental issues of battery life and intermittent connectivity don't disappear, walled gardens just force you to design around them instead of hiding your head in the sand and pretending they don't exist.

cavoirom 5 days ago|||
I found the distinction and comparison about Mastodon and ATProto are necessary. The fediverse model is easier to understand given existing social networks. ATProto is a novel concept that give users data sovereign and also the scalability of the centralized social networks.
1dom 5 days ago||
I agree, a comparison and distinction is helpful, maybe even necessary. But I felt the author's bias came across a bit too strong in places and was a little distracting. Still interesting stuff though!
doublepg23 5 days ago||
Perhaps ATProto vs. ActivityPub will been seen as the Fediverse's East-West Schism.

Instead of decrees over the "filioque" we get blog posts about the definition of "federation" where both parties talk past each other.

riffraff 5 days ago||
The good thing is bridgy fed/a new social exists, and you can trivially bridge atmosphere and fediverse today.

The east-west schism took way longer to allow some reconciliation :)

p4bl0 5 days ago||
I think the analogy presented here is broken. RSS doesn't depend on Google Reader at all. Even at its prime, RSS depended less on Google Reader than email depends on Gmail now. In ATProto, AppViews heavily depends on Relays to be useful, and Relays are quite expensive to run. Also, the yellow circles which represent blogs in the RSS illustration are really not of the same nature as the same circles which represent posts on Facebook. Blogs are self-sufficient, for example.

I'm not saying ATProto is bad at all, but I feel like this blog post adds more confusion than it clarifies anything.

pfraze 5 days ago||
Relays are actually quite cheap now! They used to be a bit more expensive when they archived all the traffic, but in sync 1.1 that was dropped and they can be run on $20/mo VMs pretty trivially now
hahajk 5 days ago||
Someone has to archive the data, right? Perhaps the complexity has been pushed to the AppViews?

If I read a post from a month ago, how will my client know how many likes it has or what the replies were? Without reverse links, someone has to look up in a database of all AT actions for likes/replies pointing to that post.

Contrast with the inbox/outbox forward/reverse linking model of activity pub.

IANSYT 5 days ago||
AppViews already had to archive whatever data from the network they cared about. The change just means that an AppView won't be able to infinitely backfill from any relay, you either need to find a relay that archives all the data you want and backfill from that relay, or you'll need to backfill by querying pds's directly. Or you could just not backfill at all, your AppView can do whatever it wants to really. Clients always talk to an AppView to get information about the network, the AppView manages the building of reverse links, the relay doesn't care about the hydrated state of the network, its just a stream of events which occur on the atproto network.
notthemessiah 5 days ago|||
> Relays are quite expensive to run

While relays are among the more intensive parts of AT Protocol infrastructure, their cost of operation is still something most people can afford: approximately $30/mo now. What is truly expensive and difficult is something that will be immutably so regardless of how centralized or decentralized you are: moderation.

The author of this piece wrote about this common misconception about relays 9 months ago: https://news.ycombinator.com/item?id=45077291#45078223

ramblurr 5 days ago|||
> their cost of operation is still something most people can afford: approximately $30/mo now.

Your definition of "most people" must be very different than the literal meaning.

skybrian 5 days ago|||
How about, less than what many people pay for a tank of gas?

Most people won't do it, but they don't have to, and it's not a particularly expensive hobby.

TylerE 5 days ago||
In the US. How about in Kenya or Laos? Plenty of places where $30/month is closer to “median monthly income” than “an expense you’d barely notice”.
skybrian 4 days ago|||
We don’t need everyone to run a relay to get to the point where there’s sufficient redundancy that no relay matters too much.
debugnik 4 days ago|||
That applies to many other hobbies, not just running a relay; welcome to poverty. What's your point? Regular users don't have to run one.
Kinrany 5 days ago||||
I think that's unfair because most people won't run their own relays any time soon, but rather rely on a local enthusiast.
Klonoar 5 days ago||||
If $30 a month is too much for you, then you probably should be doing something other than trying to run a relay. It is just not a significant amount of money.
ascorbic 4 days ago|||
Most people reading this, then
shimman 5 days ago||||
$30 a month is a pretty massive costs for such a program. Why does it require such a beefy VPS, is it just the initial bootstrapping that requires such resources?
neko-moe 5 days ago|||
Because if you want to relay every single public event for every single user on the entire atproto network in real-time to many consuming apps and services… that's gonna cost something. Not that it costs a lot, but to expect what a relay does to be infinitely cheap is to not understand what it's doing or why it's doing it.
shimman 5 days ago||
[dead]
skybrian 5 days ago|||
That's for a server that downloads and forwards all Bluesky traffic.
lou1306 4 days ago||
Not just all BSky traffic: all traffic from every ATProto service
dbingham 5 days ago|||
"Most people" cannot afford $30 /month. And of those who can, most of those cannot afford the time and effort required to run a relay.

And I honestly think this is one of the fundamental problems with the push back towards protocols and decentralization. We're overestimating the bandwidth and capabilities of the average user and we haven't fixed the problems that pushed everyone towards centralization in the first place.

Take me, for instance. I am not only capable of running my own Mastodon or Atproto data server+relay -- I'm technically capable of writing my own ActivityPub or Atproto app.

But I'm currently sitting with accounts on bsky.app and mastodon.social -- the biggest most centralized "instances" (yes, I know, but it reasonably describes the problem). This is because I do not have the time or mental bandwidth to even pick an "instance" that would be better suited to me and migrate, let alone run my own.

And this is doubly and triply true for the average person who doesn't have the technical abilities I have.

As a result, both Mastodon and Bluesky are still practically centralized to a large degree. An overwhelming majority (more than 90% last I found data) of Bluesky users are hosted by bsky.app. Similarly on Mastodon, a large plurality of users (~20%) are on Mastodon.social. Mastodon's obviously doing better than Bluesky in this regard, but it also has about a quarter of the overall traction, and I'd honestly put that down to Bluesky's apparent centralization which makes it a lot easier for people to join and wrap their heads around it.

danabramov 5 days ago|||
This isn't about "average user". Relays have nothing to do with using atproto as a user. They're about developers making new apps.

By "most people" it's implied we're talking about most people who want to run a web app in their spare time. Do you mean a different definition? If you want to run a web app (which is the only reason you'd want a relay) and you're able to pool with ten other developers who want to do the same, you can make the cost to $3/mo. Is that feasible? What do you normally pay for web app hosting?

And again, if you're a hobbyist developer, you'd just use a community relay that already exists and is free. I assume that, if you want to run your own, you have a specific reason to do so.

kyle-rb 5 days ago||||
I view Bluesky as being decentralized-optional. It's cool because you actually can join first and wrap your head around it later. You can continue using your account you created on the fully 1st-party stack, and you still have the option to switch to self-hosting the parts you care about, without losing your posts or followers.

- If you just want to use your domain name as a username, you set a DNS record.

- If what you care about is the client, you can build your own website or native app. You don't really even need to host a server other than for your own static assets, since the app can request Bluesky network data directly via the logged-in user's PDS (they even have CORS headers!)

- If what you care about is data sovereignty, you can self host your PDS (personal data server) on a low-end VPS. It's cheap because it pretty much just holds your data, passes events to Relays, and proxies data requests to your preferred AppView.

- If what you care about is not needing to trust Bluesky to reliably gather and collate events from each PDS, then you'd need to host a Relay ($30/month) and an AppView (even more expensive) so you'd be best off pooling resources with other people you trust. But that's kind of the nuclear option.

- With a narrower scope though: if you noticed that Bluesky was censoring a handful of legitimate accounts and you still wanted to follow them, I think you could probably have a personal Relay+AppView that only listens to the censored accounts' PDS's, and proxies other requests to the 1st party AppView. (I'm not 100% sure if that would be allowed.)

supern0va 5 days ago||||
>"Most people" cannot afford $30 /month. And of those who can, most of those cannot afford the time and effort required to run a relay.

I don't think that was a recommendation for people to do, but to demonstrate that it doesn't require much in the way of resources. That VM could probably host hundreds of people, since relays scale and de-dupe shared content.

If someone said that email or a personal website was inexpensive and could be hosted on a cheap VM, I don't think you'd make a comment like the above dismissing it as impractical: the idea is that if it's that cheap, then there are people that can host cheap/free (maybe ad supported) relays, similar to how cheap/free webmail exists today.

knotbin 5 days ago||||
> "Most people" cannot afford $30 /month. And of those who can, most of those cannot afford the time and effort required to run a relay.

??? that's not the point. the goal isn't that some non-technical 40 year old will run their own relay. the goal is that relays will be cheap enough to run that there can be hundreds of relays for developers of apps to choose from.

relays are DEVELOPER facing only, meaning the developer of the app chooses which to use, and can even use none at all and build the functionality of the relay into their app itself.

no matter where your account is hosted, it will be crawled by every relay (unless it's banned from some of them) so users or people who "don't have the bandwidth to think about this" don't have to worry about relays at all. anyone who will ACTUALLY BENEFIT from an independently hosted relay (app dev) will perceive them as an incredibly marginal cost.

> This is because I do not have the time or mental bandwidth to even pick an "instance" that would be better suited to me and migrate, let alone run my own.

Idk what to say to that. So I'll just say that you can run `npm create pds` and have a single-user PDS hosted for free on Cloudflare in minutes.

But I think what you meant to say (stop me if I'm wrong) isn't that you don't have the "mental bandwidth", it's more that you (and the average user) don't actually _want_ to migrate because there's no tangible benefit.

To this I would say: migration is not the path to spreading users out across instances at a large scale. Migration to me is more of an insurance against a service going down or turning evil. The real way to get people to spread out across different PDSes is to make it so there are more "entry points" to the atmosphere, so more people are onboarded to the atmosphere in more places other than Bluesky, where they can sign up and automatically be on another instance. If more independent atproto apps are created with their own PDSes for onboarding, that's what will solve the problem imo, not encouraging users to migrate (although that can also be done at smaller scales, as Blacksky and Eurosky have proven)

supern0va 1 day ago||
>To this I would say: migration is not the path to spreading users out across instances at a large scale. Migration to me is more of an insurance against a service going down or turning evil.

I think people aren't paying enough attention this part right here: I think the architecture of atproto creates a different set of incentives. People running communities are more likely to face community pressure to ban users, or de-federate with other communities they don't like, and your open/decentralized network fractures apart, creating little silos.

People running infrastructure connecting them to a global network/resource are less likely to feel those pressures. No one asks an email provider to ban another webmail host. The architecture colors the perception.

The biggest problem Bluesky has had is that by virtue of being the only effective relay at launch, people viewed it more like the former and less like the latter. But I think if we start to see more places like Blacksky and Eurosky get mindshare, we can shift it back.

vvpan 4 days ago|||
An average user does not need to run their own node for decentralization to work. It just needs to be cheap and easy enough for enough of technical users to run
vvpan 4 days ago||
People have set up relays for like $15/month.
muglug 5 days ago||
As far as I can tell, Relays[1] are the glue that makes ATProto work performantly. I think they're supposed to be content-agnostic — they just shuttle data through, reducing the number of services each AppView needs to be aware of.

As the blog mentions, the big improvement vs Mastodon is that Relays, AppViews and PDSes are separate services with their own distinct scaling demands. It's a rather beautiful solution to a system design problem.

[1] https://atproto.com/guides/glossary

danabramov 5 days ago||
Yeah, Relays are one way to do that. I've mostly skipped them because they're an invisible optimization and there are other strategies. E.g. many smaller apps today rely on Constellation (https://constellation.microcosm.blue/) instead of building their own database index, so they don't use a Relay at all.
RobotToaster 5 days ago||
They do remove content directly from relays. They claim they only remove content that is illegal to host, but I don't know how true that is, and there is always the risk it could change in the future.

https://docs.bsky.app/blog/blueskys-moderation-architecture#...

jazzyjackson 5 days ago|||
I want the bsky org to be able to choose what content they host (and I think the internet would be a better place without section 230 protections allowing hosts to ignore the content they distribute); the promise as I understood it was that relays could be hot pluggable. If someone stopped carrying content (maybe it was illegal in /their/ region and not yours) you could failover to another relay.

However there is very little incentive to mirror any of the firehouse if someone else is doing it for free.

TylerE 5 days ago||
If a relay was silently dripping content how would you even know?
chokolad 5 days ago|||
If that becomes a massive problem - host a relay with different moderation policy.
NoGravitas 5 days ago||
The scale-down floor for running an ATProto relay or appview is much, much higher than the floor for running a fediverse instance.
chokolad 5 days ago|||
You can scale down as much as you want. You don't need to run full relay if you want to follow only a dozen of accounts. I bet you can run something like that on a raspberry pi or something similar. You will not get the search over all of the network, but that's something you don't get with your personal mastodon instances either.
ryukafalz 5 days ago||
Wouldn't you then not be able to see replies from anyone besides the dozen accounts your relay follows too? If I run a personal Mastodon instance and someone replies to one of my posts, their instance will send it directly to mine and I'll see it. My understanding of the ATProto architecture is that it doesn't support directed messaging like that.
danabramov 5 days ago||
The cost for consuming the firehose of the entire network is very low. So the actual cost that can blow up is storage and computation.

If you want to filter for events based on some heuristic (e.g. only from follows of server list), you can do that. You can then specialize that further. E.g. for ongoing threads that already pass your filter, you could add their IDs to an array, and accept all replies for those threads as well into your DB.

You already get a stream of everything so you can scale down what you write to DB to exactly the characteristics you need. Including keeping threads cohesive.

ryukafalz 5 days ago||
To refer back to the comment I was replying to: is that the sort of thing you could realistically run on a raspberry pi? At home?
danabramov 5 days ago||
Yeah! In fact some popular ecosystem services are (or at least have been) running on Raspberry Pi. See here: https://bsky.bad-example.com/can-atproto-scale-down/

Also the best algorithmic “For You” feed on the app runs off someone’s gaming computer at home

ascorbic 5 days ago|||
Since sync 1.1 last year, you can run a relay on a relatively small VPS
4lx87 5 days ago||
If it quacks like a duck... An account has a single Personal Data Server (PDS), right? The DID links to a PDS which is the canonical data feed for a user, and where a user's writes go. Data can be replicated but the PDS is treated as canonical. That's much closer to client/server architecture than distributed architecture. There's no P2P database. There's no writes into a DHT or peers. You write to your PDS, then those writes are optionally mirrored. Also discovery happens via DNS, so you don't even ask peers for data. You connect to a relay not as a peer but as a client asking a server for a copy of data that's canonically hosted by the PDS. I don't think it's a stretch to call the PDS an instance and the relay a mirror.
danabramov 5 days ago||
Yeah sure that’s a fine way to phrase it. It’s not what most people who talk about Mastodon mean by “instance”. In Mastodon, “instance” is a coupled and inseparable data hosting + app + community + moderation pairing.
4lx87 5 days ago||
From a user’s perspective: To use Bluesky I need to create an account, and to create an account I need to choose the server where that account is hosted. Once I have an account I can follow any account even if hosted w/ someone else. That’s the same UX as Mastadon (leaving aside that moving PDS might be easier in ATProto than ActivityPub).
danabramov 5 days ago||
Well I think "can move later" makes all the difference because the initial choice doesn't matter to the individual user. It isn't even blocking. Most people don't know they're making that choice, and I think that's fine. In Mastodon, the choice is very high stakes.
LaGrange 4 days ago|||
Frontends and relays are far closer to “quacking like an instance.” That’s where your sysop’s power lives. The PDS itself isn’t very powerful - can’t meaningfully limit who you can talk to, for example.
JoshTriplett 5 days ago||
I appreciate how this explains the difference between the two.

But I also found it a little frustrating, because it answered one part of the question but failed to answer the question so what does ATProto do to solve the problems that instances solve?

For example, when this article dismisses defederation as merely a mysterious reason you might not see posts from your friends, it fails to answer "so how does atproto solve the problems that defederation solves?". Because the default reasonable answer to assume, given this framing, is "it doesn't".

danabramov 5 days ago||
If you’re asking about moderation, it works similarly as you’d expect it to work in a everything-RSS world.

At the hosting level, the hosting you use will likely ban you for clearly illegal stuff. Same as blogspot dot com or Cloudflare could ban you for certain things.

At the application level, application admins/mods would moderate as any app does. This is similar to running any web service today with user generated content. It’s up to app developers to choose. Apps can also provide primitives for userland moderation, like Reddit does, or even ability to plug your own extra moderation services (which Bluesky allows). But again, this is largely how it works on any app with user-generated content.

There’s no “defederation” because there’s no analog of “community instances” that may fight with each other. There’s hosting, there’s apps, and there’s app-level moderation that works according to each app’s developer’s choices.

Does this help clarify it?

JoshTriplett 5 days ago|||
> Apps can also provide primitives for userland moderation, like Reddit does, or even ability to plug your own extra moderation services (which Bluesky allows).

This is the part I would be looking for, in an article talking about "there are no instances". Is there a standard protocol for this, so that anyone can spin up a shared moderation service that people can subscribe to if they're aligned with it, and be able to plug that into any standard app built on the protocol (not just Bluesky-the-company's app)? Or is this something specific to Bluesky-the-company?

If this is a standardized part of the protocol, then that answers the question of "how does ATProto solve the same problems defederation solves".

There are several other things I can think of in the category of "how do you solve the problems that ActivityPub uses instances to solve", but they're things I've already asked in other parts of this thread, namely "how do you make the parts of the system not shown in the tidy hosts->apps M:N graph decentralized, too".

danabramov 5 days ago||
Great questions! The protocol does have suggested app-agnostic moderation primitives (see https://atproto.com/guides/labels, https://atproto.com/guides/creating-a-labeler). That's the basis of how Bluesky's own moderation works under the hood. There's also Bluesky-specific tools and APIs like Ozone (https://atproto.com/guides/using-ozone), but they build on top of those primitives.

Of course, nothing stops an app from doing moderation differently and not using any of that. This is more for better composability and interoperability.

JoshTriplett 5 days ago||
I had seen the mentions of labelers, though it hadn't been clear that that was something general beyond Bluesky-the-app, thank you. This would have been helpful to have in the article, alongside the mentions of defederation. When people are asking about instances, sometimes what they want to know is how you solve the same set of problems they care about, so here are the solutions to those problems, etc.
rtpg 5 days ago||||
> There’s no “defederation” because there’s no analog of “community instances” that may fight with each other.

If Bluesky specifically wanted to just not have its user interact with some other entity in ATProto-land would they be able to?

My impression is that the answer to this is "yes", because people are signing up to Bluesky and relying on Bluesky to hold on to their posts etc.

Similar to how Email is all federated but in practice a bunch of people use email from one of a handful of large service providers who (in practice, not necessarily for nefarious reasons) do end up blacklisting certain email senders.

The RSS-reader example feels a bit different on the ground because for a given user, "store a list of websites you care about" is not a complicated endeavor.

For the "short-form social media with algorithmic timeline" usecase (which isn't all atproto is about, granted!) "users self-host a thing to scoop up enough of the world's posts to then make a local algorithmic timeline" doesn't... doesn't feel very feasible, right?

I guess the blogspot comparison is apt... but if "full" self-hosting requires a relay with quite some juice ($30 is "cheap" but... compared to a pile of files to host your own blog...), then in practice we're going to see a heavy amount of centralization anyways right?

allwashedup 5 days ago||||
How is it any different than a centralized social media service then? Merely the fact that you can get a firehose from the website in a standard format? This was already the case with HTTP. The problem is that websites can leverage their power to make a locked-in ecosystem.

see https://www.youtube.com/watch?v=BxV14h0kFs0 twitter, etc once had a much more open API. so did reddit. This was just the first stage of their penetration strategy.

The decentralization is totally irrelevant due to the way it's implemented. The problem is that Apps are sticky, so app developers have undue power to control their users.

The "content hosts" "moderators" etc need to be completely cut out of the picture to be at the same level of censorship resistance as an RSS-shared blog. I can host a blog on my own computer, and you can subscribe to it without that many intermediaries.

danabramov 5 days ago||
Sure, you could say it’s a set of conventions on top of what you’re describing — that imo is sufficient to shift the incentive picture. It’s a firehose of typed JSON that’s canonically stored at URLs that survive hosting changes and can link to other JSON. It’s signed and verifiable and links to other JSON.

So the new thing here is that if everyone’s data exists in this format, the competition between apps is guaranteed. Because a competitor doesn’t start with nothing: they start with the same userbase and the same content. They can immediately start competing on features, moderation, product experience, etc, without first “luring” everyone to register again and start their entire graphs from scratch.

I think that makes a big difference. Don’t you think?

zoul 4 days ago|||
New services don’t start with the same userbase because users don’t use protocols, they use apps. And for Bluesky that’s predominantly a single centralized app. If that demotes content from the “competitors” or even switches the protocol completely, you are stuffed. The apps are very much not equal.
inigyou 4 days ago||||
99.8% on BlueSky PBC. If they turn off federation, it becomes centralised.
allwashedup 5 days ago|||
[dead]
inigyou 4 days ago|||
A number of PDSes are already defederated from the bluesky relay and even more from the bluesky appview.
NoGravitas 5 days ago|||
It doesn't solve those problems, except in an alternative universe where there are a very large number of appviews capable of consuming the entire firehose and you can freely choose between them and cheaply run your own. ATProto is like RSS in a universe where you can only read RSS through Google Reader (or a clone of Google Reader running on the same scale).
danabramov 5 days ago||
I don’t know what you’re saying.

I’m running an atproto app and it’s perfectly capable of ingesting the entire firehouse as it comes in. It costs me maybe $10/mo and mostly because I haven’t fixed some memory leaks.

Of course, few of records that come through are relevant to my app so I don’t store them.

If I wanted to store gigabytes of records (like Bluesky) for millions of users forever then yes it would be more expensive. Which would be the case with any tech! What are you comparing it to? How is this a downside of atproto?

Mastodon instances aren’t a valid comparison point because by definition they’re small-world. They don’t serve millions of users.

If your point is that you want small-world atproto, that’s absolutely possible. Take the Bluesky server codebase and make it so that it ignores incoming content beyond some criteria (like “follows of server member list”). You can recreate Mastodon experience on atproto, it just hasn’t been very interesting to anyone so far AFAIK.

zoul 4 days ago||
I think we are all saying that Mastodon is meaningfully decentralized and there is no single party that could pull the rug from beneath the whole network. This is what instances bring to the table. Bluesky may be architecturally beautiful, but it’s not decentralized in practice. (See https://arewedecentralizedyet.online for example.) And we know what tends to happen to important centralized services.
AnthonyMouse 5 days ago||
> it fails to answer "so how does atproto solve the problems that defederation solves?".

The better way to ask this is, how does ActivityPub solve the problems that defederation causes? It's essentially the thing Microsoft does with email. Discard messages from all but the largest providers, defederate by default, forcing users to use Microsoft or another major incumbent if they want their messages to be delivered. Then new instances can't have their messages delivered, therefore can't get users. Which is obviously a perverse incentive for the major incumbents to not federate with new instances.

It's an architectural choice that has the long-term effect of cementing an oligopoly.

Meanwhile the claim is that it's necessary to prevent spam, but there are other providers that don't do this, e.g. in general you can deliver to Gmail as long as you have DKIM and reverse DNS etc. configured correctly, and those providers don't have any more of a spam problem than the ones who block innocent small servers by default.

Moreover, there is an obvious way to do this without giving the major instances a perverse incentive. You do the filtering on the client so that the filter list(s) you use are provided by something in the nature of uBlock rather than something in the nature of Microsoft, since the former doesn't operate any instances and therefore isn't trying to pressure everyone to use theirs.

INTPenis 5 days ago||
ATproto sacrifices true decentralization for consistency, Mastodon and AP does the opposite, sacrifices true consistency for more accessible decentralization.

At least that's how I understand it, because running an AP node is much more accessible to regular selfhosters than running one of those content relays in AT.

So all you'll ever "decentralize" in AT is your own data, it's more about owning your data rather than collectively owning a part of the network.

And we've been over this many times before on HN.

h14h 5 days ago||
This is an interesting take because AtProto feels both more accessible AND more decentralized to me (at least with my current mental model).

With ActivityPub, because running an instance requires hosting the data, the application, and dealing with all the subsequent scaling challenges, you kinda have to choose between being taking on active ops responsibilities or tying yourself to someone else's instance (which will probably be one of the bigger, more centralized ones).

If you decide you don't like an instance you picked and decide to move (unless things have changed) you're kinda stuck needing to start fresh.

With AtProto, it's trivial to jump ship to a different application platform and continue using your same identity. Exporting your data from a platform and self-hosting is a bit of a UX challenge, but at least it's possible.

As an example, I recently started using Tangled for the first time and was able to login using my existing bsky-backed domain (h14h.com). No need to create a new account or pick a new username -- it was as if I were already there. Then getting set up w/ self-hosting my git repos on a VPS was an afternoon of work at most, and it's just some backend service chugging away that I almost never have to think about.

The worst that will ever happen is I see a banner message in tangled.org saying something like "your repo is out of date and may be compatible with the latest version of Tangled", which I can solve by simply rebuilding & redeploying a docker image w/ the latest versions.

Granted, AtProto is definitely harder to wrap your head around architecturally. But actually interfacing it with a user is much simpler, IMO.

kuschku 4 days ago||
> This is an interesting take because AtProto feels both more accessible AND more decentralized to me (at least with my current mental model).

A good measure for decentralisation is: Can your community continue using the service if the rest of the world disappeared? Can you still federate with other communities that might still exist? What else needs to remain for the service to remain useful?

With mastodon, all of that is trivially answered. With AtProto, I'm either 100% reliant on bluesky, or I'd need to spend tenthousands of dollars a month minimum to self-host the relays and app view.

h14h 4 days ago||
How is that trivially answered with Mastodon? And what does "the rest of the world disappearing" actually mean in your example?

Everything I'm seeing about hosting costs in the current day and age is that the full AtProto stack (PDS, Relay, AppView) is roughly in par with hosting an ActivityPub instance of equivalent size (if not a little cheaper).

And with AtProto, folks get to pick and choose what slice of the stack they wanna host, and opt-in to more of it gradually as they see fit. With ActivityPub, you are either opting in to hosting an entire instance, or fully reliant on someone else.

I'm open to the idea I'm misunderstanding some aspect of ActivityPub, given I've not really explored the hosting side of all that deeply.

kuschku 4 days ago||
Imagine bluesky (the company) and mastodon.social both disappear tomorrow.

My self-hosted mastodon server continues working, and can continue federating with e.g. chaos.social

With bluesky it's different.

If I am fully self-hosting the entire bluesky app, I need to spend ten thousands of dollars a month, but it'll keep working.

If I self-host my own app, it's cheap and keeps working, but I can only see content from my users in the best of times.

If I use bluesky's relays, it's cheap and shows everyone I follow, but it'll stop working if bluesky disappears.

h14h 4 days ago|||
If Mastodon.social disappeared tomorrow, aren't everyone's accounts on that instance effectively just gone?

> If I am fully self-hosting the entire bluesky app, I need to spend ten thousands of dollars a month, but it'll keep working.

That strikes me as a point in favor of AtProto for decentralization (unless it's possible for others to cheaply/simply run their own backups of the entire mastodon.social instance & I'm just unaware of that fact).

> With bluesky it's different.

The key AtProto differentiator I find most compelling (which it seems you omitted from your list) is that Bluesky can disappear tomorrow and, if I'm running my own PDS, I can simply log in to another different platform using my same username & account and immediately see my entire message history w/o skipping a beat.

From the standpoint of an individual user who just wants to own their own data w/o needing to worry about hosting entire apps or manage scaling, the fact that AtProto allows me to host a PDS and do just that while still using any of big-name apps w/o needing to create new logins and fracture my online presence feels like a far more pragmatic trade-off, IMO.

I guess it comes down whether you care more about data decentralization, or platform decentralization. Personally, I care far more about the former, and to that end the AtProto model feels much easier to set up & far more seamless in practice.

kuschku 4 days ago||
> That strikes me as a point in favor of AtProto for decentralization

Well everyone's data that was stored on the bluesky PDS is also gone, but at least for a few ten thousand dollars a month I can keep my own instance running?

Self-hosting mastodon is about the same amount of effort as self-hosting your PDS.

But you get a lot more for it. And that's just not an option you have with ATproto.

zoul 4 days ago|||
This! There is a “Bluesky outage”. There is no “Mastodon outage”.
tao_oat 5 days ago|||
I'm not sure there is such a thing as "true" decentralization :) In my mind it's more of a buffet of tradeoffs rather than a single sliding scale.

FWIW, in the AP world there are several individuals and small teams running relays/mirrors/caches/AppViews and so on -- but you're right that this could get more expensive as things grow.

INTPenis 5 days ago||
I agree, with the state of things as they are now.

I prefer AP for one reason, it's more accessible to the people. I would prefer to see small computer organisations with member fees, and donations, that run their own little node, instead of huge monolithic components.

That's why I never liked bsky, because it was too monolithic. I never liked the monolithic AP instances either. If we're going to decentralize, let's properly decentralize.

As soon as something becomes huge and monolithic, it's a red flag.

danabramov 5 days ago|||
I think that’s a part of it but doesn’t state it fully.

AT doesn’t just give consistency, but a shared data model across apps. So apps can reference and render content from other apps. It’s really kind of like a web of typed JSON. Different apps are lenses through which you can see the same network. Anyone can build new experiences on top of old data. There’s nothing remotely equivalent in AP.

AP couples data to apps. In AT, it’s more like there’s one global database with entire world’s data that every app can query.

I don’t understand why the discussion always bumps into Relays. Running a Relay if you want to is cheap-ish ($30/mo) these days. There’s multiple existing ones (Bluesky or community) you can use for free. And many apps don’t use one at all and rely on community indexes like Constellation (https://constellation.microcosm.blue/). Some don’t even run their own server or database.

kmeisthax 5 days ago||
Mastodon also has content relays!

But really, I actually would argue the opposite: ATproto is (or at least, wants to be) more decentralized.

In the ActivityPub world, identity, application, and hosting are intrinsically linked. If I want to use Lemmy, I can either register a second, permanently separate ActivityPub account on that Lemmy instance, or ONLY use Lemmy to the extent my Mastodon instance knows how to send messages that Lemmy understands. EVERY new ActivityPub app is a new set of interoperability concerns, because each app owns its own identity and hosting. There's no way for my self-hosted Mastodon instance to provide an identity to a Lemmy server and then for that Lemmy server to tell that instance to host content on my behalf.

That's the bare minimum you'd need to match ATProto, at least in the version being told to me by the ATProto people. No idea if any of it applies to actually-existing ATProto, in the same way that actually-existing ActivityPub can't interop the way ActivityPub supporters claim it can.

inigyou 4 days ago||
registering a separate account per instance is decentralisation - bluesky had a central account registry
WorldMaker 5 days ago||
Google Reader feels like an ominous pick for an analogy. Sure, RSS survived the Google Reader shutdown, but not all the communities that used RSS (many that still don't know what RSS is) survived.

It feels almost "Freudian" to claim a thing is decentralized and then by analogy keep pointing to a massive (social) centralization of a decentralized ecosystem as a good thing. But especially one that we already know the ending for. Google Reader united a lot of RSS houses, value added a social graph and social commentary between them, and then at the whims of executives Google Reader fell and nearly killed RSS, but certainly destroyed an impressive social graph.

As an analogy that doesn't give me a lot of confidence in ATProto.

NoGravitas 5 days ago||
Ominous, but accurate. Imagine RSS but you couldn't use a desktop or mobile RSS reader, but only Google Reader or a comparably scaled clone.
danabramov 5 days ago|||
Well, the whole point of atproto is that the social graph also lives in the “blogs/RSS” part. The apps just index it.

So in this analogy, anyone would be able to bring Google Reader back to life or compete while using that same graph.

That’s actually how http://leaflet.pub works now if you’re curious.

WorldMaker 5 days ago||
Google Reader had OPML exports and tried to export its social graph into Google+. On the other side of it many of the blogs in Google Reader had some version of FOAF or XFN to try to maintain social graphs through open standard "semantic web" good feelings.

A social graph is more than just data, it is trust, it is attention, and it is political goodwill. That's one of the most important lessons of the fall of Google Reader. It wasn't just that the technology was shutdown, but that it damaged communities when it shutdown. You can't capture communities that don't feel like they belong anymore, that no longer trust you because you closed their former town square.

I still don't see enough evidence if BlueSky itself shutdown that ATProto survives that shock culturally, even if it is built to do that technically. If Mastodon.Social, still the biggest instance, shutdown tomorrow a number of Mastodon instances wouldn't even notice and some of the ones that did notice would just as likely throw a party as lament the disappearance. That's a pretty big cultural difference, not a technical difference.

danabramov 5 days ago||
I agree with you but I think the technical capability intersects with politics here because anyone is able to make new stuff out of old data. That’s not the same as Google carrying it through to another Google product. I’m not aware of the FOAF/XFN stuff but it’s also different if that isn’t the entire graph perfectly preserved, easily queryable by everyone involved.

When developers feel empowered to revive products or fork them, I think that eventually seeps into communities. That it’s another way of doing things. It doesn’t happen overnight but this energy exists in the Atmosphere. Maybe loss of Bluesky is not survivable culturally at the moment, but maybe it will be in a few years as Atmosphere grows and matures.

cavoirom 5 days ago||
In exchange we have many excellent RSS Reader. Just as recently someone talked about NetNewsWire.
WorldMaker 5 days ago||
I like Newsblur. It has some social tools that remind me of Google Reader at its peak. I have friends that like The Older Reader. It has some social tools that remind me of Google Reader at its peak. Neither of those social spaces communicated between each other.

What we have is a "diaspora", what was once one larger community has moved on to a lot of smaller, more disparate spaces. That's not necessarily a bad thing, but a lot of trade offs were involved, a very large community feeling was lost, and a lot of intangibles were lost (friends with Gmail accounts that could easily follow and interact with us in Google Reader but are lost trying to navigate any other RSS Reader, for instance).

TazeTSchnitzel 4 days ago||
The OP's article and replies in the comments here seem like someone who's comparing an idealised view of what Bluesky could be versus a cynical view of what Mastodon currently is. This troubles me because it overlooks the massive problems with Bluesky as it currently exists. It is hyper-centralised, much more so than Mastodon ever was. Virtually all users have their data stored by Bluesky PBC, aggregated by Bluesky PBC, access it through a website and app made by Bluesky PBC, and most crucially, are subject to the moderation decisions of Bluesky PBC at every turn. And I don't think it's a stretch to call Bluesky an “instance” here.

Now, sure, you can use a different instance for most of these services. And that instance can interoperate with Bluesky. But that's the case for Mastodon as well, and the real difference is the Fediverse has had to live with the painful compromises that come with the anarchy of the real world. I think Bluesky will discover its own version of defederation soon enough. I don't think “ah, but you technically theoretically can still interact with people even if you can't see them on your instance” is worth all that much.

dminik 4 days ago|
Not much different from threads then.
fizwidget 5 days ago||
This blog does a great job of explaining the architecture. In practice though I’d thought the “problem” was that Bluesky (the corporation) runs the main app and hosts almost all of the user data.

So at the protocol level it’s decentralised, but in practice the system is still very centralised (in terms of who controls it).

Not saying this is necessarily Bluesky’s fault, but it’s how things have played out so far right?

eek2121 5 days ago||
The "problem" is that people are looking for problems. This "problem" isn't specific to Bluesky, ATProto, or anything else. Look at any organization: profit, non-profit, group of volunteers, etc. and you'll always find someone that folks have a problem with.

I'm not an investor and have no conflict of interest with Bluesky beyond being one of the earliest of users. I also understand the protocol, the company, the website within my own limitations.

The site (and app) works just fine. Folks are really focused on finding problems rather than coming up with bigger and better solutions.

Note: the majority of folks don't want an ad-hoc p2p solution like lemmy or mastodon. they want their content in one place, and they want to be able to hold that entity accountable. Because of this, p2p social networking will never take off. I've seen more drama surrounding both Lemmy and Mastodon than I have ever seen with twitter, reddit, facebook, etc. combined.

That's my 2 cents. Also, apparently my spouse feels the same way. So do my friends.

LudwigNagasena 5 days ago|||
Does really do a great job? It just says there are no “instances”, it doesn’t explain how the architecture circumvents all the troubles that it leads to such as auth, sync, discovery, etc.
danpalmer 5 days ago||
There are other apps, other user data hosting (including personal hosting), and other backend services.

It is decentralised in both theory and practice.

The only thing you could potentially say is that because Blue sky run the biggest parts, it's not decentralised at the community or mind share level, but that's changing.

skybrian 5 days ago|
An important distinction is that blogs have their own websites and they're not required to publish full articles in their RSS feed.

Bluesky doesn't normally work that way - everything in the PDS gets replicated. They are also encouraging people to put put full blog posts in the PDS for easy replication. So, anyone who wants to index it gets a copy and you have no control over what they do.

You don't have to do it that way, though. You can publish your blog on your own website and just publish links to it on Bluesky.

kajman 5 days ago||
> So, anyone who wants to index it gets a copy and you have no control over what they do.

How does this differ from scrapers hitting the blog directly?

skybrian 5 days ago||
Web pages aren’t digitally signed, aren’t necessarily indexed by search engines, and there are ways to block bots with things like captchas. You also have much more control over the UI. If your blog has comments, you can moderate them, for better or worse.

With a PDS, the replication happens first, before anyone reads it, and the UI is out of your control.

Maybe that’s okay, but people should understand the tradeoffs.

AnthonyMouse 5 days ago|||
> Web pages aren’t digitally signed, aren’t necessarily indexed by search engines

Neither of these prevent scraping, and the lack of the first one actually makes it worse because every scraper has to go to the original server and bog it down instead of getting it from anyone with a copy of the data that they can verify using the signature.

> there are ways to block bots with things like captchas

These don't work if you have anything resembling high value content, because AI can solve them now or do the same proof of work as a real user when all they need is to get a few hundred articles once. If they want it enough they can also pay someone in a low income country to download them manually. Fundamentally if you post something that any human can access then someone can copy it. Public is public.

And if the content is the equivalent of blog comment posts, they can probably still get it, but in that case why even care if they do? Notice that this is the same thing that happens on the centralized services, e.g. Facebook uses your Facebook posts to train AI.

cavoirom 5 days ago||||
How can people control the comments about their blog post on Hacker News? I think my example is closer to what happen in PDS and App View.
jimbobthrowawy 5 days ago|||
Aren't the vast majority of web pages nowadays signed? Almost nobody downloading and storing the content on websites will retain these signatures, but they exist and can be verified with enough information. IMO archive.org and archive.today should, to prove they haven't tampered with contents.
pfraze 5 days ago||
Honestly that’s just as much because atproto is a raw data protocol. Putting an http frontend on an atproto account is something we encourage and a lot of folks do. I do that on pfrazee.com for instance, and my leaflet blogposts (which are canonically on atproto) render on my blog.
More comments...