315 lines
11 KiB
HTML
315 lines
11 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="utf-8"/>
|
|
<title>Bluesky Architecture compared to other social media services</title>
|
|
<meta name="author" content="Éibhear Ó hAnluain"/>
|
|
<meta name="description" content="A discussion of Bluesky's architecture as it relates to other social media services"/>
|
|
<meta name="keywords" content=""/>
|
|
<style type="text/css">
|
|
.underline { text-decoration: underline; }
|
|
</style>
|
|
<link rel="stylesheet" href="./reveal.js/dist/reveal.css"/>
|
|
|
|
<link rel="stylesheet" href="./reveal.js/dist/theme/white.css" id="theme"/>
|
|
|
|
<link rel="stylesheet" href="./e-reveal.css"/>
|
|
|
|
<link rel="stylesheet" href="./gridding.css"/>
|
|
</head>
|
|
<body>
|
|
<div class="reveal">
|
|
<div class="slides">
|
|
<section id="sec-title-slide" data-background="./bCardBackground.png"><h1 class="title">Bluesky Architecture compared to other social media services</h1><p class="subtitle"><a href="?print-pdf">Printable version</a></p>
|
|
<h2 class="author">Éibhear Ó hAnluain</h2><h2 class="email"><a href="mailto:eibhear.geo@gmail.com">eibhear.geo@gmail.com</a></h2><h2 class="date">2024-05-24 Fri 00:00</h2>
|
|
</section>
|
|
<section id="sec-table-of-contents" data-background="./bCardBackground.png"><div id="table-of-contents" role="doc-toc">
|
|
<h2>Table of Contents</h2>
|
|
<div id="text-table-of-contents" role="doc-toc">
|
|
<ul>
|
|
<li><a href="#/slide-orgc2daf2a">Introduction</a></li>
|
|
<li><a href="#/slide-orgad38665">General social media architectures</a></li>
|
|
<li><a href="#/slide-org7a00c66">Federated social media services</a></li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<section>
|
|
<section id="slide-orgc2daf2a" data-background="./bCardBackground.png">
|
|
<h2 id="orgc2daf2a">Introduction</h2>
|
|
<div class="e-frame">
|
|
<p>
|
|
Boo!
|
|
</p>
|
|
</div>
|
|
</section>
|
|
</section>
|
|
<section>
|
|
<section id="slide-orgad38665" data-background="./bCardBackground.png">
|
|
<h2 id="orgad38665">General social media architectures</h2>
|
|
<div class="outline-text-2" id="text-orgad38665">
|
|
</div>
|
|
</section>
|
|
<section id="slide-org3cd6edb" data-background="./bCardBackground.png">
|
|
<h3 id="org3cd6edb">Simplistic view 1/2 – overview</h3>
|
|
<div class="e-frame">
|
|
|
|
<div id="org87909da" 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-org90a0f8b" data-background="./bCardBackground.png">
|
|
<h3 id="org90a0f8b">Simplistic view 2/2 – services</h3>
|
|
<div class="gridded_frame_with_columns e-frame">
|
|
|
|
<div class="one_of_2_columns">
|
|
|
|
<div id="org497fd94" class="figure">
|
|
<p><img src="structurizr-1-002-GenericSocial-02.png" alt="structurizr-1-002-GenericSocial-02.png" width="40%" />
|
|
</p>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="one_of_2_columns">
|
|
<ul>
|
|
<li class="fragment appear">Social media user access the app</li>
|
|
<li class="fragment appear">The app interacts with the API</li>
|
|
<li class="fragment appear">The API is the gateway for the database of posts, responses, likes, etc.</li>
|
|
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
<section id="slide-org5586a4a" data-background="./bCardBackground.png">
|
|
<h3 id="org5586a4a">More realistic view 1/4 – overview</h3>
|
|
<div class="e-frame">
|
|
|
|
<div id="org758ce44" 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-orgd055aae" data-background="./bCardBackground.png">
|
|
<h3 id="orgd055aae">More realistic view 2/4 – basic services</h3>
|
|
<div class="gridded_frame_with_columns e-frame">
|
|
|
|
<div class="one_of_2_columns">
|
|
|
|
<div id="org587691a" class="figure">
|
|
<p><img src="structurizr-1-004-RealisticSocial-02.png" alt="structurizr-1-004-RealisticSocial-02.png" width="70%" />
|
|
</p>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="one_of_2_columns">
|
|
<ul>
|
|
<li class="fragment appear">Social media user access the app</li>
|
|
<li class="fragment appear">The app interacts with the API</li>
|
|
<li class="fragment appear">The API is the gateway for the database of posts, responses, likes, etc.</li>
|
|
<li class="fragment appear">The API also captures data for building profiles of users for targeting purposes</li>
|
|
<li class="fragment appear">The algorithmic feed generator guides the API on what posts to place into the app's feed</li>
|
|
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
<section id="slide-org8512e36" data-background="./bCardBackground.png">
|
|
<h3 id="org8512e36">More realistic view 3/4 – the algorithm</h3>
|
|
<div class="gridded_frame_with_columns e-frame">
|
|
|
|
<div class="one_of_2_columns">
|
|
|
|
<div id="orga2950d5" class="figure">
|
|
<p><img src="structurizr-1-005-RealisticSocial-03.png" alt="structurizr-1-005-RealisticSocial-03.png" width="70%" />
|
|
</p>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="one_of_2_columns">
|
|
<ul>
|
|
<li>Social media user access the app</li>
|
|
<li>The app interacts with the API</li>
|
|
<li>The API is the gateway for the database of posts, responses, likes, etc.</li>
|
|
<li>The API also captures data for building profiles of users for targeting purposes</li>
|
|
<li>The algorithmic feed generator guides the API on what posts to place into the app's feed</li>
|
|
<li>Algorithmic feeds are created by the service administrator, using an app only <i>they</i> have access to</li>
|
|
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
<section id="slide-orgb69029c" data-background="./bCardBackground.png">
|
|
<h3 id="orgb69029c">More realistic view 4/4 – content moderation</h3>
|
|
<div class="gridded_frame_with_columns e-frame">
|
|
|
|
<div class="one_of_2_columns">
|
|
|
|
<div id="org0c68d2d" class="figure">
|
|
<p><img src="structurizr-1-006-RealisticSocial-04.png" alt="structurizr-1-006-RealisticSocial-04.png" width="100%" />
|
|
</p>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="one_of_2_columns">
|
|
<ul>
|
|
<li>Social media user access the app</li>
|
|
<li>The app interacts with the API</li>
|
|
<li>The API is the gateway for the database of posts, responses, likes, etc.</li>
|
|
<li>The API also captures data for building profiles of users for targeting purposes</li>
|
|
<li>The algorithmic feed generator guides the API on what posts to place into the app's feed</li>
|
|
<li>Algorithmic feeds are created by the service administrator, using an app only <i>they</i> have access to</li>
|
|
<li>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</li>
|
|
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
</section>
|
|
<section>
|
|
<section id="slide-org7a00c66" data-background="./bCardBackground.png">
|
|
<h2 id="org7a00c66">Federated social media services</h2>
|
|
<div class="outline-text-2" id="text-org7a00c66">
|
|
</div>
|
|
</section>
|
|
<section id="slide-orgbb7c31a" data-background="./bCardBackground.png">
|
|
<h3 id="orgbb7c31a">Federated services 1/8 – overview</h3>
|
|
<div class="e-frame">
|
|
|
|
<div id="orgc103a20" 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-orge5fe0ce" data-background="./bCardBackground.png">
|
|
<h3 id="orge5fe0ce">Federated services 2/8 – internal, administration and content moderation services</h3>
|
|
<div class="gridded_frame_with_columns e-frame">
|
|
|
|
<div class="one_of_2_columns">
|
|
|
|
<div id="orgaaa7668" class="figure">
|
|
<p><img src="structurizr-1-008-FederatedSocial-02.png" alt="structurizr-1-008-FederatedSocial-02.png" width="70%" />
|
|
</p>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="one_of_2_columns">
|
|
<ul>
|
|
<li class="fragment appear">Same as before, the user access the service through an App that uses an API</li>
|
|
<li class="fragment appear">As federated services are small, the administrator and the moderator are the one person</li>
|
|
<li class="fragment appear">No algorithmic feeds, though
|
|
<ul>
|
|
<li>not popular in the fediverse community</li>
|
|
<li>difficult to implement in a federated environment.</li>
|
|
|
|
</ul></li>
|
|
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
<section id="slide-org5e902a8" data-background="./bCardBackground.png">
|
|
<h3 id="org5e902a8">Federated services 3/8 – federation 1</h3>
|
|
<div class="gridded_frame_with_columns e-frame">
|
|
|
|
<div class="one_of_2_columns" style="width: 60%">
|
|
|
|
<div id="org2937f1f" class="figure">
|
|
<p><img src="structurizr-1-009-FederatedSocial-03.png" alt="structurizr-1-009-FederatedSocial-03.png" width="100%" />
|
|
</p>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="one_of_2_columns" style="width: 40%">
|
|
<ul>
|
|
<li>Same as before, the user access the service through an App that uses an API</li>
|
|
<li>As federated services are small, the administrator and the moderator are the one person</li>
|
|
<li>No algorithmic feeds, though
|
|
<ul>
|
|
<li>not popular in the fediverse community</li>
|
|
<li>difficult to implement in a federated environment.</li>
|
|
|
|
</ul></li>
|
|
<li class="fragment appear">Federation service to push activity out to the federated network</li>
|
|
<li class="fragment appear">Federation API to take in activity from other nodes</li>
|
|
<li class="fragment appear">A logical database of inbound federated posts</li>
|
|
<li class="fragment appear">Federation using ActivityPub standard</li>
|
|
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
<section id="slide-orgac74a6b" data-background="./bCardBackground.png">
|
|
<h3 id="orgac74a6b">Federated services 4/8 – federation 2</h3>
|
|
<div class="e-frame">
|
|
|
|
<div id="org429dfd2" 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-org6cfead5" data-background="./bCardBackground.png">
|
|
<h3 id="org6cfead5">Federated services 5/8 – federation 3</h3>
|
|
<div class="e-frame">
|
|
|
|
<div id="org9f9059a" 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-org5243619" data-background="./bCardBackground.png">
|
|
<h3 id="org5243619">Federated services 6/8 – federation 4</h3>
|
|
<div class="e-frame">
|
|
|
|
<div id="org4e6a900" 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-orgd736c9b" data-background="./bCardBackground.png">
|
|
<h3 id="orgd736c9b">Federated services 7/8 – federation 5</h3>
|
|
<div class="e-frame">
|
|
|
|
<div id="org19262e6" 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-orgf1adf69" data-background="./bCardBackground.png">
|
|
<h3 id="orgf1adf69">Federated services 8/8 – federation 6</h3>
|
|
<div class="e-frame">
|
|
|
|
<div id="org2ad7a74" class="figure">
|
|
<p><img src="structurizr-1-014-FederatedSocial-08.png" alt="structurizr-1-014-FederatedSocial-08.png" width="75%" />
|
|
</p>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
</section>
|
|
</div>
|
|
</div>
|
|
<script src="./reveal.js/dist/reveal.js"></script>
|
|
<script src="./reveal.js/plugin/markdown/markdown.js"></script>
|
|
<script src="./reveal.js/plugin/zoom/zoom.js"></script>
|
|
<script src="./reveal.js/plugin/notes/notes.js"></script>
|
|
|
|
|
|
<script>
|
|
// Full list of configuration options available here:
|
|
// https://github.com/hakimel/reveal.js#configuration
|
|
Reveal.initialize({
|
|
plugins: [RevealMarkdown, RevealZoom, RevealNotes],
|
|
transition:'none', margin: 0.1, slideNumber:true
|
|
});
|
|
|
|
</script>
|
|
</body>
|
|
</html>
|