Hacker News new | ask | show | jobs
by 1shooner 13 days ago
>We plan to transfer that ownership to an appropriate, independent protocol governance organization in the future.

I never realized there is no independent governance org that should have registered this. So AT is governed by a single for-profit entity, that also runs the only viable instance?

6 comments

>that also runs the only viable instance?

This is a category error. There are no "instances" in atproto.

https://overreacted.io/there-are-no-instances-in-atproto/

It segments the network differently (into "hosting" and "apps"), and on both axes anyone can run their independent app-agnostic hosting, as well as an independent hosting-agnostic app.

Thanks, this is informative. I had meant 'instance' from more of a general user adoption perspective (i.e. Bluesky app user plus Bluesky PDS tenant), but based on other comments here that may not be too accurate either.
This "gotcha" might get cheers from your fellow AT proto fans but only eye rolls from everyone else.
I don't mean it as a linguistic gotcha ("ha, you said instances! but we call them something else"). I'm saying this is a category error because the network topology is different. This is like saying that web is not free because people aren't running Google-scale indexes in their garages.

Tried to clarify this here: https://news.ycombinator.com/item?id=48932956

Dan, you really should refine this line of reasoning a bit as it feels not very nice in some way: it feels like you're picking an unintuitive/uncommon definition for "instance" and then using that to tell everyone they're misunderstanding stuff then they're using different, arguably more widely accepted, definitions.

We've had a very similar discussion in response to this same argument recently elsewhere on HN. If you enjoy having this debate, then carry on, but I don't think it endears non ATProto users to the ATProto cause. I think it seems needlessly controversial/pedantic. Sorry for the blunt feedback, it's because I expect better from you:)

Let me try to explain my position.

The parent post says "the only viable instance" which implicitly packs an assumption of Mastodon-like topology: a single product is expected to be split into many "instances", with some of them being more or less "viable", and that a lack of many "viable" "instances" is perceived as the protocol not being a real thing, or failing to live up to its promise. (How else are you reading "viable instance"?)

I believe that if you look at the network topology, this argument becomes much closer to "Google Reader being the only viable instance of Google Reader means RSS is a scam with a single player". Which is an absurd thing to say. That is what I'm trying to show by picking at the word "instance".

Do you find my argument flawed, or just the way I present it? How do you prefer I present it alternatively? And how do you read the parent post? My issue isn't with the word, but with the implication in the parent post.

I think you're inferring something that people aren't implying, and that inference leads to you eventually discussing how ATProto is better than mastodon. I think this doesn't look great, particularly at a time where there's quite a few posts of about unproductive conflict between open social network contributors. I don't think there's any bad intent or malice on your side: there is value in comparison between AT/AP to help understanding.

Your argument that there are no instances in ATProto isn't flawed if you redefine instances as this thing that ATProto doesn't have. But if I run it by the various computer science definitions I can find (e.g. https://en.wikipedia.org/wiki/Instance_(computer_science)) then your argument seems like it depends on a niche interpretation. So it can be technically correct, but just irrelevant or inconvenient when used in a comp sci discussion involving the word "instance".

But your blog post on the subject is interesting, and informative, and has some great diagrams, and the original parent poster agreed and learned stuff from it. Despite that, I think the implication in the parent post was, IMO, "so the main, largest implementer (instance) of the protocol is also a for-profit which owns the trademarks? I never realised that, I'd assume the protocol was governed and run by a not-for-profit independent governance org, charity or consortium" (like some other open protocols).

I think that's a fair and slightly critical implication that has nothing to do with network topology. I completely get how you would want to take issue with that implication alone, because without context like the trademark was acquired with good intent to protect protect openness, and that the Bluesky org is a specific type of for-profit (PBC) that expresses intent to favour public benefit and openness, it makes things sound more sinister than they are.

Ultimately, from an openness and independence position, I think it would be better looking from the outside if the ATProto and trademarks were governed and managed by a separate not-for-profit entity that wasn't tied to the biggest instance/implementation of the protocol. I think that was the point being made, and I don't think it's absurd. But I think refuting that argument by focusing on network topology and instance definitions seems like a misunderstanding somewhere.

I don't think the Google comparison is doing you any favors in resolving the concern behind the category error, though. What I'm hearing is that AT is like the web if Google had started the web themselves and designed it around their index as the primary means of accessing anything on the web. Sure, they still have Don't Be Evil as their motto at this stage, and in the 90s maybe we would have been naive enough to believe them.

But in the 2020s, after watching what Google did to the web without being able to control the protocol from the beginning, a comparison of Bluesky to Google doesn't really assuage the concern people have about centralization.

>designed it around their index as the primary means of accessing anything on the web

That doesn't actually translate from the analogy though.

You don't use Bluesky to access other apps' data on atproto, you use those apps. You go to https://tangled.org/ for Tangled (atproto github), you go to https://leaflet.pub/ for Leaflet (one of atproto blogging platforms), and so on. Bluesky is not a "one stop shop" for all atproto stuff, it's just one of atproto apps, and anyone can make their own app.

The apps themselves have to compete on their own merit, completely unrelated to the protocol stuff. The protocol just makes them all interoperable and changes market dynamics (e.g. someone can resurrect a dead app by creating a new projection of existing data). If your criticism is that there aren't many apps on atproto yet — fair, but you can make those! People are making those. This is something you can actively contribute to, there's no permission you need to ask.

The "Bluesky index" is the index of Bluesky posts, so naturally you access that primarily through the Bluesky app. (Although even that isn't set in stone — see Blacksky who run their own stack for everything, but also show Bluesky posts.) And then, if you make your own app with your own data types, it would not be related to Bluesky in any way.

>But in the 2020s, after watching what Google did to the web without being able to control the protocol from the beginning, a comparison of Bluesky to Google doesn't really assuage the concern people have about centralization.

Sure, and is your argument that it's better if the web had never happened? Atproto is going to IETF so it will become a "proper" internet standard. The way you shift the balance of power is by building your own stuff on it.

It's great that you can make your own independent apps on atproto, and you're right that I overstated the "anything on the protocol" in the analogy. Analogies are always lossy, but that was worse than necessary.

But notice that what you're now arguing is not that Bluesky is equally decentralized to Mastodon as a social network, you are arguing that while Bluesky the app may be in practice highly centralized that doesn't mean other apps can't exist:

> The "Bluesky index" is the index of Bluesky posts, so naturally you access that primarily through the Bluesky app.

It probably is entirely true that different apps can spin up on atproto independently, but that was never the actual point of concern. This, what you say right here, is the actual concern. This specific app (or any atproto app) appears to have significant lock-in—to the point where you identify it as "natural" that it would be so—while selling itself on decentralization.

Blacksky is an interesting case, and I'm wondering why you didn't roll it out at the beginning and why you still hedge it as "natural" that you'd access the Bluesky app data through Bluesky? I'm actually unfamiliar with the territory here, but coming from my knowledge of the fediverse that seems an odd pairing. If a fully independent implementation exists, why is it natural that you'd use the central one?

> and designed it around their index as the primary means of accessing anything on the web

Except that you don't have to use an ATproto relay (the “index” equivalent here) to access anything on ATproto; there's nothing stopping you from grabbing records directly from anyone's PDS. You'd just need some way to know which PDS to consult; that's normally the relay's job, but it doesn't have to be (nor does the relay necessarily need to snarf every record from every PDS if you know you only care about a subset of that info).

There is an IETF Working Group these days https://atproto.com/blog/kicking-off-the-atp-working-group

Those can't register trademarks, of course.

> that also runs the only viable instance?

This is false, both in the framing ("instances") and in the viability of running alternative infrastructure.

But it’s true in the general idea of Bluesky being highly centralized and dependent on a single for-profit entity.
Why can't the IETF register trademarks?
Does the IETF register trademarks on behalf of their working groups? It’s possible that I’m just misinformed about that.

I left this comment shortly before bed and my thought process was “a working group isn’t a legal entity and therefore can’t do this” but it’s entirely possible that that was shortsighted of me.

(Obviously the IETF itself can.)

How do you mean? As in you can run different instances or as in it's a false open protocol?
It's a different network topology. ActivityPub couples three things into one box: community, hosting, and an app.

Atproto decouples them: there's app-agnostic hosting (which anyone can run), and there's hosting-agnostic apps (which anyone can run).

I wrote about it here: https://overreacted.io/there-are-no-instances-in-atproto/#so...

Read the recently frontpaged "There are no instances in ATProto" by dan abramov <https://news.ycombinator.com/item?id=48599515>
ATProto is closer to how RSS works than ActivityPub. In the same way talking about "RSS instances" makes little sense, the same goes for "ATProto instances".
It makes sense to talk about “RSS aggregators”. Especially it makes sense to talk about “RSS aggregators that speak a specific vocabulary on top of RSS, host 99% of content using that vocabulary, and if you host your own RSS feed with said vocabulary they’ll show it in their aggregator but can ban it any minute”.

Did I just describe Apple Podcasts? Huh. Regardless, yeah, there’s no “ATProto instances” technically, but there are ATProto apps and the single biggest one now owns the trademark to the protocol name.

i guess that's fair, but i've never listened to a podcast from a non-foss app; i'm not really "in" the podcast sphere, but from where i'm sitting it seems podcasting would survive and migrate just fine if apple podcasts had to go away suddenly
I guess that’s fair, too. I’m not really into podcasts either, and the ecosystem seems healthy enough. Many FOSS podcast clients use Apple for discovery, which I guess make sense; but there’s probably other databases, and the contents themselves aren’t usually hosted by Apple, just the metadata.

So yeah, podcasts are in good shape. In fact, they are probably the most used decentralized media right now (apart from torrents, maybe). I hope Bluesky gets to that point, and I do wish them luck, but we’ve got to see the incentives are not that well aligned. As for the trademark... it’s surely weird, it’s not the end of the world if they continue to hold it, but setting up a non-profit (not in US, perhaps) for the protocol itself would probably be more appropriate down the road.

The solution to that is to create more apps, and for one of them to become more popular. This is entirely in our hands as developers.
The thing with ATProto is, there is little incentive in creating apps that speak the app.bsky vocabulary. If I understand correctly, there is one other full-fledged app that does that, Blacksky [0]. By full-fledged, I mean they host a PDS, a relay, an app view, a moderation service, and a bunch of feeds and other doodads. If Bluesky goes down, Blacksky will probably be fine. They are, however, yet another US company [1], which is not ideal.

[0]: https://docs.blacksky.community/

[1]: https://blackskyweb.xyz/about/support/tos/#:~:text=Blacksky%...

Even if that was the case, Google Reader's death almost took RSS with it so the concern remains valid.
> So AT is governed by a single for-profit entity

A Public Benefit Corporation to be precise. So they are legally obligated to favor public benefit.

OpenAI proved even being a nonprofit can be handled away if the money's good enough. PBCs are much weaker in that regard than nonprofits.
No, public benefits are allowed to include public interest reasons in their decision making, they are not required.

This structure was created to allow a business to protect the interest of the public when it conflicts with the interests of their shareholders

"Only viable instance" is not really the correct framing - Bluesky doesn't have instances. Anyone using ATProto without Bluesky will still be "on Bluesky".

When you go to bsky.app, you're interacting with the Bluesky AppView; one key feature of ATProto is that any AppView can interact with any (consenting) Personal Data Server (PDS). So you can self-host your PDS but still use bsky.app if you so choose. But critically, anyone can write an AppView; there are reimplementations of Bluesky as well as other social apps that use the same ATProto infrastructure. That would be closest thing to a Mastodon instance, except you don't have to host your data on it in order to use it. Imagine being able to go to a Lemmy instance and just post things with your Mastodon identity, and have everything show up without Mastodon having to know anything about Lemmy magazines or its special upvote / comment formats.

The actual centralization in ATProto lies in a combination of unfortunate design decisions and genuine friction in the self-hosted path. Being totally reliant on Bluesky is the happy path, self-hosting your PDS data is difficult but doable, and being totally independent of Bluesky is only possible if you do everything correctly right at the start.

First off, Bluesky doesn't offer any GUI tools for PDS migration. If you want to get off their PDS, you'll need to bust out command-line tools and possibly do some steps in advance of when you need to migrate in order for everything to work properly.

Second, even if you're on a PDS, you're still reliant on the Public Ledger of Credentials (PLC) to host your Distributed ID (DID) document. The PLC is run by Bluesky, although they've taken steps to make it easy to notice if they were to do something fucky with the PLC. But let's say we don't like that. There is a solution: you can host your DID document on a normal web server. Problem solved?

Well, if you were setting up an account for the first time, then yes, the problem is actually solved, you're 100% independent of Bluesky. But if you made the mistake of registering an account normally, you have a did:plc identity. And one core principle of ATProto is that identity names never ever ever change. So if you go and make a did:web identity, it's like having a second account, there is no way to tie your old did:plc identity into it. In fact, I'm pretty sure you can't even redirect one did:web identity to another (say if you need to switch domain names)

Regarding Bluesky's "independent protocol governance organization", they made the same promise about the PLC; but it hasn't actually been transferred yet. I would be a lot more bullish on ATProto if there was a way to migrate DIDs and retain all your followers and shit. And if there was proper graphical tools for data migration.

The PLC governance not having been moved yet is my one main gripe against ATProto/Atmosphere now. There is so much being built on top of this protocol, and I truly believe it has the chance to make the social web more decentralized while keeping everything connected. The PLC being controlled by one major commercial entity allows them to pull the plug so to speak. Say someone is sanctioned by the US, what stops Bluesky from pulling the plug on their DID thereby blocking and censoring this person from the network all together.

Half the point of ATProto is that identities are used across a host of apps, and therein lies a big vulnerability. If identities are not truly independent of centralized infrastructure, then you are vulnerable to losing access to a number of apps at once similar to Google services black hole if your Google account is banned (not to mentioned anywhere you've logged in with SSO).

It would be much better if the PLC was somehow decentralized itself. Barring that it should at least be finally spun out as the independent Swiss organization they've talked about for some time now. The organization could form a board with interested parties to set the future of PLC development if needed.

As for PDS migration, there are good options if you are migrating away from Bluesky. There are lots of GUI tools that work well now like https://pdsmoover.com/moover, Eurosky has https://move.eurosky.tech/, etc. It would be cool though if Bluesky actually linked to the other big PDS-providers on the Bluesky sign-up page to actually promote decentralization. But I guess it is hard to vouch for other services.

I still think the future of ATProto is bright, but there are definitely some obstacles before I'm comfortable with the whole setup. The network needs more decentralization in the PDS-layer, and the PLC needs to spin out in the separate governance organization pronto.

Technically it has moved (last year actually) but it just doesn't really look all that different in the day to day.

https://atproto.com/blog/plc-directory-org

Did they actually create the org yet? I saw the news you are linking that they were going to start the process. But I've seen no follow up news about the organization actually being here and the ownership of the PLC directory having been transferred.
> Say someone is sanctioned by the US, what stops Bluesky from pulling the plug on their DID thereby blocking and censoring this person from the network all together.

How does IANA handle this with domain names? genuine question, i'm not sure. is it enough to have distinct registrars and distinct jurisdictions for some TLDs and so on?

They don't. All domains have US jurisdiction except the ones that are underneath country TLDs.

IANA could stop publishing country TLDs in their root zone file but it would probably split the internet in two, and everyone involved knows that. Several root server operators would refuse the update, and many recursive resolver operators would put them back in.

>First off, Bluesky doesn't offer any GUI tools for PDS migration. If you want to get off their PDS, you'll need to bust out command-line tools and possibly do some steps in advance of when you need to migrate in order for everything to work properly.

This is getting much better recently. I migrated to https://eurosky.tech/accounts/ with no command line — just needed to wait for a wizard in my browser to move my records. It could've been much faster and seamless (the app was confused after this and I had to re-login), but it's definitely accessible to non-technical people, and the share of independent hosting is growing.

Bluesky has a data store, handles account authorization, and runs a web app that provides a UI to access the backend services. That's an instance, whether they call it one or not. Refusal to admit this is obfuscation for reasons I cannot understand.
The reason is that "why aren't many people running Bluesky instances" is a loaded question — it presupposes that's something you should expect. But it's like asking "why aren't many people running Google". It's expensive to store billions of posts!

This is usually compared to Mastodon, but it's not apples to apples since "running a Mastodon instance" always mean a tiny partial view of the network. You can do a partial view of atproto too for the same cost, it's just not very interesting because what's the point? Every app can "see" the entire network (unlike in ActivityPub) so there's a lot less motivation to create these fragmented views into it.

I've already linked elsewhere, but I've written an article on precisely this topic, curious to see if this can clarify it for you: https://overreacted.io/there-are-no-instances-in-atproto/#so...

> I would be a lot more bullish on ATProto if there was a way to migrate DIDs and retain all your followers and shit. And if there was proper graphical tools for data migration.

This is exactly where I’ve landed re: ATProto. If you actually want to self-host everything you lose one of the biggest draws of it, the migratable IDs.

I was looking into it to build an alternative to Threads/IG/TikTok for one of my hobby communities that’s become almost entirely reliant on Meta/Tencent. Being able to plug into the wider AT Proto world was a big draw, but not being able to self host a true alternative to did:plc has put a halt to that for now while I figure out what I want to do.

I didn’t fully understand the part of the stack you’re talking about, but it always seemed like one of ATProto’s design goals was to really keep everything on the same distributed system (so to speak) while allowing people to host the bits individually that all contribute to the same connected system. Eg not having fully separate networks that don’t talk to each other
If you want a nice overview of the DID stuff, Steve Klabnik just recently made a post going into detail about did:plc and did:web

https://steveklabnik.com/writing/too-many-words-about-dids/

I don't know what you mean by this. You absolutely can self-host all your data on your own. And if you also don't want to rely on PLC for identity, you make a `did:web` identity, and then you're completely decoupled from Bluesky-operated infra.
Dan my concern is explicitly that did:web is not the same experience for users as a did:plc.

If I host AT Proto infra for my community and want to give people <usename>.<domain> accounts, I can either host a did:web for them which ties their account permanently to that domain, or they have to register with the centralized PLC to actually have all the benefits of a migratable DID. did:web does not provide the same UX as did:plc

From the post I was responding to:

> Second, even if you're on a PDS, you're still reliant on the Public Ledger of Credentials (PLC) to host your Distributed ID (DID) document. The PLC is run by Bluesky, although they've taken steps to make it easy to notice if they were to do something fucky with the PLC. But let's say we don't like that. There is a solution: you can host your DID document on a normal web server. Problem solved?

>

> Well, if you were setting up an account for the first time, then yes, the problem is actually solved, you're 100% independent of Bluesky. But if you made the mistake of registering an account normally, you have a did:plc identity. And one core principle of ATProto is that identity names never ever ever change. So if you go and make a did:web identity, it's like having a second account, there is no way to tie your old did:plc identity into it. In fact, I'm pretty sure you can't even redirect one did:web identity to another (say if you need to switch domain names)

I did read your post :) Yes, you can't migrate between PLC and WEB methods. It's not possible. I get that it's frustrating if you learn about it after making an account. Is that the whole concern?

I was replying to this:

>not being able to self host a true alternative to did:plc has put a halt to that for now while I figure out what I want to do.

I'm saying I don't know what this means. You can fully self-host with `did:web`. Yes, it's unfortunate that you've already made an account by the time you've realized that. I think that's still different from "not being able to self host".

Unless I'm just parsing what you wrote incorrectly, which is quite possible!

My understanding is that if I want to host AT Proto infra for my community and want to give people <usename>.<domain> account, I can either host a did:web for them which ties their account permanently to that domain, or they have to register with the centralized PLC to actually have all the benefits of a migratable DID, while tying themselves to a central authority. Ergo, did:web does not provide the same UX as did:plc and there’s currently no way (that I know of) to provide such UX to users without requiring them to register did:plc accounts
Thanks for your clear and concise explanation!
The nightmare of the Wsocial rollout is a testament of the massive control Bluesky has on the ATProto network.

If Wsocial was on ActivityPub or Nostr nothing similar would have happened.

ATProto has serious centralisation problems, baked into the design. And it makes sense, considering it came out of a Twitter R&D experiment to "decentralise" Twitter itself. Pure federation was never part of the initial design.

ActivityPub and Nostr solve the issue already.

I think decentralization is just not something users care about generally.

- many people wish they could control what they see and who they talk to. (Eg control the algorithm, avoid censorship from big tech)

- some people care about owning their data so it doesn’t go away when a company fails

- technical people are interested in building more types of social apps that aren’t just twitter posts etc

- nearly everyone just wants a fairly seamless experience without a lot of gotchas or technical problems to solve like self hosting an instance for your friends that falls over if too many people use it and is tricky to network with others.

Bluesky is trying to solve all those kinds of problems, which I think is pretty interesting, and I don’t think the others are quite doing the same thing technically. At the end of the day they are all pretty niche.

But Bluesky does not solve these points:

- content not in line with the political left is censored

- sure, you have your data in your PDS, but it is de-facto useless if the central identity server of Bluesky goes down

- ActivityPub and Nostr solve this already without being owned by a company

- you cannot easily and cheaply have an ATProto instance. AP and Nostr solve this already

> - content not in line with the political left is censored

What do you mean? Individual apps can choose to censor I guess, but you can fairly trivially run an AppView with no filtering whatsoever if that's what you fancy.

> - sure, you have your data in your PDS, but it is de-facto useless if the central identity server of Bluesky goes down

That's not correct. You can use plc, which Bluesky operates the largest directory for, but you can also use web, which completely bypasses Bluesky all together.

> - ActivityPub and Nostr solve this already without being owned by a company

What's 'this' here?

> - you cannot easily and cheaply have an ATProto instance. AP and Nostr solve this already

The terminology here of 'ATProto instance' doesn't really make sense. If you're talking about a PDS, you can use one of thousands of free PDS hosts, or host your own for free on Cloudflare (https://cirrus.earth/) or on your own hardware (there are PDS implementations which fit comfortably onto a Raspberry Pi, or an old phone, etc.)

Sure you can host your PDS, but if you want to deploy your own instance like you would do with Mastodon, you need to deploy a Relay and an AppView as well. And the way the network works, you need beefy servers for that.

On ActivityPub and Nostr you develop all kind of applications already, it is not only Twitter clones, but also Instagram clones, Reddit clones, on Nostr there is even the resurrected Vine (https://about.divine.video/).

And it is not trivial to switch from the Bluesky did:plc (which you cannot run in write-mode on your own and need to use the official Bluesky owned) to did:web, which you can run on your own.

> - content not in line with the political left is censored

Can you provide examples to me of this being true?

Wait, how do you think these two things relate, exactly, and how does it point in the direction of “Bluesky has so much control”?

Thats a claim with zero evidence put forward, and one that if evidence were put forward, would swing the opposite way.

What went wrong with Wsocial?

I don't mind the quasi-central nature of bsky, it's more of a problem that it's so heavily dominated by US politics.

> it's more of a problem that it's so heavily dominated by US politics.

I agree the default Discovery feed is not great, but you can just switch to a different feed like For You or the recent Eurosky version of it, called 'fu'. It vastly improves the experience.

Or join a European Mastodon server and solve the problem at the root.
and only have one feed? forgive me if I understand incorrectly but I'll take an open market of thousands of feeds and easy tooling to make my own that can pull from the whole network over just one local feed controlled by a server admin
https://blog.elenarossini.com/w-social-a-broken-ghost-town/

Basically, because they didn't warn Bluesky that they were going live, they had their traffic heavily trottled and they were unable to function.

So long for decentralisation if you need to talk to the owner of the protocol you are trying to use...

It's not that they didn't warn bluesky specifically. It's that they didn't warn relay operators in general. And IIRC they just needed to coordinate with a single relay operator who is reasonably trusted (ex blacksky or eurosky) but they didn't do that either.

The default rate limits are quite reasonable but big launches will blow past them so you gotta coordinate with someone.

And note that the relay federation/gossip agreements are largely manual configuration at the moment. Until someone pushes a proposal for an automated/dynamic topology management algorithm that doesn't get plagued with spam issues it'll stay this way.

No such problem on Mastodon/ActivityPub.
Wsocial turned out to be a WEF honeypot or something.
That is not the point.

The point is that without talking with Bluesky, you cannot start your own ATProto product or you'll get throttled from the network.

Tons of people have started products without issue. But if you flood a popular relay with data that exceeds its rate limit then getting throttled is to be expected. This doesn’t prevent your participation in the protocol or network.

There are other relays and indexes out there that may have different rate limits. That’s just how these things work. The data from W is still there on their PDS, still public, still crawlable, and able to be backfilled within rate limits.

This is a non-issue.

Almost like the network is centralised.
Yes. It has never been decentralised.
Nothing Bluesky does is really independent. This is such a transparent playbook and yet folks keep falling for a couple of open source repos and whatever hot takes Dan Abramov posts to reframe “instances” to “open social” bs.
If you have concrete counterarguments to what I said in my articles, I would be happy to debate these counterarguments here.