The way decentralization works on Bluesky is similar to how the web itself works.
The part that's decentralized is users' storage of data — anyone can host it themselves (we provide both a Docker image of a server that can do that, and the source code for the server, and a spec in case you want to write your own).
However, applications (such as Bluesky) are centralized in the sense that there's just one instance of each application and it can make choices about how to aggregate the decentralized data from the network. A useful analogy is how Google crawls the web into its index but can present stuff from its index according to its own rules.
In this case, quote posts removals don't remove anything from the user repositories (you can't remove data from someone else's repository just like you can't remove data from someone else's website). Rather, when you detach someone's quote, you're putting a record into your repository (declaring the intent to detach it). Our app (both server and client) respects that intent and displays it accordingly.
Indeed, other clients could choose to not respect that, but the default behavior for most users matters a lot — and in general good faith clients try to be well-behaved and align with users' expectations.
Breaking out feeds and moderation are also interesting design decisions that allow an app like Bluesky to give users more control and select algorithms from outside the centralization
Best explanation of the network topology yet, if I'm reading this correctly this removes the problem of not being able to participate on the global network just because the application you chose to interact with it is considered an "evil server" and banned from participation like mastodon, in other words, user accounts aren't associated with a home server that determines who they can interact with, is that right?
How does an application decide whose repos to index?
Same logic as a search engine might apply to the Web - some kind of crawling rules. That said, the network tends to use Relay services to optimize it. The Relays are essentially dumb caches that provide a firehose from multiple servers. We introduced them to make it easier for new applications to pull from the network, but they're optional; you can setup your own relay or crawl/subscribe directly with servers.
EDIT: to answer your question - this means the relay tends to decide what gets indexed.
The part that's decentralized is users' storage of data — anyone can host it themselves (we provide both a Docker image of a server that can do that, and the source code for the server, and a spec in case you want to write your own).
However, applications (such as Bluesky) are centralized in the sense that there's just one instance of each application and it can make choices about how to aggregate the decentralized data from the network. A useful analogy is how Google crawls the web into its index but can present stuff from its index according to its own rules.
In this case, quote posts removals don't remove anything from the user repositories (you can't remove data from someone else's repository just like you can't remove data from someone else's website). Rather, when you detach someone's quote, you're putting a record into your repository (declaring the intent to detach it). Our app (both server and client) respects that intent and displays it accordingly.
Indeed, other clients could choose to not respect that, but the default behavior for most users matters a lot — and in general good faith clients try to be well-behaved and align with users' expectations.