"some of the design and the principles behind this design, as I understand them... we’re going to start by exploring atproto, and then talk about how BlueSky is built on top of it"
Basic infrastructural elements
In atproto:
- users create records that are cryptographically signed to demonstrate authorship.
- Records have a schema called a Lexicon.
- Records are stored in repositories...[which] run as a service, exposing HTTP and WebSockets... [so] talk to each other ... These are often called PDSes, for “Personal Data Server”...
- Applications ... called App Views, because they are exposing a particular view of the information stored in the network... created via Lexicon...
- building an application means that you define a Lexicon, structuring the data that you want to deal with, and then look at records that use your lexicon, ignoring the rest...
- [to solve scaling issues] a relay... aggregates information ... exposes it as a firehose to others", so App Views look at Relays, not Repositories.
- Therefore my post "won’t notify my followers’ repositories individually. My repository will notify a Relay, and my followers will use an App View that filters ... the Relay to show only the posts of people they’re following.. [so] Relays are often huge and expensive to run... you could imagine running a smaller relay that only propogates posts from a smaller subset of users"
Moderation
ATproto "takes a "speech vs reach” approach to moderation... you take all of that speech, but provide a way to limit the reach of stuff you don’t care to see yourself... choose your own moderators:
- feed generators take the firehose ... show you ... content, filtered and ordered by whatever metric the feed generator desires. You can then share these feeds ... If I want to make my own algorithm, I can do so...
- a labeler applies labels to content or accounts ... [so] subscribe ... and then have your experience change based on the labels". Manual, automatic, or both. Blocklists are labellers. "imagine communities running their own services"
So "choose your moderation experience, not just in applications, but also within it... an Instagram clone on atproto... could use your blocklist labeller".
Identity
- users have "a “Decentralized Identifier,” or DID ...[and] a handle, which is a domain name... [or] @subdomain"
- changing your handle changes nothing else
- "to use a domain as your handle ... [take your] DID ... add a TXT record in the DNS you use for that domain"
- it's true account portability because there are no accounts: you have a DID, and use cryptography to sign your content. Noone can stop you "using keys that they don’t even have access to. If your PDS goes down... migrate to a new one... backfill the contents of the PDS from the network itself, and inform the network that your PDS has moved."
"But The devil is in the details... BlueSky supports two methods" to create a DID:
- "did:web... based on domain names
- did:plc... stands for “placeholder,” even though they plan on supporting it indefinitely"
Both have drawbacks, but plc's seems more serious: "involves asking a service that BlueSky runs ... to resolve the proper information... [so] BlueSky can ban you in a more serious way".
On the other hand:
- "you can use did:web"
- "if better systems develop, you can move to them"
- "the BlueSky team ... indicated that moving governance of did:plc to some sort of consensus model in the future is possible...
- others could run a did:plc service"
Bluesky
"BlueSky is an application built on top of the atproto network. They
- run an App View
- a web application that uses that App View
- a PDS for users that sign up through the web app
- a relay that those PDSes communicate with
- publish two Lexicons, one as com.atproto.* ... low level operations that any application on the network will need ... and app.bsky.* ... specific to BlueSky
Building on atproto
- creat a Lexicon
- "run an App View that does things with data on the network involving your lexicon...
- your application will want to give people the ability to write data to their PDS using your lexicon."