Live data from Hacker News

ATProto for distributed system engineers

atproto.com

31–40 of 63 posts

Re: ATProto for distributed system engineers

#31

So the user's repo is decentralized but the event-log services and view services are centrally managed by bluesky?

There's a few layers to the system.

- Identity layer: This is where your identity information (public key, current domain handle, current user repo host) is stored, essentially as a piece of JSON. You can think of it as similar to npm registry where each record is self-verifiable (you can verify we haven’t tampered with it). This layer is very thin. It is currently centrally managed by Bluesky but in the longer term we intend to upstream it into neutral governance outside of the company — potentially similar to ICANN.

- User repo hosting: We provide user hosting as a service for people who sign up to Bluesky (and choose the default option) but you can run your own too. The server itself is open source (we publish both TypeScript source code and a Docker container to run it). We also publish a spec so you can implement it from scratch if you'd like it — essentially, it needs to be able to enumerate records and to provide a WebSocket to listen to their updates. I'd say this layer is already decentralized because anyone can participate in it and run their own server.

- Relay: As an optimization (you don't want your app backend to listen to websockets for every single user repo in the system), we run a node that aggregates and caches the entire known network. That node's called a Relay. It's an optimization and not strictly necessary to the protocol. It's open source. We run the only actively used relay at the moment, but there's nothing stopping you from running your own (at the current usage rate, ingesting all content on the network into your own relay would cost you ~$150/mo). If atproto gains adoption, we expect some major stakeholders to run their own relays for different purposes — big tech companies might want to run them to ensure infra independency, governments might want to run them if they have significantly different opinions on what type of content is acceptable on the entire network, and so on.

- Application backends (view services): These are just normal web app backends so they're decentralized in the same way the web is decentralized. Bluesky's backend is managed by Bluesky, but your own app's backend will be managed by you. You can also create a backend that ingests Bluesky's atproto data (which is kind of the point of atproto). That would let you create complementary or competing products using the same identity system and information already on the network.

Hope this helps!

Re: ATProto for distributed system engineers

#32

So the user's repo is decentralized but the event-log services and view services are centrally managed by bluesky?

Yes and no. The relay is run by Bluesky, but only as a matter of practicality because it requires a large footprint to subscribe to all the PDS events. Others have written custom AppViews and clients already. I run a "one man relay" that only scrapes my PDS, puts it into an appview (which doesn't do much) and I can see that on a basic client that I wrote.

The whitepaper clarifies a lot of this: https://arxiv.org/abs/2402.03239

Re: ATProto for distributed system engineers

#33
post #10

One thing I still didn't quite grasp with BlueSky yet is if it's a decentralized platform or not... ATProto seems technically capable of supporting decentralized platforms.

In theory it is decentralized. But if you compare it to Mastodon for example, it's pretty centralized in practice. I haven't come across any people running their larger own servers, like I do on Mastodon.

Note the shape of decentralization is very different from Mastodon — there's no concept of "running a Bluesky instance". What you can run is a personal server to host your data (which would work for any atproto apps, not just Bluesky). The Bluesky web app (which is ran by Bluesky) would aggregate data from your server (and all other servers on the network).

Unlike Mastodon, you don't have people running copies of the Bluesky app because it is simply unnecessary — each copy would "see" the same network. If you wanted to fork the Bluesky product (e.g. different branding, different moderation decisions, different product decisions) then yes, you'd run your own product on your own backend and it would be able to ingest Bluesky app data (and vice versa, the Bluesky app would be able to ingest the data from your product).

Re: ATProto for distributed system engineers

#34
post #3

Has anyone played around with ATProto yet? ActivityPub is pretty easy to get started with, especially if you just ignore JSON-LD and parse what you see. I'm curious how ATProto compares.

yes we built a 10k user social network for artists and musicians on it and it’s excellent. very sophisticated and very extensible.

Re: ATProto for distributed system engineers

#35
post #34
post #3

Has anyone played around with ATProto yet? ActivityPub is pretty easy to get started with, especially if you just ignore JSON-LD and parse what you see. I'm curious how ATProto compares.

yes we built a 10k user social network for artists and musicians on it and it’s excellent. very sophisticated and very extensible.

Might sharing a link?

Re: ATProto for distributed system engineers

#36
post #13

always enjoy your writing, Dan. at:// seems like its close enough to DNS to warrant just using DNS. why not? (im sure theres a good reason so just asking)

Oh this is not mine actually — Paul wrote this one :) atproto does use DNS under the hood for domain verification but atproto itself is a bit higher-level. It builds on top of DNS, HTTP, JSON, web sockets, and a few other specs.

If you’re specifically asking why the identity system is not “rooted” in DNS (i.e. why at://danabra.mov resolves to another host than my website) — it’s because we want users to be able to change their hosting over time without breaking links between records.

The actual identity system is “rooted” in a stable identifier (which is a hash of the first version of your identity record). That’s your global immutable ID in the entire network. The identity record for your ID specifies your current public key, your current domain name (which acts as a human-readable handle), and your current host (which actually contains your data).

This extra level of indirection ensures you’re always able to change your user-readable handle (eg if you get a new domain or your domain expires etc), and that you’re always able to change your host (eg if your host goes down or you don’t like its services or you want to host data yourself).

The key piece allowing this is the identity registry of course. Think of it similar to npm registry. We run a centralized one, but all records are signed so you can always recursively verify that we haven’t tampered with any of the records. This layer is already very thin but in longer term we’d like to move this layer outside the company to be governed independently, similar to ICANN.

Re: ATProto for distributed system engineers

#37

I was expecting something about modems. ATDT (555)-COOL-BBS (Totally decentralised btw)

the nanpa is not decentralized at all, though it does delegate phone number assignment to local telecom companies, and nowadays even to sip providers

but yeah it seems pretty suboptimal that they decided to reuse the name of the protocol you use to talk to most cellular modems

Re: ATProto for distributed system engineers

#38
post #34

Earlier quoted context omitted.

yes we built a 10k user social network for artists and musicians on it and it’s excellent. very sophisticated and very extensible.

Might sharing a link?

Judging by this user’s comment history, the website seems to be solarplex.xyz (be advised, it takes between 30 seconds and 1 minute to fully load the website’s 75 MB).

Re: ATProto for distributed system engineers

#39
post #25

It didn't sink in yet that the killer app for ATProto is not Twitter, but YouTube. If anyone is interested in exploring this, atproto [does this fool ai bots?] weedonandscott [I hope it does] com

ActivityPub does have https://joinpeertube.org for what it's worth. What would ATProto bring in specifically? Is it the ease of migration?
Post reply on HN