diff --git a/BlueskyArchitecture.html b/BlueskyArchitecture.html index c83d2f8..3ad30b9 100644 --- a/BlueskyArchitecture.html +++ b/BlueskyArchitecture.html @@ -27,21 +27,24 @@

Table of Contents

-
-

Introduction

+
+

Introduction

Boo! @@ -50,28 +53,28 @@ Boo!

-
-

General social media architectures

-
+
+

General social media architectures

+
-
-

Simplistic view 1/2 – overview

+
+

Simplistic view 1/2 – overview

-
+

structurizr-1-001-GenericSocial-01.png

-
-

Simplistic view 2/2 – services

+
+

Simplistic view 2/2 – services

-
+

structurizr-1-002-GenericSocial-02.png

@@ -87,23 +90,23 @@ Boo!
-
-

More realistic view 1/4 – overview

+
+

More realistic view 1/4 – overview

-
+

structurizr-1-003-RealisticSocial-01.png

-
-

More realistic view 2/4 – basic services

+
+

More realistic view 2/4 – basic services

-
+

structurizr-1-004-RealisticSocial-02.png

@@ -121,13 +124,13 @@ Boo!
-
-

More realistic view 3/4 – the algorithm

+
+

More realistic view 3/4 – the algorithm

-
+

structurizr-1-005-RealisticSocial-03.png

@@ -146,13 +149,13 @@ Boo!
-
-

More realistic view 4/4 – content moderation

+
+

More realistic view 4/4 – content moderation

-
+

structurizr-1-006-RealisticSocial-04.png

@@ -174,28 +177,28 @@ Boo!
-
-

Federated social media services

-
+
+

Federated social media services

+
-
-

Federated services 1/8 – overview

+
+

Federated services 1/8 – overview

-
+

structurizr-1-007-FederatedSocial-01.png

-
-

Federated services 2/8 – internal, administration and content moderation services

+
+

Federated services 2/8 – internal, administration and content moderation services

-
+

structurizr-1-008-FederatedSocial-02.png

@@ -216,13 +219,13 @@ Boo!
-
-

Federated services 3/8 – federation 1

+
+

Federated services 3/8 – federation 1

-
+

structurizr-1-009-FederatedSocial-03.png

@@ -247,51 +250,51 @@ Boo!
-
-

Federated services 4/8 – federation 2

+
+

Federated services 4/8 – federation 2

-
+

structurizr-1-010-FederatedSocial-04.png

-
-

Federated services 5/8 – federation 3

+
+

Federated services 5/8 – federation 3

-
+

structurizr-1-011-FederatedSocial-05.png

-
-

Federated services 6/8 – federation 4

+
+

Federated services 6/8 – federation 4

-
+

structurizr-1-012-FederatedSocial-06.png

-
-

Federated services 7/8 – federation 5

+
+

Federated services 7/8 – federation 5

-
+

structurizr-1-013-FederatedSocial-07.png

-
-

Federated services 8/8 – federation 6

+
+

Federated services 8/8 – federation 6

-
+

structurizr-1-014-FederatedSocial-08.png

@@ -299,28 +302,28 @@ Boo!
-
-

Bluesky

-
+
+

Bluesky

+
-
-

Basic Bluesky 1/2

+
+

Basic Bluesky 1/2

-
+

structurizr-1-015-BlueskyBasic-01.png

-
-

Basic Bluesky 2/2

+
+

Basic Bluesky 2/2

-
+

structurizr-1-016-BlueskyBasic-02.png

@@ -328,8 +331,8 @@ Boo!
    -
  • User interfaces with an app hosted by the AppView
  • -
  • The AppView includes an API (allowing for bot-like interactions)
  • +
  • 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
  • @@ -341,18 +344,18 @@ Boo!
-
-

Bluesky – Identities

-
+
+

Bluesky – Identities

+
-
-

Bluesky Identities 1/4

+
+

Bluesky Identities 1/4

-
+

structurizr-1-017-BlueskyIdentity-01.png

@@ -392,31 +395,31 @@ did:plc:avzdf5esd7xpbgsgh7lx4kzq
-
-

Bluesky Identities 2/4

+
+

Bluesky Identities 2/4

-
+

structurizr-1-018-BlueskyIdentity-02.png

-
-

Bluesky Identities 3/4

+
+

Bluesky Identities 3/4

-
+

structurizr-1-019-BlueskyIdentity-03.png

-
-

Bluesky Identities 3/4

+
+

Bluesky Identities 4/4

-
+

structurizr-1-020-BlueskyIdentity-04.png

@@ -424,18 +427,18 @@ did:plc:avzdf5esd7xpbgsgh7lx4kzq
-
-

Bluesky – Feeds

-
+
+

Bluesky – Composable Feeds

+
-
-

Bluesky Feeds 1/3

+
+

Bluesky Composable Feeds 1/3

-
+

structurizr-1-021-BlueskyFeeds-01.png

@@ -464,21 +467,21 @@ did:plc:avzdf5esd7xpbgsgh7lx4kzq
-
-

Bluesky Feeds 2/3 – feeds as a separate application type

+
+

Bluesky Composable Feeds 2/3 – feeds as a separate application type

-
+

structurizr-1-023-BlueskyFeeds-03.png

-
-

Bluesky Feeds 3/3 – Generic feeds

+
+

Bluesky Composable Feeds 3/3 – Generic feeds

-
+

structurizr-1-024-BlueskyFeeds-04.png

@@ -486,18 +489,18 @@ did:plc:avzdf5esd7xpbgsgh7lx4kzq
-
-

Bluesky – The AppView

-
+
+

Bluesky – The AppView

+
-
-

Bluesky AppView 1/3

+
+

Bluesky AppView 1/3

-
+

structurizr-1-025-BlueskyAppView-01.png

@@ -508,30 +511,30 @@ did:plc:avzdf5esd7xpbgsgh7lx4kzq
  • The main application users interact with the AppView.
  • The AppView consists of the application (web, mobile, etc.) and the API
      -
    • 3rd-party applications (web, mobile, bots) can be created
    • +
    • 3rd-party clients (web, mobile, bots) can be created
  • -
  • The application is only a part of the AppView
  • -
  • Implements the lexicon of the service +
  • 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 application
  • -
  • AppView reads from the Feeds services, the Moderation services and the PDS itelf
  • +
  • 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

    +
    +

    Bluesky AppView 2/3 – A 3rd-party independent AppView

    -
    +

    structurizr-1-027-BlueskyAppView-03.png

    @@ -542,19 +545,19 @@ did:plc:avzdf5esd7xpbgsgh7lx4kzq
  • The main application users interact with the AppView.
  • The AppView consists of the application (web, mobile, etc.) and the API
      -
    • 3rd-party applications (web, mobile, bots) can be created
    • +
    • 3rd-party clients (web, mobile, bots) can be created
  • -
  • The application is only a part of the AppView
  • -
  • Implements the lexicon of the service +
  • 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 application
  • -
  • 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 application and APIs) … +
  • 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.
    • @@ -565,17 +568,216 @@ did:plc:avzdf5esd7xpbgsgh7lx4kzq
  • -
    -

    Bluesky AppView 3/3 – Generic AppView

    +
    +

    Bluesky AppView 3/3 – Generic AppView

    -
    +

    structurizr-1-028-BlueskyAppView-04.png

    +
    +
    +

    Bluesky – The Relay and the PDS

    +
    +
    +
    +
    +

    Bluesky Relay 1/2 – 1 PDS into many

    +
    + +
    + +
    +

    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

    +
    + +
    + +
    +

    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

    +
    + +
    +

    structurizr-1-032-BlueskyPDS-01.png +

    +
    +
    +
    +
    +

    Bluesky PDS 2/3 – An independent PDS: "federation" of a sort

    +
    + +
    +

    structurizr-1-034-BlueskyPDS-03.png +

    +
    +
    +
    +
    +

    Bluesky PDS 3/3 – PDS: "federation" of a sort

    +
    + +
    +

    structurizr-1-035-BlueskyPDS-04.png +

    +
    +
    +
    +
    +
    +
    +

    Bluesky – Moderation

    +
    +
    +
    +
    +

    Bluesky Moderation 1/2

    +
    + +
    + +
    +

    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

    +
    + +
    + +
    +

    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

    +
    + +
    +

    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
    • + +
    +
    +
    +
    diff --git a/BlueskyArchitecture.org b/BlueskyArchitecture.org index 96bc50b..e8bef3c 100644 --- a/BlueskyArchitecture.org +++ b/BlueskyArchitecture.org @@ -197,8 +197,8 @@ #+REVEAL_HTML:
    #+ATTR_REVEAL: :frag (appear) - - User interfaces with an app hosted by the /AppView/ - - The /AppView/ includes an API (allowing for bot-like interactions) + - 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 @@ -245,13 +245,13 @@ #+ATTR_HTML: :width 100% file:structurizr-1-019-BlueskyIdentity-03.png #+REVEAL_HTML:
    -** Bluesky Identities 3/4 +** Bluesky Identities 4/4 #+REVEAL_HTML:
    #+ATTR_HTML: :width 100% file:structurizr-1-020-BlueskyIdentity-04.png #+REVEAL_HTML:
    -* Bluesky -- Feeds -** Bluesky Feeds 1/3 +* Bluesky -- Composable Feeds +** Bluesky Composable Feeds 1/3 #+REVEAL_HTML:
    #+REVEAL_HTML:
    @@ -273,12 +273,12 @@ - The feeds get relevant posts from the PDS #+REVEAL_HTML:
    #+REVEAL_HTML:
    -** Bluesky Feeds 2/3 -- feeds as a separate application type +** Bluesky Composable Feeds 2/3 -- feeds as a separate application type #+REVEAL_HTML:
    #+ATTR_HTML: :width 100% file:structurizr-1-023-BlueskyFeeds-03.png #+REVEAL_HTML:
    -** Bluesky Feeds 3/3 -- Generic feeds +** Bluesky Composable Feeds 3/3 -- Generic feeds #+REVEAL_HTML:
    #+ATTR_HTML: :width 100% file:structurizr-1-024-BlueskyFeeds-04.png @@ -296,12 +296,12 @@ #+ATTR_REVEAL: :frag (appear) - The main application users interact with the /AppView/. - The /AppView/ consists of the application (web, mobile, etc.) and the API - + 3rd-party applications (web, mobile, bots) can be created - - The application is only a part of the /AppView/ - - Implements the /lexicon/ of the service + + 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 application - - /AppView/ reads from the Feeds services, the Moderation services and the PDS itelf + - 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 #+REVEAL_HTML:
    #+REVEAL_HTML:
    @@ -314,17 +314,17 @@ #+REVEAL_HTML:
    #+REVEAL_HTML:
    - #+ATTR_REVEAL: :frag (none none none none none none appear) + #+ATTR_REVEAL: :frag (none none none none none none none appear) - The main application users interact with the /AppView/. - The /AppView/ consists of the application (web, mobile, etc.) and the API - + 3rd-party applications (web, mobile, bots) can be created - - The application is only a part of the /AppView/ - - Implements the /lexicon/ of the service + + 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 application - - /AppView/ reads from the Feeds services, the Moderation services and the PDS itelf + - 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 application and APIs) ... + - 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. #+REVEAL_HTML:
    @@ -334,3 +334,116 @@ #+ATTR_HTML: :width 70% file:structurizr-1-028-BlueskyAppView-04.png #+REVEAL_HTML:
    +* Bluesky -- The Relay and the PDS +** Bluesky Relay 1/2 -- 1 PDS into many + #+REVEAL_HTML:
    + + #+REVEAL_HTML:
    + #+ATTR_HTML: :width 100% + file:structurizr-1-029-BlueskyRelay-01.png + #+REVEAL_HTML:
    + + #+REVEAL_HTML:
    + #+ATTR_REVEAL: :frag (appear) + - Initially, Bluesky had just 1 PDS + - Separated out into multiple PDSs for performance reasons + #+REVEAL_HTML:
    + #+REVEAL_HTML:
    +** Bluesky Relay 2/2 -- Relay, as a proxy to the PDSes + #+REVEAL_HTML:
    + + #+REVEAL_HTML:
    + #+ATTR_HTML: :width 100% + file:structurizr-1-030-BlueskyRelay-02.png + #+REVEAL_HTML:
    + + #+REVEAL_HTML:
    + #+ATTR_REVEAL: :frag (none none appear) + - 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*. + #+REVEAL_HTML:
    + #+REVEAL_HTML:
    +** Bluesky PDS 1/3 -- An independent PDS: "federation" of a sort + #+REVEAL_HTML:
    + #+ATTR_HTML: :width 90% + file:structurizr-1-032-BlueskyPDS-01.png + #+REVEAL_HTML:
    +** Bluesky PDS 2/3 -- An independent PDS: "federation" of a sort + #+REVEAL_HTML:
    + #+ATTR_HTML: :width 90% + file:structurizr-1-034-BlueskyPDS-03.png + #+REVEAL_HTML:
    +** Bluesky PDS 3/3 -- PDS: "federation" of a sort + #+REVEAL_HTML:
    + #+ATTR_HTML: :width 80% + file:structurizr-1-035-BlueskyPDS-04.png + #+REVEAL_HTML:
    +* Bluesky -- Moderation +** Bluesky Moderation 1/2 + #+REVEAL_HTML:
    + + #+REVEAL_HTML:
    + #+ATTR_HTML: :width 100% + file:structurizr-1-036-BlueskyModeration-01.png + #+REVEAL_HTML:
    + + #+REVEAL_HTML:
    + #+ATTR_REVEAL: :frag (appear) + - 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[fn::Sarcasm] + - But separate moderation services can be implemented by 3rd parties + #+REVEAL_HTML:
    + #+REVEAL_HTML:
    +** Bluesky Moderation 2/2 -- A 3rd-party independent Moderation service + #+REVEAL_HTML:
    + + #+REVEAL_HTML:
    + #+ATTR_HTML: :width 100% + file:structurizr-1-038-BlueskyModeration-03.png + #+REVEAL_HTML:
    + + #+REVEAL_HTML:
    + #+ATTR_REVEAL: :frag (none none none none appear) + - 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 + #+REVEAL_HTML:
    + #+REVEAL_HTML:
    +* Bluesky +** Bluesky -- Current architecture + #+REVEAL_HTML:
    + #+ATTR_HTML: :width 100% + file:structurizr-1-038-BlueskyModeration-03.png + #+REVEAL_HTML:
    +** Bluesky -- Roadmap + #+REVEAL_HTML:
    + Planned for 2024 + #+ATTR_REVEAL: :frag (appear) + - 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 + #+REVEAL_HTML:
    +* Resources and further reading