Completion and some refinements

This commit is contained in:
Éibhear Ó hAnluain 2024-05-20 16:43:17 +01:00
parent a08c1ed001
commit 270c84665b
Signed by: eibhear
GPG key ID: D124FE9CF2177106
2 changed files with 453 additions and 138 deletions

View file

@ -27,21 +27,24 @@
<h2>Table of Contents</h2>
<div id="text-table-of-contents" role="doc-toc">
<ul>
<li><a href="#/slide-org93a8805">Introduction</a></li>
<li><a href="#/slide-org26c71e1">General social media architectures</a></li>
<li><a href="#/slide-orgad41de2">Federated social media services</a></li>
<li><a href="#/slide-org3bda0cb">Bluesky</a></li>
<li><a href="#/slide-org6396db6">Bluesky &#x2013; Identities</a></li>
<li><a href="#/slide-org0c5cce8">Bluesky &#x2013; Feeds</a></li>
<li><a href="#/slide-org79115e8">Bluesky &#x2013; The AppView</a></li>
<li><a href="#/slide-org439f31d">Introduction</a></li>
<li><a href="#/slide-org6e7733f">General social media architectures</a></li>
<li><a href="#/slide-org8ef79c3">Federated social media services</a></li>
<li><a href="#/slide-org65b0dc3">Bluesky</a></li>
<li><a href="#/slide-org9f7774d">Bluesky &#x2013; Identities</a></li>
<li><a href="#/slide-org5df3403">Bluesky &#x2013; Composable Feeds</a></li>
<li><a href="#/slide-orge11e5e2">Bluesky &#x2013; The AppView</a></li>
<li><a href="#/slide-org52340f2">Bluesky &#x2013; The Relay and the PDS</a></li>
<li><a href="#/slide-org51320a4">Bluesky &#x2013; Moderation</a></li>
<li><a href="#/slide-orga65e0bd">Bluesky</a></li>
</ul>
</div>
</div>
</section>
<section>
<section id="slide-org93a8805" data-background="./bCardBackground.png">
<h2 id="org93a8805">Introduction</h2>
<section id="slide-org439f31d" data-background="./bCardBackground.png">
<h2 id="org439f31d">Introduction</h2>
<div class="e-frame">
<p>
Boo!
@ -50,28 +53,28 @@ Boo!
</section>
</section>
<section>
<section id="slide-org26c71e1" data-background="./bCardBackground.png">
<h2 id="org26c71e1">General social media architectures</h2>
<div class="outline-text-2" id="text-org26c71e1">
<section id="slide-org6e7733f" data-background="./bCardBackground.png">
<h2 id="org6e7733f">General social media architectures</h2>
<div class="outline-text-2" id="text-org6e7733f">
</div>
</section>
<section id="slide-org47f6f38" data-background="./bCardBackground.png">
<h3 id="org47f6f38">Simplistic view 1/2 &#x2013; overview</h3>
<section id="slide-org5776716" data-background="./bCardBackground.png">
<h3 id="org5776716">Simplistic view 1/2 &#x2013; overview</h3>
<div class="e-frame">
<div id="org54aa8e9" class="figure">
<div id="org54c3da0" class="figure">
<p><img src="structurizr-1-001-GenericSocial-01.png" alt="structurizr-1-001-GenericSocial-01.png" width="90%" />
</p>
</div>
</div>
</section>
<section id="slide-org4adbb43" data-background="./bCardBackground.png">
<h3 id="org4adbb43">Simplistic view 2/2 &#x2013; services</h3>
<section id="slide-orgdc83d99" data-background="./bCardBackground.png">
<h3 id="orgdc83d99">Simplistic view 2/2 &#x2013; services</h3>
<div class="gridded_frame_with_columns e-frame">
<div class="one_of_2_columns">
<div id="org4b7cca7" class="figure">
<div id="org7c2cc01" class="figure">
<p><img src="structurizr-1-002-GenericSocial-02.png" alt="structurizr-1-002-GenericSocial-02.png" width="40%" />
</p>
</div>
@ -87,23 +90,23 @@ Boo!
</div>
</div>
</section>
<section id="slide-org2595986" data-background="./bCardBackground.png">
<h3 id="org2595986">More realistic view 1/4 &#x2013; overview</h3>
<section id="slide-orgbaaaedc" data-background="./bCardBackground.png">
<h3 id="orgbaaaedc">More realistic view 1/4 &#x2013; overview</h3>
<div class="e-frame">
<div id="orgc4ff576" class="figure">
<div id="org38e814d" class="figure">
<p><img src="structurizr-1-003-RealisticSocial-01.png" alt="structurizr-1-003-RealisticSocial-01.png" width="90%" />
</p>
</div>
</div>
</section>
<section id="slide-orga2df08a" data-background="./bCardBackground.png">
<h3 id="orga2df08a">More realistic view 2/4 &#x2013; basic services</h3>
<section id="slide-orga25649e" data-background="./bCardBackground.png">
<h3 id="orga25649e">More realistic view 2/4 &#x2013; basic services</h3>
<div class="gridded_frame_with_columns e-frame">
<div class="one_of_2_columns">
<div id="orgd65630e" class="figure">
<div id="orgfc2b00f" class="figure">
<p><img src="structurizr-1-004-RealisticSocial-02.png" alt="structurizr-1-004-RealisticSocial-02.png" width="70%" />
</p>
</div>
@ -121,13 +124,13 @@ Boo!
</div>
</div>
</section>
<section id="slide-orgaee48ac" data-background="./bCardBackground.png">
<h3 id="orgaee48ac">More realistic view 3/4 &#x2013; the algorithm</h3>
<section id="slide-org457e7cb" data-background="./bCardBackground.png">
<h3 id="org457e7cb">More realistic view 3/4 &#x2013; the algorithm</h3>
<div class="gridded_frame_with_columns e-frame">
<div class="one_of_2_columns">
<div id="org69ec8e9" class="figure">
<div id="org313e509" class="figure">
<p><img src="structurizr-1-005-RealisticSocial-03.png" alt="structurizr-1-005-RealisticSocial-03.png" width="70%" />
</p>
</div>
@ -146,13 +149,13 @@ Boo!
</div>
</div>
</section>
<section id="slide-orga8647d5" data-background="./bCardBackground.png">
<h3 id="orga8647d5">More realistic view 4/4 &#x2013; content moderation</h3>
<section id="slide-org446aa34" data-background="./bCardBackground.png">
<h3 id="org446aa34">More realistic view 4/4 &#x2013; content moderation</h3>
<div class="gridded_frame_with_columns e-frame">
<div class="one_of_2_columns">
<div id="org3b0659e" class="figure">
<div id="orgcdaa568" class="figure">
<p><img src="structurizr-1-006-RealisticSocial-04.png" alt="structurizr-1-006-RealisticSocial-04.png" width="100%" />
</p>
</div>
@ -174,28 +177,28 @@ Boo!
</section>
</section>
<section>
<section id="slide-orgad41de2" data-background="./bCardBackground.png">
<h2 id="orgad41de2">Federated social media services</h2>
<div class="outline-text-2" id="text-orgad41de2">
<section id="slide-org8ef79c3" data-background="./bCardBackground.png">
<h2 id="org8ef79c3">Federated social media services</h2>
<div class="outline-text-2" id="text-org8ef79c3">
</div>
</section>
<section id="slide-org38b1172" data-background="./bCardBackground.png">
<h3 id="org38b1172">Federated services 1/8 &#x2013; overview</h3>
<section id="slide-org4f6e3ba" data-background="./bCardBackground.png">
<h3 id="org4f6e3ba">Federated services 1/8 &#x2013; overview</h3>
<div class="e-frame">
<div id="orga57c504" class="figure">
<div id="orgd74786f" class="figure">
<p><img src="structurizr-1-007-FederatedSocial-01.png" alt="structurizr-1-007-FederatedSocial-01.png" width="75%" />
</p>
</div>
</div>
</section>
<section id="slide-org220840e" data-background="./bCardBackground.png">
<h3 id="org220840e">Federated services 2/8 &#x2013; internal, administration and content moderation services</h3>
<section id="slide-org498488e" data-background="./bCardBackground.png">
<h3 id="org498488e">Federated services 2/8 &#x2013; internal, administration and content moderation services</h3>
<div class="gridded_frame_with_columns e-frame">
<div class="one_of_2_columns">
<div id="org28dffa4" class="figure">
<div id="orgbb1b831" class="figure">
<p><img src="structurizr-1-008-FederatedSocial-02.png" alt="structurizr-1-008-FederatedSocial-02.png" width="70%" />
</p>
</div>
@ -216,13 +219,13 @@ Boo!
</div>
</div>
</section>
<section id="slide-org263cd7c" data-background="./bCardBackground.png">
<h3 id="org263cd7c">Federated services 3/8 &#x2013; federation 1</h3>
<section id="slide-org20fc0d6" data-background="./bCardBackground.png">
<h3 id="org20fc0d6">Federated services 3/8 &#x2013; federation 1</h3>
<div class="gridded_frame_with_columns e-frame">
<div class="one_of_2_columns" style="width: 60%">
<div id="org05f7137" class="figure">
<div id="orgcf055a5" class="figure">
<p><img src="structurizr-1-009-FederatedSocial-03.png" alt="structurizr-1-009-FederatedSocial-03.png" width="100%" />
</p>
</div>
@ -247,51 +250,51 @@ Boo!
</div>
</div>
</section>
<section id="slide-orgc7306f8" data-background="./bCardBackground.png">
<h3 id="orgc7306f8">Federated services 4/8 &#x2013; federation 2</h3>
<section id="slide-org49cb2dd" data-background="./bCardBackground.png">
<h3 id="org49cb2dd">Federated services 4/8 &#x2013; federation 2</h3>
<div class="e-frame">
<div id="org9df0f59" class="figure">
<div id="org1105f9a" class="figure">
<p><img src="structurizr-1-010-FederatedSocial-04.png" alt="structurizr-1-010-FederatedSocial-04.png" width="75%" />
</p>
</div>
</div>
</section>
<section id="slide-org075c52b" data-background="./bCardBackground.png">
<h3 id="org075c52b">Federated services 5/8 &#x2013; federation 3</h3>
<section id="slide-org82ea5ed" data-background="./bCardBackground.png">
<h3 id="org82ea5ed">Federated services 5/8 &#x2013; federation 3</h3>
<div class="e-frame">
<div id="org678c821" class="figure">
<div id="orgc7c1b01" class="figure">
<p><img src="structurizr-1-011-FederatedSocial-05.png" alt="structurizr-1-011-FederatedSocial-05.png" width="75%" />
</p>
</div>
</div>
</section>
<section id="slide-org049d4e6" data-background="./bCardBackground.png">
<h3 id="org049d4e6">Federated services 6/8 &#x2013; federation 4</h3>
<section id="slide-orge4a61a1" data-background="./bCardBackground.png">
<h3 id="orge4a61a1">Federated services 6/8 &#x2013; federation 4</h3>
<div class="e-frame">
<div id="org0f1f5c2" class="figure">
<div id="orgb225f3a" class="figure">
<p><img src="structurizr-1-012-FederatedSocial-06.png" alt="structurizr-1-012-FederatedSocial-06.png" width="75%" />
</p>
</div>
</div>
</section>
<section id="slide-orge0823d2" data-background="./bCardBackground.png">
<h3 id="orge0823d2">Federated services 7/8 &#x2013; federation 5</h3>
<section id="slide-org2ea7875" data-background="./bCardBackground.png">
<h3 id="org2ea7875">Federated services 7/8 &#x2013; federation 5</h3>
<div class="e-frame">
<div id="org9439a7c" class="figure">
<div id="org9e7f7c7" class="figure">
<p><img src="structurizr-1-013-FederatedSocial-07.png" alt="structurizr-1-013-FederatedSocial-07.png" width="75%" />
</p>
</div>
</div>
</section>
<section id="slide-org3f86b37" data-background="./bCardBackground.png">
<h3 id="org3f86b37">Federated services 8/8 &#x2013; federation 6</h3>
<section id="slide-orgd148983" data-background="./bCardBackground.png">
<h3 id="orgd148983">Federated services 8/8 &#x2013; federation 6</h3>
<div class="e-frame">
<div id="org6733f9f" class="figure">
<div id="org1718043" class="figure">
<p><img src="structurizr-1-014-FederatedSocial-08.png" alt="structurizr-1-014-FederatedSocial-08.png" width="75%" />
</p>
</div>
@ -299,28 +302,28 @@ Boo!
</section>
</section>
<section>
<section id="slide-org3bda0cb" data-background="./bCardBackground.png">
<h2 id="org3bda0cb">Bluesky</h2>
<div class="outline-text-2" id="text-org3bda0cb">
<section id="slide-org65b0dc3" data-background="./bCardBackground.png">
<h2 id="org65b0dc3">Bluesky</h2>
<div class="outline-text-2" id="text-org65b0dc3">
</div>
</section>
<section id="slide-org1a96ca1" data-background="./bCardBackground.png">
<h3 id="org1a96ca1">Basic Bluesky 1/2</h3>
<section id="slide-org7769bb0" data-background="./bCardBackground.png">
<h3 id="org7769bb0">Basic Bluesky 1/2</h3>
<div class="e-frame">
<div id="orge9ee9f3" class="figure">
<div id="orge50a43a" class="figure">
<p><img src="structurizr-1-015-BlueskyBasic-01.png" alt="structurizr-1-015-BlueskyBasic-01.png" width="100%" />
</p>
</div>
</div>
</section>
<section id="slide-org7ffed55" data-background="./bCardBackground.png">
<h3 id="org7ffed55">Basic Bluesky 2/2</h3>
<section id="slide-orgc01871a" data-background="./bCardBackground.png">
<h3 id="orgc01871a">Basic Bluesky 2/2</h3>
<div class="gridded_frame_with_columns e-frame">
<div class="one_of_2_columns" style="width: 70%">
<div id="orgba60da0" class="figure">
<div id="orga23685f" class="figure">
<p><img src="structurizr-1-016-BlueskyBasic-02.png" alt="structurizr-1-016-BlueskyBasic-02.png" width="100%" />
</p>
</div>
@ -328,8 +331,8 @@ Boo!
<div class="one_of_2_columns" style="width: 30%">
<ul>
<li class="fragment appear">User interfaces with an app hosted by the <i>AppView</i></li>
<li class="fragment appear">The <i>AppView</i> includes an API (allowing for bot-like interactions)</li>
<li class="fragment appear">User interfaces with a client hosted by the <i>AppView</i></li>
<li class="fragment appear">The <i>AppView</i> includes an API (allowing for 3rd-party and bot-like clients)</li>
<li class="fragment appear">The <i>AppView</i> stores and reads data from the <i>Personal Data Server</i> (PDS)</li>
<li class="fragment appear">Bluesky resolved user identities using "DIDs" (Distributed IDs)</li>
<li class="fragment appear">The Bluesky admin uses a separate service for preparing algorithmic feeds</li>
@ -341,18 +344,18 @@ Boo!
</section>
</section>
<section>
<section id="slide-org6396db6" data-background="./bCardBackground.png">
<h2 id="org6396db6">Bluesky &#x2013; Identities</h2>
<div class="outline-text-2" id="text-org6396db6">
<section id="slide-org9f7774d" data-background="./bCardBackground.png">
<h2 id="org9f7774d">Bluesky &#x2013; Identities</h2>
<div class="outline-text-2" id="text-org9f7774d">
</div>
</section>
<section id="slide-org1b31b9a" data-background="./bCardBackground.png">
<h3 id="org1b31b9a">Bluesky Identities 1/4</h3>
<section id="slide-org35fd474" data-background="./bCardBackground.png">
<h3 id="org35fd474">Bluesky Identities 1/4</h3>
<div class="gridded_frame_with_columns e-frame">
<div class="one_of_2_columns" style="width: 35%">
<div id="org73f4b15" class="figure">
<div id="orgd6a681f" class="figure">
<p><img src="structurizr-1-017-BlueskyIdentity-01.png" alt="structurizr-1-017-BlueskyIdentity-01.png" width="100%" />
</p>
</div>
@ -392,31 +395,31 @@ did:plc:avzdf5esd7xpbgsgh7lx4kzq
</div>
</div>
</section>
<section id="slide-org1baca60" data-background="./bCardBackground.png">
<h3 id="org1baca60">Bluesky Identities 2/4</h3>
<section id="slide-org25541ae" data-background="./bCardBackground.png">
<h3 id="org25541ae">Bluesky Identities 2/4</h3>
<div class="e-frame">
<div id="org7d8d5a4" class="figure">
<div id="org9f711e0" class="figure">
<p><img src="structurizr-1-018-BlueskyIdentity-02.png" alt="structurizr-1-018-BlueskyIdentity-02.png" width="100%" />
</p>
</div>
</div>
</section>
<section id="slide-orgebce57a" data-background="./bCardBackground.png">
<h3 id="orgebce57a">Bluesky Identities 3/4</h3>
<section id="slide-org65f0db1" data-background="./bCardBackground.png">
<h3 id="org65f0db1">Bluesky Identities 3/4</h3>
<div class="e-frame">
<div id="org24dd312" class="figure">
<div id="org5ce6038" class="figure">
<p><img src="structurizr-1-019-BlueskyIdentity-03.png" alt="structurizr-1-019-BlueskyIdentity-03.png" width="100%" />
</p>
</div>
</div>
</section>
<section id="slide-org56cbb88" data-background="./bCardBackground.png">
<h3 id="org56cbb88">Bluesky Identities 3/4</h3>
<section id="slide-org637e8fd" data-background="./bCardBackground.png">
<h3 id="org637e8fd">Bluesky Identities 4/4</h3>
<div class="e-frame">
<div id="org5a7b5d8" class="figure">
<div id="orgf7cf1aa" class="figure">
<p><img src="structurizr-1-020-BlueskyIdentity-04.png" alt="structurizr-1-020-BlueskyIdentity-04.png" width="100%" />
</p>
</div>
@ -424,18 +427,18 @@ did:plc:avzdf5esd7xpbgsgh7lx4kzq
</section>
</section>
<section>
<section id="slide-org0c5cce8" data-background="./bCardBackground.png">
<h2 id="org0c5cce8">Bluesky &#x2013; Feeds</h2>
<div class="outline-text-2" id="text-org0c5cce8">
<section id="slide-org5df3403" data-background="./bCardBackground.png">
<h2 id="org5df3403">Bluesky &#x2013; Composable Feeds</h2>
<div class="outline-text-2" id="text-org5df3403">
</div>
</section>
<section id="slide-orga4e19d3" data-background="./bCardBackground.png">
<h3 id="orga4e19d3">Bluesky Feeds 1/3</h3>
<section id="slide-org51e85e7" data-background="./bCardBackground.png">
<h3 id="org51e85e7">Bluesky Composable Feeds 1/3</h3>
<div class="gridded_frame_with_columns e-frame">
<div class="one_of_2_columns" style="width: 70%">
<div id="org041552a" class="figure">
<div id="org247a668" class="figure">
<p><img src="structurizr-1-021-BlueskyFeeds-01.png" alt="structurizr-1-021-BlueskyFeeds-01.png" width="100%" />
</p>
</div>
@ -464,21 +467,21 @@ did:plc:avzdf5esd7xpbgsgh7lx4kzq
</div>
</div>
</section>
<section id="slide-orgbb3d261" data-background="./bCardBackground.png">
<h3 id="orgbb3d261">Bluesky Feeds 2/3 &#x2013; feeds as a separate application type</h3>
<section id="slide-orgb31733b" data-background="./bCardBackground.png">
<h3 id="orgb31733b">Bluesky Composable Feeds 2/3 &#x2013; feeds as a separate application type</h3>
<div class="e-frame">
<div id="orgeb73970" class="figure">
<div id="orge04b7c4" class="figure">
<p><img src="structurizr-1-023-BlueskyFeeds-03.png" alt="structurizr-1-023-BlueskyFeeds-03.png" width="100%" />
</p>
</div>
</div>
</section>
<section id="slide-org2348787" data-background="./bCardBackground.png">
<h3 id="org2348787">Bluesky Feeds 3/3 &#x2013; Generic feeds</h3>
<section id="slide-orgb808e53" data-background="./bCardBackground.png">
<h3 id="orgb808e53">Bluesky Composable Feeds 3/3 &#x2013; Generic feeds</h3>
<div class="e-frame">
<div id="org486bb3e" class="figure">
<div id="org712aaa9" class="figure">
<p><img src="structurizr-1-024-BlueskyFeeds-04.png" alt="structurizr-1-024-BlueskyFeeds-04.png" width="100%" />
</p>
</div>
@ -486,18 +489,18 @@ did:plc:avzdf5esd7xpbgsgh7lx4kzq
</section>
</section>
<section>
<section id="slide-org79115e8" data-background="./bCardBackground.png">
<h2 id="org79115e8">Bluesky &#x2013; The AppView</h2>
<div class="outline-text-2" id="text-org79115e8">
<section id="slide-orge11e5e2" data-background="./bCardBackground.png">
<h2 id="orge11e5e2">Bluesky &#x2013; The AppView</h2>
<div class="outline-text-2" id="text-orge11e5e2">
</div>
</section>
<section id="slide-org70c253d" data-background="./bCardBackground.png">
<h3 id="org70c253d">Bluesky AppView 1/3</h3>
<section id="slide-orgbd61d50" data-background="./bCardBackground.png">
<h3 id="orgbd61d50">Bluesky AppView 1/3</h3>
<div class="gridded_frame_with_columns e-frame">
<div class="one_of_2_columns" style="width: 60%">
<div id="orgd349f8e" class="figure">
<div id="orgba8ae33" class="figure">
<p><img src="structurizr-1-025-BlueskyAppView-01.png" alt="structurizr-1-025-BlueskyAppView-01.png" width="100%" />
</p>
</div>
@ -508,30 +511,30 @@ did:plc:avzdf5esd7xpbgsgh7lx4kzq
<li class="fragment appear">The main application users interact with the <i>AppView</i>.</li>
<li class="fragment appear">The <i>AppView</i> consists of the application (web, mobile, etc.) and the API
<ul>
<li>3rd-party applications (web, mobile, bots) can be created</li>
<li>3rd-party clients (web, mobile, bots) can be created</li>
</ul></li>
<li class="fragment appear">The application is only a part of the <i>AppView</i></li>
<li class="fragment appear">Implements the <i>lexicon</i> of the service
<li class="fragment appear">The client is only a part of the <i>AppView</i></li>
<li class="fragment appear">The <i>AppView</i> implements the <i>lexicon</i> of the service
<ul>
<li>Converts the <i>data</i> in the PDS into the social media <i>information</i></li>
</ul></li>
<li class="fragment appear">Now implemented by Bluesky as a separate application</li>
<li class="fragment appear"><i>AppView</i> reads from the Feeds services, the Moderation services and the PDS itelf</li>
<li class="fragment appear">Now implemented by Bluesky as a separate service</li>
<li class="fragment appear"><i>AppView</i> reads from the feeds services, the moderation services and the PDS itelf</li>
<li class="fragment appear"><i>AppView</i> writes new posts, reposts, likes, replies, etc. to the PDS</li>
</ul>
</div>
</div>
</section>
<section id="slide-org1294eab" data-background="./bCardBackground.png">
<h3 id="org1294eab">Bluesky AppView 2/3 &#x2013; A 3rd-party independent AppView</h3>
<section id="slide-org4a993df" data-background="./bCardBackground.png">
<h3 id="org4a993df">Bluesky AppView 2/3 &#x2013; A 3rd-party independent AppView</h3>
<div class="gridded_frame_with_columns e-frame">
<div class="one_of_2_columns" style="width: 60%">
<div id="org60af8ea" class="figure">
<div id="org2602a3d" class="figure">
<p><img src="structurizr-1-027-BlueskyAppView-03.png" alt="structurizr-1-027-BlueskyAppView-03.png" width="100%" />
</p>
</div>
@ -542,19 +545,19 @@ did:plc:avzdf5esd7xpbgsgh7lx4kzq
<li>The main application users interact with the <i>AppView</i>.</li>
<li>The <i>AppView</i> consists of the application (web, mobile, etc.) and the API
<ul>
<li>3rd-party applications (web, mobile, bots) can be created</li>
<li>3rd-party clients (web, mobile, bots) can be created</li>
</ul></li>
<li>The application is only a part of the <i>AppView</i></li>
<li>Implements the <i>lexicon</i> of the service
<li>The client is only a part of the <i>AppView</i></li>
<li>The <i>AppView</i> implements the <i>lexicon</i> of the service
<ul>
<li>Converts the <i>data</i> in the PDS into the social media <i>information</i></li>
</ul></li>
<li>Now implemented by Bluesky as a separate application</li>
<li><i>AppView</i> reads from the Feeds services, the Moderation services and the PDS itelf</li>
<li class="fragment appear"><i>AppView</i> writes new posts, reposts, likes, replies, etc. to the PDS</li>
<li class="fragment appear">Third parties can also develop separate <i>AppViews</i> (the application and APIs) &#x2026;
<li>Now implemented by Bluesky as a separate service</li>
<li><i>AppView</i> reads from the feeds services, the moderation services and the PDS itelf</li>
<li><i>AppView</i> writes new posts, reposts, likes, replies, etc. to the PDS</li>
<li class="fragment appear">Third parties can also develop separate <i>AppViews</i> (the client and APIs) &#x2026;
<ul>
<li>Alternatives to Bluesky's own <i>AppView</i></li>
<li>Implement a new <i>lexicon</i> for, say, video sharing, long-form posts, etc.</li>
@ -565,17 +568,216 @@ did:plc:avzdf5esd7xpbgsgh7lx4kzq
</div>
</div>
</section>
<section id="slide-orga1d1aae" data-background="./bCardBackground.png">
<h3 id="orga1d1aae">Bluesky AppView 3/3 &#x2013; Generic AppView</h3>
<section id="slide-org7634484" data-background="./bCardBackground.png">
<h3 id="org7634484">Bluesky AppView 3/3 &#x2013; Generic AppView</h3>
<div class="e-frame">
<div id="org59a3109" class="figure">
<div id="orgb87e2fd" class="figure">
<p><img src="structurizr-1-028-BlueskyAppView-04.png" alt="structurizr-1-028-BlueskyAppView-04.png" width="70%" />
</p>
</div>
</div>
</section>
</section>
<section>
<section id="slide-org52340f2" data-background="./bCardBackground.png">
<h2 id="org52340f2">Bluesky &#x2013; The Relay and the PDS</h2>
<div class="outline-text-2" id="text-org52340f2">
</div>
</section>
<section id="slide-org3a00f76" data-background="./bCardBackground.png">
<h3 id="org3a00f76">Bluesky Relay 1/2 &#x2013; 1 PDS into many</h3>
<div class="gridded_frame_with_columns e-frame">
<div class="one_of_2_columns" style="width: 70%">
<div id="org92fc67a" class="figure">
<p><img src="structurizr-1-029-BlueskyRelay-01.png" alt="structurizr-1-029-BlueskyRelay-01.png" width="100%" />
</p>
</div>
</div>
<div class="one_of_2_columns" style="width: 30%">
<ul>
<li class="fragment appear">Initially, Bluesky had just 1 PDS</li>
<li class="fragment appear">Separated out into multiple PDSs for performance reasons</li>
</ul>
</div>
</div>
</section>
<section id="slide-org63f320a" data-background="./bCardBackground.png">
<h3 id="org63f320a">Bluesky Relay 2/2 &#x2013; Relay, as a proxy to the PDSes</h3>
<div class="gridded_frame_with_columns e-frame">
<div class="one_of_2_columns" style="width: 70%">
<div id="orgd973a34" class="figure">
<p><img src="structurizr-1-030-BlueskyRelay-02.png" alt="structurizr-1-030-BlueskyRelay-02.png" width="100%" />
</p>
</div>
</div>
<div class="one_of_2_columns" style="width: 30%">
<ul>
<li>Initially, Bluesky had just 1 PDS</li>
<li>Separated out into multiple PDSs for performance reasons</li>
<li class="fragment appear">Interfaces for reading PDSs now proxied through <i>the Relay</i></li>
<li class="fragment appear">The Relay stores metadata and indexes/indices of posts</li>
<li class="fragment appear">All information about posts are read from the Relay
<ul>
<li>the <i>AppView</i></li>
<li>algorithmic feeds services</li>
<li>moderation</li>
</ul></li>
<li class="fragment appear"><i>AppView</i> still writes to the PDS (new posts, etc.)</li>
<li class="fragment appear">With <i>the Relay</i>, we can now have <b>independent, self-hosted, PDSs</b>.</li>
</ul>
</div>
</div>
</section>
<section id="slide-org2d45136" data-background="./bCardBackground.png">
<h3 id="org2d45136">Bluesky PDS 1/3 &#x2013; An independent PDS: "federation" of a sort</h3>
<div class="e-frame">
<div id="org161a893" class="figure">
<p><img src="structurizr-1-032-BlueskyPDS-01.png" alt="structurizr-1-032-BlueskyPDS-01.png" width="90%" />
</p>
</div>
</div>
</section>
<section id="slide-orge850d7a" data-background="./bCardBackground.png">
<h3 id="orge850d7a">Bluesky PDS 2/3 &#x2013; An independent PDS: "federation" of a sort</h3>
<div class="e-frame">
<div id="orgb86305b" class="figure">
<p><img src="structurizr-1-034-BlueskyPDS-03.png" alt="structurizr-1-034-BlueskyPDS-03.png" width="90%" />
</p>
</div>
</div>
</section>
<section id="slide-orgd566c66" data-background="./bCardBackground.png">
<h3 id="orgd566c66">Bluesky PDS 3/3 &#x2013; PDS: "federation" of a sort</h3>
<div class="e-frame">
<div id="orgc154ec4" class="figure">
<p><img src="structurizr-1-035-BlueskyPDS-04.png" alt="structurizr-1-035-BlueskyPDS-04.png" width="80%" />
</p>
</div>
</div>
</section>
</section>
<section>
<section id="slide-org51320a4" data-background="./bCardBackground.png">
<h2 id="org51320a4">Bluesky &#x2013; Moderation</h2>
<div class="outline-text-2" id="text-org51320a4">
</div>
</section>
<section id="slide-orgfe850a1" data-background="./bCardBackground.png">
<h3 id="orgfe850a1">Bluesky Moderation 1/2</h3>
<div class="gridded_frame_with_columns e-frame">
<div class="one_of_2_columns" style="width: 70%">
<div id="org5ce971f" class="figure">
<p><img src="structurizr-1-036-BlueskyModeration-01.png" alt="structurizr-1-036-BlueskyModeration-01.png" width="100%" />
</p>
</div>
</div>
<div class="one_of_2_columns" style="width: 30%">
<ul>
<li class="fragment appear">Moderation separated out as a distinct service</li>
<li class="fragment appear">Moderation tooling reads from the Relay</li>
<li class="fragment appear">Bluesky maintains and operates the top-level moderation
<ul>
<li>Suppresses the really bad stuff, like illegal and abusive material</li>
<li>and really, really, <i>really</i> bad stuff like copyright infringement<sup><a id="fnr.1" class="footref" href="#fn.1" role="doc-backlink">1</a></sup></li>
</ul></li>
<li class="fragment appear">But separate moderation services can be implemented by 3rd parties</li>
</ul>
</div>
</div>
</section>
<section id="slide-orgf799b48" data-background="./bCardBackground.png">
<h3 id="orgf799b48">Bluesky Moderation 2/2 &#x2013; A 3rd-party independent Moderation service</h3>
<div class="gridded_frame_with_columns e-frame">
<div class="one_of_2_columns" style="width: 70%">
<div id="org88758eb" class="figure">
<p><img src="structurizr-1-038-BlueskyModeration-03.png" alt="structurizr-1-038-BlueskyModeration-03.png" width="100%" />
</p>
</div>
</div>
<div class="one_of_2_columns" style="width: 30%">
<ul>
<li>Moderation separated out as a distinct service</li>
<li>Moderation tooling reads from the Relay</li>
<li>Bluesky maintains and operates the top-level moderation
<ul>
<li>Suppresses the really bad stuff, like illegal and abusive material</li>
<li>and really, really, <i>really</i> bad stuff like copyright infringement</li>
</ul></li>
<li>But separate moderation services can be implemented by 3rd parties</li>
<li class="fragment appear">User subscribes to moderation service</li>
<li class="fragment appear">Users' feeds have material removed or elided by the moderation service</li>
<li class="fragment appear">User can't unsubscribe from Bluesky's moderation</li>
</ul>
</div>
</div>
</section>
</section>
<section>
<section id="slide-orga65e0bd" data-background="./bCardBackground.png">
<h2 id="orga65e0bd">Bluesky</h2>
<div class="outline-text-2" id="text-orga65e0bd">
</div>
</section>
<section id="slide-org695b127" data-background="./bCardBackground.png">
<h3 id="org695b127">Bluesky &#x2013; Current architecture</h3>
<div class="gridded_frame_with_columns e-frame">
<div id="orgf049d21" class="figure">
<p><img src="structurizr-1-038-BlueskyModeration-03.png" alt="structurizr-1-038-BlueskyModeration-03.png" width="100%" />
</p>
</div>
</div>
</section>
<section id="slide-org13ab9b9" data-background="./bCardBackground.png">
<h3 id="org13ab9b9">Bluesky &#x2013; Roadmap</h3>
<div class="e-frame">
<p>
Planned for 2024
</p>
<ul>
<li class="fragment appear">Private/Direct messages (DMs)
<ul>
<li>E2E Encrypted</li>
<li>1:1 initially, but group DMs planned</li>
</ul></li>
<li class="fragment appear">Video sharing
<ul>
<li>short clips, 90s or so.</li>
</ul></li>
<li class="fragment appear">Improved custom feeds</li>
<li class="fragment appear">Improved anti-harassment</li>
<li class="fragment appear">OAuth &#x2013; for allowing 3rd-party clients to authenticate without
an application password</li>
</ul>
</div>
</section>
</section>
</div>
</div>
<script src="./reveal.js/dist/reveal.js"></script>

View file

@ -197,8 +197,8 @@
#+REVEAL_HTML: <div class="one_of_2_columns" style="width: 30%">
#+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: </div>
** Bluesky Identities 3/4
** Bluesky Identities 4/4
#+REVEAL_HTML: <div class="e-frame">
#+ATTR_HTML: :width 100%
file:structurizr-1-020-BlueskyIdentity-04.png
#+REVEAL_HTML: </div>
* Bluesky -- Feeds
** Bluesky Feeds 1/3
* Bluesky -- Composable Feeds
** Bluesky Composable Feeds 1/3
#+REVEAL_HTML: <div class="gridded_frame_with_columns e-frame">
#+REVEAL_HTML: <div class="one_of_2_columns" style="width: 70%">
@ -273,12 +273,12 @@
- The feeds get relevant posts from the PDS
#+REVEAL_HTML: </div>
#+REVEAL_HTML: </div>
** Bluesky Feeds 2/3 -- feeds as a separate application type
** Bluesky Composable Feeds 2/3 -- feeds as a separate application type
#+REVEAL_HTML: <div class="e-frame">
#+ATTR_HTML: :width 100%
file:structurizr-1-023-BlueskyFeeds-03.png
#+REVEAL_HTML: </div>
** Bluesky Feeds 3/3 -- Generic feeds
** Bluesky Composable Feeds 3/3 -- Generic feeds
#+REVEAL_HTML: <div class="e-frame">
#+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: </div>
#+REVEAL_HTML: </div>
@ -314,17 +314,17 @@
#+REVEAL_HTML: </div>
#+REVEAL_HTML: <div class="one_of_2_columns" style="width: 40%">
#+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: </div>
@ -334,3 +334,116 @@
#+ATTR_HTML: :width 70%
file:structurizr-1-028-BlueskyAppView-04.png
#+REVEAL_HTML: </div>
* Bluesky -- The Relay and the PDS
** Bluesky Relay 1/2 -- 1 PDS into many
#+REVEAL_HTML: <div class="gridded_frame_with_columns e-frame">
#+REVEAL_HTML: <div class="one_of_2_columns" style="width: 70%">
#+ATTR_HTML: :width 100%
file:structurizr-1-029-BlueskyRelay-01.png
#+REVEAL_HTML: </div>
#+REVEAL_HTML: <div class="one_of_2_columns" style="width: 30%">
#+ATTR_REVEAL: :frag (appear)
- Initially, Bluesky had just 1 PDS
- Separated out into multiple PDSs for performance reasons
#+REVEAL_HTML: </div>
#+REVEAL_HTML: </div>
** Bluesky Relay 2/2 -- Relay, as a proxy to the PDSes
#+REVEAL_HTML: <div class="gridded_frame_with_columns e-frame">
#+REVEAL_HTML: <div class="one_of_2_columns" style="width: 70%">
#+ATTR_HTML: :width 100%
file:structurizr-1-030-BlueskyRelay-02.png
#+REVEAL_HTML: </div>
#+REVEAL_HTML: <div class="one_of_2_columns" style="width: 30%">
#+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: </div>
#+REVEAL_HTML: </div>
** Bluesky PDS 1/3 -- An independent PDS: "federation" of a sort
#+REVEAL_HTML: <div class="e-frame">
#+ATTR_HTML: :width 90%
file:structurizr-1-032-BlueskyPDS-01.png
#+REVEAL_HTML: </div>
** Bluesky PDS 2/3 -- An independent PDS: "federation" of a sort
#+REVEAL_HTML: <div class="e-frame">
#+ATTR_HTML: :width 90%
file:structurizr-1-034-BlueskyPDS-03.png
#+REVEAL_HTML: </div>
** Bluesky PDS 3/3 -- PDS: "federation" of a sort
#+REVEAL_HTML: <div class="e-frame">
#+ATTR_HTML: :width 80%
file:structurizr-1-035-BlueskyPDS-04.png
#+REVEAL_HTML: </div>
* Bluesky -- Moderation
** Bluesky Moderation 1/2
#+REVEAL_HTML: <div class="gridded_frame_with_columns e-frame">
#+REVEAL_HTML: <div class="one_of_2_columns" style="width: 70%">
#+ATTR_HTML: :width 100%
file:structurizr-1-036-BlueskyModeration-01.png
#+REVEAL_HTML: </div>
#+REVEAL_HTML: <div class="one_of_2_columns" style="width: 30%">
#+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: </div>
#+REVEAL_HTML: </div>
** Bluesky Moderation 2/2 -- A 3rd-party independent Moderation service
#+REVEAL_HTML: <div class="gridded_frame_with_columns e-frame">
#+REVEAL_HTML: <div class="one_of_2_columns" style="width: 70%">
#+ATTR_HTML: :width 100%
file:structurizr-1-038-BlueskyModeration-03.png
#+REVEAL_HTML: </div>
#+REVEAL_HTML: <div class="one_of_2_columns" style="width: 30%">
#+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: </div>
#+REVEAL_HTML: </div>
* Bluesky
** Bluesky -- Current architecture
#+REVEAL_HTML: <div class="gridded_frame_with_columns e-frame">
#+ATTR_HTML: :width 100%
file:structurizr-1-038-BlueskyModeration-03.png
#+REVEAL_HTML: </div>
** Bluesky -- Roadmap
#+REVEAL_HTML: <div class="e-frame">
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: </div>
* Resources and further reading