How Decentralized Is Bluesky Really? https://dustycloud.org/blog/how-decentralized-is-bluesky/
A technical deep-dive, since people have been asking me for my thoughts. I'll expand a bit on some of the key points here in a thread. 🧵
A technical deep-dive, since people have been asking me for my thoughts. I'll expand a bit on some of the key points here in a thread. 🧵
2 użytkowników udostępniło to dalej
ティージェーグレェ
•wtfh?!
Are they hiding a blockchain or some other idiotic data "structure" in there!? I know warezlords who had hidden directories for IRC DCC bots on compromised servers which weren't such disk hogs.
gnu/m43
•ティージェーグレェ
•Distributed/federated/decentralized systems aren't new. They were pretty well established by the end of the 20th century. p2p implementations to improve upon some of the known weaknesses/disadvantages of such things were starting to making inroads by the late 20th century too.
Bluesky, apparently hasn't caught up to them? That isn't surprising to me even slightly.
What is surprising to me, is how easily people are still misled when there is a web of information to help them know better.
Regardless, thanks to Christine for doing a deeper dive into Bluesky than I would care to do personally. I had a lot of reasons to avoid it already. It never "moved the needle forward" from my vantage and this world is already littered with too many NIH Syndrome/"Reinventing the flat tire" (as Alan Kay would phrase it) tech dumpster fires.
Bonus: also gave me some reading references into Golem that I had somehow missed.
Meanwhile: in the less technical world as Last Week Tonight with John Oliver, no one is talking about Bluesky anyway, my favorite excerpt is John Oliver highlighting a cowboy (literally, a guy who sells cows) talking about how "Facebook is archaic it's dead, Instagram's prime was more than seven years ago " and Tik Tok is apparently the go to place for the technically inept (which means the bulk of users), in spades: https://youtu.be/5CZNlaeZAtw?t=1221 ;)
CC: @cwebber@social.coop
TikTok Ban: Last Week Tonight with John Oliver (HBO)
YouTubeChristine Lemmer-Webber
•This started because I got some very kind encouragement by @bnewbold to write something. I'm trying to be technical in my analysis, not unkind. I hope that can be recognized, really and truly.
Christine Lemmer-Webber
•However, the "credible exit" goal is worth perusing, and does use decentralization techniques! But it is not decentralization/federation without moving the goalposts on those terms.
Christine Lemmer-Webber
•The fact that Bluesky's team has managed to scale to receive such users is incredible, nearly feeling miraculous.
Christine Lemmer-Webber
•These days Jack Dorsey is instead focusing on Nostr, which I can only describe as "a sequel to Secure Scuttlebutt with extremely bad vibes where bitcoin people talk about bitcoin"
Christine Lemmer-Webber
•When Jay Graber was awarded the position to lead Bluesky, I was not surprised. To me, Jay was the obvious choice to deliver what Bluesky was being directed, and I do think Jay is an excellent leader
Christine Lemmer-Webber
•This is a great decision and I have advocated that the fediverse do so as well. In fact several years ago I wrote a demo in @spritely's early days showing off how one could build a content-addressed ActivityPub in a spec-compatible way.
Christine Lemmer-Webber
•Let's dive in...
Christine Lemmer-Webber
•This is a reasonable starting point for thinking about things, so let's run with it.
Christine Lemmer-Webber
•And indeed this is a good way to think about things. But it doesn't seem so bad, because we have Personal Data Stores like blogs, so probably things are fine, right?
Quick start guide to building applications on AT Protocol - AT Protocol
AT ProtocolChristine Lemmer-Webber
•PDS'es are like blogs, the rest is like Google. But relays/appviews/etc do a lot *more* than Google.
Christine Lemmer-Webber
•Christine Lemmer-Webber
•Building a web search engine is actually pretty easy these days, you can do so with off-the-shelf tools. And yet there are only a couple of search engines *really*, Google and Bing (DDG mostly uses Bing). And yet the information is right there. *Anyone* could run their own engine. Why don't they?
Christine Lemmer-Webber
•How many of you were around for the birth and awkward death of blog engine feeds? Because I was! Oh, remember Google Reader?
Christine Lemmer-Webber
•When it went away, blogs were still *there*. But blogging as a *syndication medium* died. One big player left, and it's gone.
Michał "rysiek" Woźniak · 🇺🇦udostępnił to.
Christine Lemmer-Webber
•The shape of webcomics started to get shaped to the shape of Twitter's image box.
Christine Lemmer-Webber
•Christine Lemmer-Webber
•So, can we? How hard is it to run your own AppView/Relay/etc?
Christine Lemmer-Webber
•But could we change that?
Christine Lemmer-Webber
•So now someone *can* run their own Relay (not the AppView yet, but maybe soon), and we're getting a sense of the cost and scale. This is good news; we didn't know before.
How to self-host all of Bluesky except the AppView (for now) — alice.bsky.sh
alice.bsky.shChristine Lemmer-Webber
•This is great. We need more people trying to do so to get a sense of how decentralized things can be.
Notes on Running a Full-Network atproto Relay (July 2024) | bryan newbold
whtwnd.comChristine Lemmer-Webber
•This is a fast growth rate and this is *before* the big post-election influx.
Christine Lemmer-Webber
•That's a lazy estimate, but that's also what many people make in the US every year
Christine Lemmer-Webber
•Christine Lemmer-Webber
•But there's a problem though; that's cheap because you've got a server that has a dedicated disk...
Christine Lemmer-Webber
•Christine Lemmer-Webber
•Christine Lemmer-Webber
•And that is not even to mention the challenges with administrating, dealing with takedown requests, illegal content, etc, which are probably much more serious.
Christine Lemmer-Webber
•Let's do a comparison.
Christine Lemmer-Webber
•Christine Lemmer-Webber
•GotoSocial is cheap enough on resources where you can run it for family and friends on a raspberry pi or spare laptop you have sitting around.
Christine Lemmer-Webber
•you have NO IDEA HOW MUCH I CRITICIZE THE FEDIVERSE ALL THE TIME, I do it all the time, and will later here
Christine Lemmer-Webber
•But comparison-wise: what I mean to say is that architectural decisions matter, and scaling up isn't the only thing that's important, *scaling down matters too*.
If you care about decentralization, anyway.
Christine Lemmer-Webber
•This is because in the age of TikTok I somehow have decided to model myself after David Foster Wallace, sorry
"Consider the Fediverse" I guess
Christine Lemmer-Webber
•======= LUNCH BREAK HERE =======
Christine Lemmer-Webber
•I have been receiving a lot of notifications, I am not reading any of them until I finish with this so bear with me, BEAR WITH ME, we're gonna make it through
Christine Lemmer-Webber
•@mlemweb said "of course it's very heteronormative despite having two queer coded icons on the stage and ISN'T THAT THE WAY I guess
Cher, David Bowie - Young Americans Medley (Live on The Cher Show, 1975)
YouTubeChristine Lemmer-Webber
•But we haven't gotten into the really interesting parts which are the structural analysis stuff, so let's move onto that
Christine Lemmer-Webber
•What then INDEED
Christine Lemmer-Webber
•But Bluesky actually has good justification for this! I will defend it insofar as Bluesky was making a serious *design decision*
Christine Lemmer-Webber
•If you're an ex-X-Twitter user then by god, you're going to be amazed! It's just like Twitter!
Christine Lemmer-Webber
•- Bluesky's gotta scale BIG and do so FAST (scaling down: not a priority at all)
- It has to be something Twitter can adopt (of course, not anymore, but initially)
- Everything on ATProto is public (yes, everything, including your blocks btw, we'll get to that)
Christine Lemmer-Webber
•Sometimes you DON'T SEE REPLIES!
Christine Lemmer-Webber
•Christine Lemmer-Webber
•It's simple: all those things "just work" because Bluesky is centralized.
Christine Lemmer-Webber
•But the reality is, it's still *centralized*
Christine Lemmer-Webber
•MAYBE another big corporation could come along and host all this stuff but that's adding a Bing to our Google
Christine Lemmer-Webber
•Blogs are decentralized, Google is not.
PDS'es are decentralized, Bluesky is not.
Christine Lemmer-Webber
•AUGH! *That's* what drives me nuts.
Christine Lemmer-Webber
•fry69: "The working search box was the second thing that impressed me on Bluesky, I thought that was not possible with a decentralized model"
Sorry fry sixty-nine I regret to inform you the reason search works so well is that it's centralized! THAT'S WHY
Christine Lemmer-Webber
•> Decentralization: the result of a system that diffuses power throughout its structure, so that no node holds particular power at the center.
Pretty reasonable. Do you agree? I hope so!
Christine Lemmer-Webber
•A lot of people coming to Bluesky have never heard of "federation" before in a social network so listen up this is important!
Christine Lemmer-Webber
•> Federation: a technical approach to communication architecture which achieves decentralization by many independent nodes cooperating and communicating to be a unified whole, with no node holding more power than the responsibility or communication of its parts.
Christine Lemmer-Webber
•Christine Lemmer-Webber
•So you may say, well, doesn't ATProto have that? After all, messages flow through the different parts!
Christine Lemmer-Webber
•Christine Lemmer-Webber
•There's a reason the actor model and the lambda calculus are undying
Christine Lemmer-Webber
•I am not going to talk about monads. Not TODAY
But we do need to get a better architectural idea of how these systems work because it matters a lot!
myrmepropagandistudostępnił to.
Christine Lemmer-Webber
•- Fediverse/ActivityPub: "message passing"
- Bluesky/ATProto: "shared heap"
Okay, cool, terms established, let's talk about them and why they matter because they matter A LOT
Christine Lemmer-Webber
•Actually it's even a lot like physical mail. You write a letter, you say where it should go, it gets delivered to your house.
Message passing. The world runs on it.
Christine Lemmer-Webber
•But it's not enough for a followers/following type mechanism. But we can build it on top! Thank *you* computational abstractions!
Christine Lemmer-Webber
•"Your ideas are interesting and I'd like to subscribe to your newsletter."
You send me a letter saying you'd like to hear the things I have to say, okay, you're part of the reader list. That's how it works.
Christine Lemmer-Webber
•ActivityPub does some extra work to help you see replies on a thread, think "letters to the editor". This is a bit lossy sometimes though
Christine Lemmer-Webber
•Christine Lemmer-Webber
•That can be improved, we'll talk about that later
Christine Lemmer-Webber
•Now we need to get to that other thing, a "shared heap" architecture. What on earth does that mean?
Christine Lemmer-Webber
•In a "shared heap" system, all the mail gets dumped at the post office, and in the most naive version, you go over there and read through every single piece of mail to see which one is relevant to you
Christine Lemmer-Webber
•Christine Lemmer-Webber
•Secure Scuttlebutt / Nostr... well long story. Lossier, I'll say
Christine Lemmer-Webber
•For Bluesky's "shared heap" architecture, you'd have to build a whole addition to your house for everyone's mail
Christine Lemmer-Webber
•Eeep! That ain't cheap. That's why I'm saying: decentralization also means the ability to *scale down*.
Christine Lemmer-Webber
•But you could run your own Google, in theory. You could index the web. So why aren't you?
Ah yeah. Same thing here. That's what I mean, that's why it's centralized
Christine Lemmer-Webber
•Bluesky's architecture, actually, is great for them.
Christine Lemmer-Webber
•But god damnit it's not decentralized and it's not federated stop TELLING people that
Christine Lemmer-Webber
•Maybe, but there are real consequences to this. What if Bluesky/ATProto fails? "Oh well we tried decentralization and that didn't work." If people think something is something that it isn't, then that's a real problem.
Christine Lemmer-Webber
•Michał "rysiek" Woźniak · 🇺🇦udostępnił to.
Christine Lemmer-Webber
•"This is consistent with how blocking works on Twitter/X" their paper says
But wait, I'm pretty sure that one's not true though
mkljczk lubi to.
mkljczk
•This likely got _fixed_ by the recent changes.
Christine Lemmer-Webber
•It is an ENTIRELY DIFFERENT THING for ANYONE to see who is blocking JK Rowling and who JK Rowling is blocking
This one is shocking to me: this seems like a vector for abusive actors
Christine Lemmer-Webber
•What I am saying is there are architectural consequences to fundamental design abstractions
Mechanisms for private "block" relationships between Bluesky accounts · bluesky-social atproto · Discussion #1131
GitHubChristine Lemmer-Webber
•Look I'm a lisp lady, I know the realities of "Worse Is Better" more than most, I now the right CS designs don't win
But Conway's Law flows in two directions!
Christine Lemmer-Webber
•Direct Messages in Bluesky, wait how do they work if ATProto is public?
Did you guess?
DMs are centralized! All DMs flow through Bluesky
Christine Lemmer-Webber
•Christine Lemmer-Webber
•Christine Lemmer-Webber
•I know they aren't claiming this but it's very clear to me that people are reading things as being completely different architecture than it is
Christine Lemmer-Webber
•Bluesky's team is doing an INCREDIBLE JOB in that way of scaling to meet the incoming stream of Twitter refugees
Christine Lemmer-Webber
•I am trying to be analytical. I am trying!!!
Christine Lemmer-Webber
•We have a few big topics left:
- Decentralized identity, how does it work (magnets too, yes)
- The Org is a Future Adversary
- Christine critiques the fediverse
- Wrap up
Christine Lemmer-Webber
•Go get yourself a hot beverage. Put honey or agave in it, if you like. Dairy, or perhaps, non-dairy, if you prefer.
=== BREAK TIME! Time for tea! ===
Christine Lemmer-Webber
•I am drinking out of an oversized mug from @baconandcoconut that says "I'm that person who likes to serve on open source program committees", which is not actually accurate but I do anyway
Christine Lemmer-Webber
•I used to do data modeling contracting for the US HoR on our legal system, true story, which sends me back to a time when I did a lot of data modeling
Christine Lemmer-Webber
•So actually I was pretty excited when I heard that Bluesky was gonna use DIDs!
Christine Lemmer-Webber
•I no longer think DIDs are necessary to solve this, but then and now I think *decentralized identity is important*
rwot5-boston/final-documents/activitypub-decentralized-distributed.md at master · WebOfTrustInfo/rwot5-boston
GitHubChristine Lemmer-Webber
•But there are several problems, the first of which is: Bluesky supports two kinds of Decentralized Identifiers and they're both -- you guessed it -- centralized!
Christine Lemmer-Webber
•So far so good...
Christine Lemmer-Webber
•When I got involved in DID work, that was actually the expectation of everyone. Then it was loosened. What? Why on earth?!
Christine Lemmer-Webber
•did:web is centralized, and kinda useless. It just works by a regex rewrite of the DID's name to an https URI and then it's retrieved. Anywhere you use did:web, you could have just used an https: URI
Christine Lemmer-Webber
•Yeah but the naming system of the web is CENTRALIZED
We use DNS and ICANN (and then we add another centralization layer with TLS/SSL CAs)!
Christine Lemmer-Webber
•The answer is easy. did:web is easy to implement, many DID methods were not.
did:web existed for test suites.
Christine Lemmer-Webber
•"Sure having a nearly no-op DID to pass the test suite is helpful but it shouldn't be labeled as a DID, people will get confused!"
Christine Lemmer-Webber
•"This is going to turn into decentralization-washing!"
"It's just to pass the test suite!"
[... time passes ...]
"Actually we like did:web now, it's a DID method everyone can implement!"
Christine Lemmer-Webber
•Christine Lemmer-Webber
•Most users hear "Decentralized Identifiers" and they think they know what's being delivered, the distinction between the *spec* being called that and the *mechanism used* being centralized... you have to go digging to find that out
Christine Lemmer-Webber
•Speaking of centralized Decentralized Identifiers, did I mention that did:plc is centralized?
Christine Lemmer-Webber
•Well the docs no longer say that, it now says "Public Ledger of Credentials"
Good backronymn, but...
Christine Lemmer-Webber
•The particular way in which did:plc is centralized doesn't bug me too much but once again, few users have read into this
Christine Lemmer-Webber
•Christine Lemmer-Webber
•Christine Lemmer-Webber
•There's one organization that can be queried via their API that keeps a definitive list of certificate and their updates
Christine Lemmer-Webber
•Bluesky can refuse to share did:plc documents or their updates, but it can't manufacture updates
Christine Lemmer-Webber
•I love certificate chains, certificate chains are great
Honestly, having a centralized registry for them, it's not the best but it's not the worst (aside from that damn naming thing)
However...
Christine Lemmer-Webber
•I'm not a cryptographer, but some of my good friends are cryptographers, etc etc. I got some... reactions to what is to follow
Christine Lemmer-Webber
•Maybe it's not a concern because of doc parsing but it's best practice to protect against length extension attacks
Christine Lemmer-Webber
•I'm... again I'm not a cryptographer, but why throw away all that delicious entropy? So the did fits in 32 characters? Weird choice, and it means collisions are cheaper
Christine Lemmer-Webber
•I do remember the Debian short IDs fiasco tho https://gwolf.org/2016/06/stop-it-with-those-short-pgp-key-ids.html
Why not hold onto all the entropy you can get?
Christine Lemmer-Webber
•We'll get to UI stuff in a bit.
I just don't understand this decision though, it just seems weird to me but maybe a cryptographer will tell me it's fine, actually
Christine Lemmer-Webber
•Good post btw
Christine Lemmer-Webber
•The fix ended up resulting in codifying the hash length: 24 characters, and no longer https://github.com/did-method-plc/did-method-plc/pull/31
Constant identifier len of 24 by dholms · Pull Request #31 · did-method-plc/did-method-plc
GitHubChristine Lemmer-Webber
•> However, there's one other factor that raises this from "a curiosity" to "a big problem": bsky.social uses the same rotationKeys for every account.
Christine Lemmer-Webber
•Christine Lemmer-Webber
•Christine Lemmer-Webber
•Christine Lemmer-Webber
•Though, one might take a moment to ask: who controls the keys if you *do* want to move?
Christine Lemmer-Webber
•But the solution, once again, ends up pretty centralized: for all users on Bluesky's main servers at least, Bluesky generates and manages the keys for them.
Christine Lemmer-Webber
•- Sympathetic: key management *is* hard and we just don't have the UX answers to solve that, and Bluesky is once again trying to deliver to Twitter refugees
- Unsettled: it's centralized, but... there's something *more* troubling
Christine Lemmer-Webber
•But for those same users, Bluesky still *controls their keys* and thus *controls their destiny*
Christine Lemmer-Webber
•Well, I'm not gonna get into this in detail here, I do on the blogpost if you wanna read it but, the cyclic dependency might be an actual cycle
Christine Lemmer-Webber
•- users only know domains, they don't know the DIDs
- turns out that's a phishing attack when those can change at any time
- if bsky.app ever goes down how do you actually know I *really* mapped to that name
- and a whole lot of "liveness" problems that enter there
Christine Lemmer-Webber
•Christine Lemmer-Webber
•I will also go to the bathroom
TMI? If you've read this far into this weird thread I am already giving you too much info
=== TEA BREAK 2 ===
Christine Lemmer-Webber
•I am still not reading notifications. Well, I have seen a few fly by on the fediverse which is blipping and blooping nonstop in the Mastodon UI so people are clearly reading it there
Bluesky says "30+". How big is the +?? I will resist temptation to look and assume "31"
Christine Lemmer-Webber
•Well you could have just read the blogpost but 3 more sections remain, we are approximately 2/3 there
I know, bear with me, what is left is:
- What should the fediverse do?
- Preparing for the organization as a future adversary
- Conclusions
Christine Lemmer-Webber
•pray I do not reorder them again
Christine Lemmer-Webber
•Now you can put 2 eggs
I 2 was once an egg
(Look I specifically transitioned so I could never be accused of making dad jokes again so that does not qualify)
Christine Lemmer-Webber
•So let's get into it!
Christine Lemmer-Webber
•I have even gotten criticism from AT LEAST ONE ActivityPub spec author for critiquing AP-as-deployed but I do anyway
Christine Lemmer-Webber
•Many of the critiques I'm about to lay out we left holes in the spec for which I hoped would be filled with the right answers
Christine Lemmer-Webber
•Bluesky does the right thing here, AP should too
README.org · master · spritely / golem · GitLab
GitLabChristine Lemmer-Webber
•A server should be able to go down, and content should survive.
Go content addressing!
Christine Lemmer-Webber
•I pushed back on that, I didn't want that requirement, and it was exactly for this reason: enabling content addressing
Christine Lemmer-Webber
•Oh, and ocaps!!!
README.org · master · spritely / OcapPub · GitLab
GitLabChristine Lemmer-Webber
•Trying to mix these two, you accidentally get ACLs, and then you get confused deputies and ambient authority, plagues of the security world
Christine Lemmer-Webber
•But we will come back to ocaps in a second because it turns out OCapPub is not the only time I proposed AP + ocaps!
Christine Lemmer-Webber
•I think that document laid out all the right ideas for *the fediverse* (not saying bsky, the fediverse)
Bluesky proposal submitted by Christine Lemmer-Webber and Jay Graber, 2020-07-29 ($2535398) · Snippets · GitLab
GitLabChristine Lemmer-Webber
•What I wanted to do required a lot more research, and we have done that over at @spritely instead
Christine Lemmer-Webber
•So let me lay out what the things in that proposal were:
Christine Lemmer-Webber
•- Integrate ocaps, which is possible because actor model + ocaps compose
- Content addressed storage!
- Decentralized identity (notice the *y*, I did not say DIDs) on top of ~mutable CAS storage
- Petname system UX
(cotd...)
Christine Lemmer-Webber
•- Better anti-spam / anti-harassment using OCapPub ideas
- Improved privacy with E2EE ("encrypted p2p" even a better goal)
Whew! An improved fediverse?
"Uh, Christine, this sounds like a lot, do you think the fediverse can take this on?"
Christine Lemmer-Webber
•Christine Lemmer-Webber
•Especially ocaps need to go bottom-up.
Christine Lemmer-Webber
•But people have to build for today too
Christine Lemmer-Webber
•- The fediverse should adopt content-addressed storage and decentralized identity
- Bluesky should adopt real, actual federation and decentralization
Christine Lemmer-Webber
•To a large degree, I think @blaine is right
Christine Lemmer-Webber
•I will say though that I think if Bluesky were to become *actually decentralized* it would look a lot like ActivityPub in terms of having directed messaging. This will also introduce similar challenges around eg replies, etc.
Christine Lemmer-Webber
•The truth is that Mastodon didn't, but Mastodon also saved ActivityPub. It then painted a vision of the future that wasn't, at least, what Jessica Tallon and I expected of it. But it saved AP.
Christine Lemmer-Webber
•In the longer term, neither is implementing the ocap vision I think is critical for the big vision, and in a way, I think maybe neither can be easily rearchitected to achieve it. Well, not yet.
Christine Lemmer-Webber
•And they were right.
Remember when I said Conway's Law flows in both directions?
Christine Lemmer-Webber
•"Tech problems/social problems": false dichotomy.
myrmepropagandist
•Tom Casavant
•mkljczk
•