Hacker News new | ask | show | jobs
by danabramov 12 days ago
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

2 comments

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?

>It probably is entirely true that different apps can spin up on atproto independently

It's true, and I want to emphasize that they need nothing to do with microblogging or Bluesky posts. I think it's important to internalize this because most discussions about Mastodon are about microblogging modality. But, say, Tangled is a git hosting with social layer (issues, PRs) on atproto. So we are really comparing fundamentally different ecosystems already. Atproto is not centered around Bluesky posts or Bluesky app; it's just that Bluesky app happens to be the biggest app built on top of atproto primitives.

>This, what do 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.

You're starting with the Mastodon perspective of "a social network is a set of fragmented views of the network with no shared sense of identity or global aggregation/search which talk to each other" and consider it natural.

Whereas I start with the regular user's understanding of a social app — it's a place where you can come, where you can see the entire world at once, where all features (global search, recommendations, follow graph) are global by default, and where you don't "belong" to any particular community to an extent that this community can cut you off from your followers or ban you. Instead, the app is serviced by app's developers and you're at their mercy.

Now, what does atproto try to do?

From the user's point of view, it looks as the familiar "centralized" approach — apps can have global search, recommendation algorithms, there's no fragmentation. Each app is a prism over the entire network and always shows a consistent view over it. App developers do have full control over how the app presents it. There aren't 100 copies of the same app because there are 100 communities on it. This split into instances is a "Mastodon-brained" way of thinking.

However, the underlying data lives in an app-agnostic layer. So Blacksky was able to kickstart their own projection of atproto network (filtered down to Bluesky stuff since their app is initially a clone of Bluesky). It's not an easy job to make it work for billions of posts, but no Mastodon instance even tries to support that scale. Atproto makes supporting that scale possible, and then we say "oh but this is expensive". Of course it is — it's expensive to store content from millions of people with any technology. But unlike centralized services (which atproto tries to match in baseline UX expectations), it is possible to spin up alternative projections of the same network that fully participate in it, when folks have concrete reasons to do so. (For example, Blacksky is able to take different moderation decisions as a result.)

You can go further. https://reddwarf.app/ is a working app displaying Bluesky data that does not have a backend at all and does not use Bluesky (or Blacksky) API servers. Instead, it loads data directly from the hosting layer, and uses https://constellation.microcosm.blue/ network index for querying relationships (like "give me a list of likes for this post"). This is less efficient than maintaining an index (so it loads a bit slower) but it's totally a workable model. The Constellation index itself, if I'm not mistaken, runs on someone's Raspberry Pi.

Of course, you can also "scale down" atproto to make it apples-to-apples with Mastodon. You'd add some code that filters down events only to those that are "relevant" to people who are "on" your "server" and their follows. This would be a "small world" atproto that would be easy for anyone to spin up. It's not very exciting but I guess we'll see more experiments in that area as people realize it is possible. But it's also just less exciting because you can also run the real thing if you're motivated enough. And the fact that anyone can choose to do it if there's a real need means people don't create a 1000 of shallow Bluesky clones. It just doesn't solve any actual problems other than trying to win arguments like this.

I don't think "decentralization" is a super useful prism to think about atproto. Atproto is a high scale syndication protocol, like typed signed RSS via HTTP and WebSockets with a shared data model and identity upstreamed into the web. This protocol enables independent apps, independent hosting providers, and independent caches and relays to build and participate in a shared ecosystem. That ecosystem lives on the web, so it's "decentralized" in the same sense that web itself is. But it doesn't mean that each product must be split into a thousand pieces at the UX level.

> 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).