Most active commenters
  • jchw(7)
  • danabramov(7)
  • skybrian(3)

←back to thread

Are we decentralized yet?

(arewedecentralizedyet.online)
487 points Bogdanp | 21 comments | | HN request time: 0.001s | source | bottom
Show context
jchw ◴[] No.45077739[source]
I think this compares AT proto PDSes to Fediverse instances. In many ways this actually underplays just how grossly centralized AT proto currently is, since some of the components are 100% centralized still. (Whereas Fediverse instances, all downsides considered, are at least self-contained fully-independent instances.)
replies(1): >>45077763 #
edavis ◴[] No.45077763[source]
Which components are you referring to?
replies(1): >>45077826 #
1. jchw ◴[] No.45077826[source]
In case of Bluesky, there will also only ever be a single instance of the App View. As far as I am aware though in practice there's really only the official relay or indexing services either.
replies(1): >>45077855 #
2. skybrian ◴[] No.45077855[source]
Why can't someone run another App View?
replies(2): >>45077960 #>>45078116 #
3. jchw ◴[] No.45077960[source]
You can, it just won't be the Bluesky App View, so it's not really Bluesky. It's not like the fediverse where the instances own the URLs of the posts: they go through app views and there's a canonical URL to a Bluesky post and that's through the official app view.
replies(1): >>45078096 #
4. danabramov ◴[] No.45078096{3}[source]
This seems misleading.

Different AppViews would obviously be branded differently, but the whole point of ATProto is that there is a shared "picture" of the world. People are running alternative AppViews that consume Bluesky posts (and serve Bluesky threads).

Here's the same thread on three different AppViews:

- https://zeppelin.social/profile/did:plc:iyz5zf463ic52vqbonyu...

- https://blacksky.community/profile/did:plc:iyz5zf463ic52vqbo...

- https://bsky.app/profile/did:plc:iyz5zf463ic52vqbonyu2ebu/po...

These are three independent webapps indexing the same information and serving it independently. They're not different frontends for one API; these are all independent backends.

replies(4): >>45078361 #>>45078607 #>>45078905 #>>45080537 #
5. throawayonthe ◴[] No.45078116[source]
there is https://deer.social
replies(1): >>45078242 #
6. danabramov ◴[] No.45078242{3}[source]
This one isn't an AppView (it's a frontend for Bluesky's). However, https://blacksky.community/ and https://zeppelin.social/ are full AppViews.
replies(1): >>45082019 #
7. fluoridation ◴[] No.45078361{4}[source]
So, it's the same underlying data structures (e.g. posts, threads, etc.), and the way they're exposed depends on the implementation? So there's one BlueSky, but BlueSky is just one interface (UI + API). Am I getting this right?

I just want to know if I can run my own node in my own hardware.

replies(1): >>45078848 #
8. jchw ◴[] No.45078607{4}[source]
OK, to be honest, I'm surprised anyone runs a third-party Bluesky AppView even just as a curiosity. I genuinely can't understand why anyone would run one of these except as a raw curiosity.

If 99% of the people are using the default AppView, the default relay, the default indexers, the default PDSes, etc, etc... that just means that everything that almost the entire userbase sees is completely controlled by one entity. It's technically possible for people to use alternative services, but the community would have to wrestle the majority control of the network away from Bluesky Social PBC for it to really matter. Running an alternate PDS or even AppView seems like mostly a symbolic gesture since whether anyone can actually see your posts is still up to the whims of one entity, just like Twitter, and that's partly because there's no way to really "own" the URLs of your posts or profile. The canonical URLs are one domain owned by one company. The others are just alternatives.

But:

> the whole point of ATProto is that there is a shared "picture" of the world

I think everyone does understand that ATProto "solves" some of the problems with decentralization that you can observe from the Fediverse, but when you look at the practical reality of ATProto, it's hard to figure out exactly what aspect of decentralization users are supposed to be able to still benefit from. The whole thing could be re-centralized and literally 99% of all users wouldn't notice anything different. If you get censored by the entity running the primary AppView, or even deeper, you could theoretically run all of your own components... but then you'd just be talking to pretty much yourself. Even if you did succeed and somehow wrestled away a substantial portion of users, (which would be extremely expensive and impractical), now you just have the same split world that exists in the Fediverse, but with AppViews/moderation services. It kinda seems like the "shared picture of the world" concept is actually somewhat incompatible with having an actual decentralized network where users meaningfully have control.

P.S.: I know that mentioning censorship is automatically polarizing, but with Bluesky I really feel like I have good reason. I tried Bluesky briefly a long while back just out of raw curiosity, and I actually managed to get my account taken down with zero posts. I literally was just following some artists, mostly Japanese, and I assume one of them got banned for something NSFW. I'm not even sure I liked any posts that were NSFW. Needless to say once I got unbanned I just deleted my account and gave up on it. I wasn't really planning on using it for anything, so it's not like I am horribly offended by this, but it definitely gave me an idea of how Bluesky Social PBC moderates. No thanks.

replies(2): >>45080532 #>>45082507 #
9. danabramov ◴[] No.45078848{5}[source]
You can think of ATProto like this.

Each user has a "website" with JSON of their own content (e.g. all my posts, all my likes, all my follows, actually live in a sqlite database hosted somewhere). It's not really a website but more like a git repo — one per user.

And then, there's a protocol for how to aggregate information from all such "websites" in the network into a stream of changes. Apps subscribe to that stream of changes and update their local databases (which act as app-specific caches) in response to those events.

When I make a Bluesky post, I'm really writing JSON into my sqlite file. This change gets broadcasted to all interested apps which update their own databases (which may or may not care about specific content type like "Bluesky post"). Obviously forks of Bluesky backend do index Bluesky posts (and then return them in the same UI), but you could imagine other backends that only care about other content types, or that record Bluesky posts but in a different database structure, and ofc can present a different UI for it.

Yes, you can run your own node — multiple types of nodes. You run your own PDS (https://github.com/bluesky-social/pds) to store own data (that's the "website" in my analogy), or you could run a Relay (https://whtwnd.com/bnewbold.net/3lo7a2a4qxg2l) that collects all PDS changes into a stream, or you could run an AppView (any backend that listens to Relay or PDS, basically your own app).

10. indexxing ◴[] No.45078905{4}[source]
one important correction is that blacksky is not hosting their own appview, they host their own PDS for users to join and a soft-fork of the official client
replies(1): >>45079133 #
11. danabramov ◴[] No.45079133{5}[source]
Ah, apologies, thanks! Lemme edit.
replies(1): >>45079139 #
12. danabramov ◴[] No.45079139{6}[source]
Actually it doesn't look like I'm able to edit anymore, so I'll upvote your comment.
13. skybrian ◴[] No.45080532{5}[source]
Having multiple implementations available is an important step towards decentralization, even if most people don’t use them yet. It shows that it’s technically feasible and will help shake out any bugs.

Getting people to actually switch will be harder, and presumably it would involve both promoting the alternatives and adding features that some users will find attractive.

replies(1): >>45085380 #
14. skybrian ◴[] No.45080537{4}[source]
What is zeppelin.social? Who runs it? They don’t seem to have an about page.
replies(1): >>45081885 #
15. danabramov ◴[] No.45081885{5}[source]
https://whtwnd.com/futur.blue/3ls7sbvpsqc2w

Edit: I think the author’s server may be busted or something. The link should be correct though. I’ll ping them. The announcement is at https://bsky.app/profile/futur.blue/post/3lsc2tzfsys2f

16. danabramov ◴[] No.45082019{4}[source]
Correction: Only https://zeppelin.social is. Blacksky runs a PDS and a Relay but not an AppView. My apologies.
17. neko-moe ◴[] No.45082507{5}[source]
> [...] It's technically possible for people to use alternative services, but the community would have to wrestle the majority control of the network away from Bluesky Social PBC for it to really matter. [...]

> [...] now you just have the same split world that exists in the Fediverse, but with AppViews/moderation services. It kinda seems like the "shared picture of the world" concept is actually somewhat incompatible with having an actual decentralized network where users meaningfully have control.

I think an illustrative example of how a "community split" can happen is Blacksky[1]. It used to only be a custom feed but now have their own client app, their own moderation services, their own relay for their internal services, their own PDS for hosting their accounts, and to the best of my knowledge they want to set up their own Bluesky AppView at some point. With their own AppView, whenever a user is logged in to their client app they'd be using Blacksky's AppView, and anytime they're logged in to bsky.app they're using Bluesky's AppView. A user doesn't need to configure anything, they just download an app and log in with their existing account, and they can be logged into both apps at the same time. Compared to moving your account, to a new home server for Mastodon or even to a new PDS with atproto, it is very simple for your average user to use another AppView.

The "control" users have here isn't that they can control everything that happens within one app, it's that they're not limited to one app or one backend, and that communities of users can meaningfully run their own services if they're not being properly served by the existing alternatives, all while they still seamlessly get a fully global view of every Bluesky user and post.

And hell, atproto is very modular. People have made clients[2] that connect directly to users' PDSs and some "backlink" service like Constellation[3] (to get all likes, replies, etc.), which is much cheaper to run, skipping a Bluesky-compatible AppView entirely. There's also AppViewLite[4] which is a partial Bluesky AppView that's tailor-made for self-hosting.

Having all users, all posts, all data just be available globally to everyone means that you can create very novel and experimental decentralized services and apps. That is personally what excites me the most about atproto and how I see "user choice" be best served. How about a censorship-resistant client app more reminiscent of nostr that connects to multiple Bluesky Appviews and combines the resulting data? Or how about some ActivityPub-like AppView where small communities run their own homes and ping each other whenever there is new activity, eschewing a relay altogether. Everything is possible with atproto, and all of these services would create data existing globally for every other service and user, that can be interoperably viewed and created by any other atproto app that wants to do so.

> I literally was just following some artists, mostly Japanese, and I assume one of them got banned for something NSFW.

I'm personally one of the largest critics of how Bluesky Social PBC treat Japanese anime-style illustrators, so I share your frustration here. Though it's worth noting that large Mastodon instances do the same kind of moderation. Trying to follow illustrators on misskey.io from mastodon.social is very much a toin coss if they're censored or not.

One of my hopes is that we will eventually get the Bluesky AppView equivalent to Pawoo/Misskey. Ideally that one would create records compatible both with Bluesky and some new Pixiv-style atproto app. Then users could set up *booru sites too which work on the same underlying data as what the artists upload, i.e. the artist would keep control over the data. That kind of interoperability makes for a much more interesting web!

[1] https://blackskyweb.xyz/ [2] https://reddwarf.whey.party/ [3] https://www.microcosm.blue/ [4] https://github.com/alnkesq/AppViewLite

replies(1): >>45085008 #
18. jchw ◴[] No.45085008{6}[source]
> I'm personally one of the largest critics of how Bluesky Social PBC treat Japanese anime-style illustrators, so I share your frustration here. Though it's worth noting that large Mastodon instances do the same kind of moderation. Trying to follow illustrators on misskey.io from mastodon.social is very much a toin coss if they're censored or not.

I can't stress this enough: I don't find it acceptable to ban people if they like posts or follow someone who gets banned. That sort of guilt-by-association is insane. It's one thing to be more censorial than Twitter, which is a choice you can make if you want to, but Bluesky went many steps way too far in how they enforce the rules. I still can't even fathom what actually got me banned, and the cowards there would never admit it (because they know it was wrong.) The only way I'd ever consider going back is if they announced that they fired everyone who thought that was a good idea.

If they're willing to do insane shit like that, I would absolutely not trust any of the other aspects of the components ran by Bluesky Social PBC, so it's far more than an AppView that is needed for sure.

Then there's the fact that Bluesky Social PBC constantly advertised itself as a decentralized alternative to Twitter back before it had launched, well, any decentralized components. Before you could run your own PDS, and certainly before they stopped requiring whitelisting. People make a lot of hooplah about how users shouldn't care about decentralization. Well, a lot of people leaving Twitter at the time did care about decentralization, because they were tired of what was happening to their Internet and wanted a durable alternative. To this day, Bluesky doesn't really actually practically have any of the properties of decentralization that anyone would care about. They know it damn well.

I hate that everybody is just going to let this happen, and I hate that Bluesky proponents jump in and try their hardest to make it seem like there's hope for things to not be controlled by one entity. There isn't. It's a complete load of shit.

replies(1): >>45095074 #
19. jchw ◴[] No.45085380{6}[source]
The issue is that Bluesky did their big public launch long before anyone could even run their own PDSes. Instead, they spent a bunch of time working on shit like integrating Namecheap for DIDs. And if you use Bluesky to go and create a DID and set up a domain for it... it will be a centralized DID managed by plc.directory, which is also ran by Bluesky Social PBC, and you can't run your own equivalent of plc.directory, and the alternative DID method that is still supported is used by basically nobody.

Technically people can run their own components for most things, but everyone just knows bsky.app. What's the point? You're never beating them in Google Search. You're never gaining critical mass. People are just going to be really confused at why there are multiple domains that have the same content, and I imagine search indexes will be confused by that, too, probably massively deranking any of the alternatives.

This all makes running your own Bluesky components pretty self-defeating. You can go through all of the effort to have parallel infrastructure for Bluesky, only for an AppView that is doomed to be irrelevant. 99.99% of everyone you interact with is on Bluesky Social PBC's centralized infrastructure anyways and there's basically no chance of that changing. And unlike Bluesky, you don't have shit loads of investor money to spend, certainly not the $15 million that Blockchain Capital invested in Bluesky Social PBC last year.

I think Bluesky Social PBC was well aware of all of this and chose to launch this way anyways, because they absolutely did not have decentralization as a priority. And yes, I know that users on Hacker News are screaming at the top of their lungs, "Users shouldn't care! Users shouldn't care!" But guess what, Users actually cared. People were pissed off about Twitter and wanted a durable alternative that wasn't plagued by the fact that someone could just buy it and take control over the whole platform. Bluesky Social PBC sold Bluesky as a better decentralized alternative to Twitter.

For all of this performative effort though, it's all worthless. Someone could buy Bluesky and immediately close all of the doors; stop allowing new external PDSes and start closing off access to relays/etc. from anyone else. There's not really any reason to actually do that right now, since decentralization is not even a threat to Bluesky Social PBC's control over the network, and unless someone shows up with millions of dollars to blow on a network they don't even have the benefit of being the public face of, they really never have to worry about it anyways.

I criticized a lot of aspects of the Fediverse for a long time, but at least the Fediverse actually delivered on one thing: it actually really is practically decentralized, with all of the ups and downs that that comes with. Users are distributed across instances, so there is no central gatekeeper that would stop me from talking with them. You can almost always avoid any instance-related drama by just running your own instance and interacting from there, if you want. Bluesky will never have that. For Bluesky, users that Bluesky Social PBC doesn't like will be invisible to the vast majority of the rest of the network.

And I'm sorry, but that's not what a decentralized network looks like.

20. neko-moe ◴[] No.45095074{7}[source]
> I can't stress this enough: I don't find it acceptable to ban people if they like posts or follow someone who gets banned.

To the best of my knowledge, that kind of banning has only happened once[1] (I was one of the handful caught up in it lol). They reversed that ban when I complained. Unless you were banned at that exact time, what likely happened to you is that some kind of anti-spam filter thought you were a suspicious new account, agnostic of the content of the posts/accounts.

> I hate that everybody is just going to let this happen, and I hate that Bluesky proponents jump in and try their hardest to make it seem like there's hope for things to not be controlled by one entity. There isn't. It's a complete load of shit.

There already are other apps working independently from all of Bluesky's infrastructure (save for plc.directory). I think the big thing holding the protocol back is that they have not implemented private data yet (and it's probably a couple years off). Lots of apps need that, so many apps would not want to use the protocol yet.

I'm hopeful about the future of the protocol, because it does provide the aspect of decentralization I value most: your account is a signed repo and a private key (or several), and the network is necessarily fully open for any app to make use of however they want. Even client-side single-page web apps are feasible with generic backlink services (Constellation), which I find super cool. All that is needed now is time and app development.

[1] https://bsky.app/profile/safety.bsky.app/post/3lbsqm7kfns23

replies(1): >>45096589 #
21. jchw ◴[] No.45096589{8}[source]
> To the best of my knowledge, that kind of banning has only happened once[1] (I was one of the handful caught up in it lol). They reversed that ban when I complained. Unless you were banned at that exact time, what likely happened to you is that some kind of anti-spam filter thought you were a suspicious new account, agnostic of the content of the posts/accounts.

It was definitely around the time of that post. Here's the message I got around 10 months ago:

> Recently, we removed a Bluesky account you control for violations of our guidelines. After a thorough review, we have determined that the takedown action applied to your account was incorrect.

What struck me about this series of posts is how they still never acknowledged exactly what they did (which is, took down accounts using guilt-by-association) nor did they claim they wouldn't do it again, only that they made mistakes while doing it, and they didn't even bother to properly apologize for banning people incorrectly at any point. It reads as if they felt it was all fine and justified and that they will do it again, just, correctly this time, as if there is a right way to do that.

Even if they did stop this practice (again I truly doubt it), there are things you can do that, while they may feel reasonable and justifiable given the circumstances, are a permanent way to lose people's trust. For me this is one of them. I don't think anyone should feel safe hitting like on a post on Bluesky, unless you're absolutely sure it could never be found in violation of any rules. That's insane. Why would I want to be on any network controlled by Bluesky Social PDS when that's how they run it?

> There already are other apps working independently from all of Bluesky's infrastructure (save for plc.directory). I think the big thing holding the protocol back is that they have not implemented private data yet (and it's probably a couple years off). Lots of apps need that, so many apps would not want to use the protocol yet.

> I'm hopeful about the future of the protocol, because it does provide the aspect of decentralization I value most: your account is a signed repo and a private key (or several), and the network is necessarily fully open for any app to make use of however they want. Even client-side single-page web apps are feasible with generic backlink services (Constellation), which I find super cool. All that is needed now is time and app development.

I'm beyond bummed out because I was actually pretty excited for Bluesky early on, but I think they had a window that opened and closed for properly decentralizing. Bluesky today is a heavily curated and heavily moderated network that resembles absolutely nothing of what you would expect from a supposedly "decentralized" network, which is a load of shit for something whose entire draw was that in the first place. What they've created today is so centralized that they can feasibly close it off tomorrow without any impact on 99.9% of users. It's one thing to extol the virtues of its architecture, but that architecture hasn't really been proven to work well in a truly decentralized environment, which is not good when it has already been scaled to these heights. I don't just mean in terms of continuing to function and scale well, I mean in terms of how the network handles abuse and bad actors, and how Bluesky Social PBC will handle parts of the network that don't agree with their moderation policies. (i.e. Was it really wrong to spend so much time highlighting the issues with inconsistency in the Fediverse if ATProto winds up with the exact same issues where the world appears very different depending on what AppView you're on?)

While I admire Dan Abramov's work on React, his attempts to show that Bluesky decentralization is actually happening were to list two alternative AppViews, except apparently, one of them was actually not a full AppView instance. So actually, there is basically one known alternative AppView to Bluesky's AppView. Bluesky has something north of 38 million users, and approaching-100% of them are going to be using Bluesky's AppView. Given the utter lack of incentives to really run an alternative AppView, and the fact that nobody except complete and utter nerds will ever even find them, is there really any good reason to suspect that there will be any alternative AppViews in the long run, or if they exist, that any more than a tiny unimportant fraction of users will ever use them?

The Fediverse has had instances that have done dumb things, but the thing is, you can currently today actually choose any instance you want. A future where you can use Bluesky without the direct influence or control from Bluesky Social PDS in either your personal affairs or even just almost every single interaction you'll ever have is very distant. If we were to extrapolate, it doesn't seem likely the situation will have meaningfully changed in several years. I'd be willing to place bets that in 10 years at least 99% of users will still be on Bluesky Social PBC's main AppView. (To be honest, I wonder if anyone would actually be willing to place money on this bet. I kinda suspect even Bluesky proponents would admit that this is pretty likely.)