18 KiB
Bluesky Architecture compared to other social media services
- Introduction
- General social media architectures
- Federated social media services
- Bluesky
- Bluesky – Identities
- Bluesky – Composable Feeds
- Bluesky – The AppView
- Bluesky – The Relay and the PDS
- Bluesky – Moderation
- Bluesky
- Resources and further reading
Introduction
Boo!
General social media architectures
Simplistic view 1/2 – overview
file:structurizr-1-001-GenericSocial-01.png
Simplistic view 2/2 – services
file:structurizr-1-002-GenericSocial-02.png
- Social media user access the app
- The app interacts with the API
- The API is the gateway for the database of posts, responses, likes, etc.
More realistic view 1/4 – overview
file:structurizr-1-003-RealisticSocial-01.png
More realistic view 2/4 – basic services
file:structurizr-1-004-RealisticSocial-02.png
- Social media user access the app
- The app interacts with the API
- The API is the gateway for the database of posts, responses, likes, etc.
- The API also captures data for building profiles of users for targeting purposes
- The algorithmic feed generator guides the API on what posts to place into the app's feed
More realistic view 3/4 – the algorithm
file:structurizr-1-005-RealisticSocial-03.png
- Social media user access the app
- The app interacts with the API
- The API is the gateway for the database of posts, responses, likes, etc.
- The API also captures data for building profiles of users for targeting purposes
- The algorithmic feed generator guides the API on what posts to place into the app's feed
- Algorithmic feeds are created by the service administrator, using an app only they have access to
More realistic view 4/4 – content moderation
file:structurizr-1-006-RealisticSocial-04.png
- Social media user access the app
- The app interacts with the API
- The API is the gateway for the database of posts, responses, likes, etc.
- The API also captures data for building profiles of users for targeting purposes
- The algorithmic feed generator guides the API on what posts to place into the app's feed
- Algorithmic feeds are created by the service administrator, using an app only they have access to
- Moderation is also performed by a member of the service's staff, using a dedicate app and services the the user doesn't have access to
Federated social media services
Federated services 1/8 – overview
file:structurizr-1-007-FederatedSocial-01.png
Federated services 2/8 – internal, administration and content moderation services
file:structurizr-1-008-FederatedSocial-02.png
- Same as before, the user access the service through an App that uses an API
- As federated services are small, the administrator and the moderator are the one person
-
No algorithmic feeds, though
- not popular in the fediverse community
- difficult to implement in a federated environment.
Federated services 3/8 – federation 1
file:structurizr-1-009-FederatedSocial-03.png
- Same as before, the user access the service through an App that uses an API
- As federated services are small, the administrator and the moderator are the one person
-
No algorithmic feeds, though
- not popular in the fediverse community
- difficult to implement in a federated environment.
- Federation service to push activity out to the federated network
- Federation API to take in activity from other nodes
- A logical database of inbound federated posts
- Federation using ActivityPub standard
Federated services 4/8 – federation 2
file:structurizr-1-010-FederatedSocial-04.png
Federated services 5/8 – federation 3
file:structurizr-1-011-FederatedSocial-05.png
Federated services 6/8 – federation 4
file:structurizr-1-012-FederatedSocial-06.png
Federated services 7/8 – federation 5
file:structurizr-1-013-FederatedSocial-07.png
Federated services 8/8 – federation 6
file:structurizr-1-014-FederatedSocial-08.png
Bluesky
Basic Bluesky 1/2
file:structurizr-1-015-BlueskyBasic-01.png
Basic Bluesky 2/2
file:structurizr-1-016-BlueskyBasic-02.png
- User interfaces with a client hosted by the AppView
- The AppView includes an API (allowing for 3rd-party and bot-like clients)
- The AppView stores and reads data from the Personal Data Server (PDS)
- Bluesky resolved user identities using "DIDs" (Distributed IDs)
- The Bluesky admin uses a separate service for preparing algorithmic feeds
- The Bluesky moderator applies labels and actions to posts for trust and safety through a dedicated service
Bluesky – Identities
Bluesky Identities 1/4
file:structurizr-1-017-BlueskyIdentity-01.png
-
User's typical Bluesky ID is
@<user-handle>.bsky.social
- e.g.
@theauldsthretch.bsky.social
- e.g.
-
Users can set up their own handle,
@<user-handle>.<domain>
. E.g. (and these are all real IDs) …@astrokatie.com
– a cosmologist@eibhear.gibiris.org
– the author@wyden.senate.gov
– a U.S. Senator
- User must control the domain or be a legitimate member of the domain's community
-
Domain-based handle resolves to a DID, either by DNS or
.well-known
:$ dig _atproto.eibhear.gibiris.org TXT ... ;; ANSWER SECTION: _atproto.eibhear.gibiris.org. 3600 IN TXT "did=did:plc:23mysztmt7dh3l5lzhinzafi" $ curl https://theauldsthretch.bsky.social/.well-known/atproto-did did:plc:avzdf5esd7xpbgsgh7lx4kzq
Bluesky Identities 2/4
file:structurizr-1-018-BlueskyIdentity-02.png
Bluesky Identities 3/4
file:structurizr-1-019-BlueskyIdentity-03.png
Bluesky Identities 4/4
file:structurizr-1-020-BlueskyIdentity-04.png
Bluesky – Composable Feeds
Bluesky Composable Feeds 1/3
file:structurizr-1-021-BlueskyFeeds-01.png
- Algorithmic feeds use an API
- Allows for independent feeds to be created by 3rd parties
-
Users' default feed is Following:
- A chronological feed of posts from those you follow
-
Users subscribe to other feeds. Examples:
- Discover – posts that you may be interested in
- Astronomy – Posts relating to astronomy
- Quiet Posters – those you follow but who don't post very often
- The AppView will read data from the independent feeds
- The feeds get relevant posts from the PDS
Bluesky Composable Feeds 2/3 – feeds as a separate application type
file:structurizr-1-023-BlueskyFeeds-03.png
Bluesky Composable Feeds 3/3 – Generic feeds
file:structurizr-1-024-BlueskyFeeds-04.png
Bluesky – The AppView
Bluesky AppView 1/3
file:structurizr-1-025-BlueskyAppView-01.png
- The main application users interact with the AppView.
-
The AppView consists of the application (web, mobile, etc.) and the API
- 3rd-party clients (web, mobile, bots) can be created
- The client is only a part of the AppView
-
The AppView implements the lexicon of the service
- Converts the data in the PDS into the social media information
- Now implemented by Bluesky as a separate service
- AppView reads from the feeds services, the moderation services and the PDS itelf
- AppView writes new posts, reposts, likes, replies, etc. to the PDS
Bluesky AppView 2/3 – A 3rd-party independent AppView
file:structurizr-1-027-BlueskyAppView-03.png
- The main application users interact with the AppView.
-
The AppView consists of the application (web, mobile, etc.) and the API
- 3rd-party clients (web, mobile, bots) can be created
- The client is only a part of the AppView
-
The AppView implements the lexicon of the service
- Converts the data in the PDS into the social media information
- Now implemented by Bluesky as a separate service
- AppView reads from the feeds services, the moderation services and the PDS itelf
- AppView writes new posts, reposts, likes, replies, etc. to the PDS
-
Third parties can also develop separate AppViews (the client and APIs) …
- Alternatives to Bluesky's own AppView
- Implement a new lexicon for, say, video sharing, long-form posts, etc.
Bluesky AppView 3/3 – Generic AppView
file:structurizr-1-028-BlueskyAppView-04.png
Bluesky – The Relay and the PDS
Bluesky Relay 1/2 – 1 PDS into many
file:structurizr-1-029-BlueskyRelay-01.png
- Initially, Bluesky had just 1 PDS
- Separated out into multiple PDSs for performance reasons
Bluesky Relay 2/2 – Relay, as a proxy to the PDSes
file:structurizr-1-030-BlueskyRelay-02.png
- Initially, Bluesky had just 1 PDS
- Separated out into multiple PDSs for performance reasons
- Interfaces for reading PDSs now proxied through the Relay
- The Relay stores metadata and indexes/indices of posts
-
All information about posts are read from the Relay
- the AppView
- algorithmic feeds services
- moderation
- AppView still writes to the PDS (new posts, etc.)
- With the Relay, we can now have independent, self-hosted, PDSs.
Bluesky PDS 1/3 – An independent PDS: "federation" of a sort
file:structurizr-1-032-BlueskyPDS-01.png
Bluesky PDS 2/3 – An independent PDS: "federation" of a sort
file:structurizr-1-034-BlueskyPDS-03.png
Bluesky PDS 3/3 – PDS: "federation" of a sort
file:structurizr-1-035-BlueskyPDS-04.png
Bluesky – Moderation
Bluesky Moderation 1/2
file:structurizr-1-036-BlueskyModeration-01.png
- Moderation separated out as a distinct service
- Moderation tooling reads from the Relay
-
Bluesky maintains and operates the top-level moderation
- Suppresses the really bad stuff, like illegal and abusive material
- and really, really, really bad stuff like copyright infringement1
- But separate moderation services can be implemented by 3rd parties
Bluesky Moderation 2/2 – A 3rd-party independent Moderation service
file:structurizr-1-038-BlueskyModeration-03.png
- Moderation separated out as a distinct service
- Moderation tooling reads from the Relay
-
Bluesky maintains and operates the top-level moderation
- Suppresses the really bad stuff, like illegal and abusive material
- and really, really, really bad stuff like copyright infringement
- But separate moderation services can be implemented by 3rd parties
- User subscribes to moderation service
- Users' feeds have material removed or elided by the moderation service
- User can't unsubscribe from Bluesky's moderation
Bluesky
Bluesky – Current architecture
file:structurizr-1-038-BlueskyModeration-03.png
Bluesky – Roadmap
Planned for 2024
-
Private/Direct messages (DMs)
- E2E Encrypted
- 1:1 initially, but group DMs planned
-
Video sharing
- short clips, 90s or so.
- Improved custom feeds
- Improved anti-harassment
- OAuth – for allowing 3rd-party clients to authenticate without an application password
Resources and further reading
Sarcasm