A place to cache linked articles (think custom and personal wayback machine)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

index.html 29KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269
  1. <!doctype html><!-- This is a valid HTML5 document. -->
  2. <!-- Screen readers, SEO, extensions and so on. -->
  3. <html lang="en">
  4. <!-- Has to be within the first 1024 bytes, hence before the `title` element
  5. See: https://www.w3.org/TR/2012/CR-html5-20121217/document-metadata.html#charset -->
  6. <meta charset="utf-8">
  7. <!-- Why no `X-UA-Compatible` meta: https://stackoverflow.com/a/6771584 -->
  8. <!-- The viewport meta is quite crowded and we are responsible for that.
  9. See: https://codepen.io/tigt/post/meta-viewport-for-2015 -->
  10. <meta name="viewport" content="width=device-width,initial-scale=1">
  11. <!-- Required to make a valid HTML5 document. -->
  12. <title>Interaction as Content (archive) — David Larlet</title>
  13. <meta name="description" content="Publication mise en cache pour en conserver une trace.">
  14. <!-- That good ol' feed, subscribe :). -->
  15. <link rel="alternate" type="application/atom+xml" title="Feed" href="/david/log/">
  16. <!-- Generated from https://realfavicongenerator.net/ such a mess. -->
  17. <link rel="apple-touch-icon" sizes="180x180" href="/static/david/icons2/apple-touch-icon.png">
  18. <link rel="icon" type="image/png" sizes="32x32" href="/static/david/icons2/favicon-32x32.png">
  19. <link rel="icon" type="image/png" sizes="16x16" href="/static/david/icons2/favicon-16x16.png">
  20. <link rel="manifest" href="/static/david/icons2/site.webmanifest">
  21. <link rel="mask-icon" href="/static/david/icons2/safari-pinned-tab.svg" color="#07486c">
  22. <link rel="shortcut icon" href="/static/david/icons2/favicon.ico">
  23. <meta name="msapplication-TileColor" content="#f7f7f7">
  24. <meta name="msapplication-config" content="/static/david/icons2/browserconfig.xml">
  25. <meta name="theme-color" content="#f7f7f7" media="(prefers-color-scheme: light)">
  26. <meta name="theme-color" content="#272727" media="(prefers-color-scheme: dark)">
  27. <!-- Is that even respected? Retrospectively? What a shAItshow…
  28. https://neil-clarke.com/block-the-bots-that-feed-ai-models-by-scraping-your-website/ -->
  29. <meta name="robots" content="noai, noimageai">
  30. <!-- Documented, feel free to shoot an email. -->
  31. <link rel="stylesheet" href="/static/david/css/style_2021-01-20.css">
  32. <!-- See https://www.zachleat.com/web/comprehensive-webfonts/ for the trade-off. -->
  33. <link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_regular.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin>
  34. <link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_bold.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin>
  35. <link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_italic.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin>
  36. <link rel="preload" href="/static/david/css/fonts/triplicate_t3_regular.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
  37. <link rel="preload" href="/static/david/css/fonts/triplicate_t3_bold.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
  38. <link rel="preload" href="/static/david/css/fonts/triplicate_t3_italic.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
  39. <script>
  40. function toggleTheme(themeName) {
  41. document.documentElement.classList.toggle(
  42. 'forced-dark',
  43. themeName === 'dark'
  44. )
  45. document.documentElement.classList.toggle(
  46. 'forced-light',
  47. themeName === 'light'
  48. )
  49. }
  50. const selectedTheme = localStorage.getItem('theme')
  51. if (selectedTheme !== 'undefined') {
  52. toggleTheme(selectedTheme)
  53. }
  54. </script>
  55. <meta name="robots" content="noindex, nofollow">
  56. <meta content="origin-when-cross-origin" name="referrer">
  57. <!-- Canonical URL for SEO purposes -->
  58. <link rel="canonical" href="https://gist.github.com/loreanvictor/bddd8824c744024d338e935bd7e96707">
  59. <body class="remarkdown h1-underline h2-underline h3-underline em-underscore hr-center ul-star pre-tick" data-instant-intensity="viewport-all">
  60. <article>
  61. <header>
  62. <h1>Interaction as Content</h1>
  63. </header>
  64. <nav>
  65. <p class="center">
  66. <a href="/david/" title="Aller à l’accueil"><svg class="icon icon-home">
  67. <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-home"></use>
  68. </svg> Accueil</a> •
  69. <a href="https://gist.github.com/loreanvictor/bddd8824c744024d338e935bd7e96707" title="Lien vers le contenu original">Source originale</a>
  70. <br>
  71. Mis en cache le 2024-03-01
  72. </p>
  73. </nav>
  74. <hr>
  75. <article class="markdown-body entry-content container-lg" itemprop="text"><div class="markdown-heading" dir="auto"><h1 class="heading-element" dir="auto">Can We Get More Decentralised Than The Fediverse?</h1><a id="user-content-can-we-get-more-decentralised-than-the-fediverse" class="anchor-element" aria-label="Permalink: Can We Get More Decentralised Than The Fediverse?" href="#can-we-get-more-decentralised-than-the-fediverse"><svg class="octicon octicon-link" viewbox="0 0 16 16" version="1.1" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
  76. <p dir="auto">I guess that the <a href="https://en.wikipedia.org/wiki/Fediverse" rel="nofollow">fediverse</a> will be as decentralised as email: a bit, but not that much. Most people will be dependent on a few major hubs, some groups might have their own hubs (e.g. company email servers), personal instances will be pretty rare. This is in contrast to personal blogging, where every Bob can easily host their own (and they often do). I mean that's already implied by the name: fediverse is <a href="https://en.wikipedia.org/wiki/Distributed_social_network#:~:text=Differences%20between%20distributed%20and%20federated%20networks,-See%20also%3A%20peer&amp;text=Both%20kind%20of%20networks%20are,has%20no%20center%20at%20all" rel="nofollow">a federated universe, not a distributed one</a>.</p>
  77. <p dir="auto">Why does this matter? Well I like not being dependent on one entity, but I would like it much more if I was dependent on no entities at all. In other words, I like to publish my own personal blog and get all the goodies of a social network, without being dependent on other micro-blogging / social content platforms.</p>
  78. <p dir="auto">So in this writing, I'm going to:</p>
  79. <ul dir="auto">
  80. <li>❓ Contemplate on why the fediverse gets federated not distributed <em>(spoilers: its push vs pull)</em></li>
  81. <li>🧠 Ideate on how could we get a distributed social system <em>(spoilers: by extending RSS)</em></li>
  82. <li>🛠️ Reflect on how would that look in practice <em>(spoilers: kinda weird, but I think doable?)</em></li>
  83. </ul>
  84. <br>
  85. <p dir="auto">Ok first, what do I mean by saying "the fediverse is federated not distributed" or "its not decentralised enough"? Well I see three levels of decentralisation (relevant here):</p>
  86. <ul dir="auto">
  87. <li>🏦 Fully central, i.e. one center (e.g. twitter servers)</li>
  88. <li>🇪🇺 Federated, i.e. multiple centers (e.g. the fediverse, email servers)</li>
  89. <li>🏴‍☠️ Distributed, i.e. no centers (e.g. personal blogging)</li>
  90. </ul>
  91. <p dir="auto">Why does fediverse leans towards the second? Because it is a <em>push-based</em> model: You need to push your content to whomever is interested, instead of just making it available for interested people to <em>pull it on their own</em>. It is the same as email, where you (or your email server) need to deliver each email to all recipients (by talking to each of their email servers). Those email servers also need to recognise and trust you too, which makes the whole network even more <em>federated</em>.</p>
  92. <blockquote>
  93. <p dir="auto"><strong>💡 Example</strong></p>
  94. <p dir="auto">Assume <strong>Bob</strong> wants to post something, <strong>Alice</strong>, <strong>Carol</strong> and <strong>Malorey</strong> would like to read it. In the fediverse (or a push-based system), the following happens:</p>
  95. <pre><code>Bob posts, then:
  96. Bob --[notifies]--&gt; Alice.
  97. Bob --[notifies]--&gt; Carol.
  98. Bob --[notifies]--&gt; Malorey.
  99. </code></pre>
  100. <p dir="auto">In a pull-based system, like personal blogging with <a href="https://en.wikipedia.org/wiki/RSS" rel="nofollow">RSS</a> feeds, this happens instead:</p>
  101. <pre><code>Bob posts, then:
  102. Alice --[queries]--&gt; Bob.
  103. Carol --[queries]--&gt; Bob.
  104. Malorey --[queries]--&gt; Bob.
  105. </code></pre>
  106. </blockquote>
  107. <p dir="auto">👆 In the pull-based system, more work in the end is required (when should <strong>Alice</strong> query <strong>Bob</strong>? Also <strong>Bob</strong> needs to respond to the query, though thats super easy as it is static responses), but the work is better distributed, lowering the maximum amount of work someone has to do (in this case, <strong>Bob</strong>). Which means they need fewer resources to participate, which means more decentralised participation.</p>
  108. <p dir="auto">Also trust plays a role here: in a push-based system, <strong>Bob</strong> needs to be allowed to notify <strong>Alice</strong>, <strong>Carol</strong> and <strong>Malorey</strong>, which further restricts free-form participation. In a pull-based system though, <strong>Bob</strong> doesn't even know about <strong>Alice</strong>, <strong>Carol</strong> and <strong>Malorey</strong>, meaning anyone can participate more freely.</p>
  109. <br>
  110. <p dir="auto">Ok before getting to a solution for a <em>pull-based</em> (and subsequently, more decentralised) social networking solution, I'd like to take a moment to consider all the pros and cons of the two approaches. We can do that without considering particulars of solutions and protocols, since the essential differences are all about the <em>push vs pull</em> content distribution model.</p>
  111. <div class="markdown-heading" dir="auto"><h3 class="heading-element" dir="auto">🏴‍☠️ Pull: More Decentralised</h3><a id="user-content-️-pull-more-decentralised" class="anchor-element" aria-label="Permalink: 🏴‍☠️ Pull: More Decentralised" href="#%EF%B8%8F-pull-more-decentralised"><svg class="octicon octicon-link" viewbox="0 0 16 16" version="1.1" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
  112. <p dir="auto">As mentioned above, making content available for interested parties to pull needs waay less resources than pushing your content onto them (either they do the work, or you do it for them). It also requires less trust and gatekeeping, so anyone can easily participate with their own nodes, servers, CDNs, whatever.</p>
  113. <div class="markdown-heading" dir="auto"><h3 class="heading-element" dir="auto">⚙️ Pull: Granular Access Control</h3><a id="user-content-️-pull-granular-access-control" class="anchor-element" aria-label="Permalink: ⚙️ Pull: Granular Access Control" href="#%EF%B8%8F-pull-granular-access-control"><svg class="octicon octicon-link" viewbox="0 0 16 16" version="1.1" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
  114. <p dir="auto">In a push-based protocol, the protocol needs to somewhat have a concept of who can push what to whom, meaning anything built on top of it needs to conform to that design (e.g. <a href="https://en.wikipedia.org/wiki/ActivityPub" rel="nofollow">ActivityPub</a> defines concepts of blocking, accepting follow requests, etc.).</p>
  115. <p dir="auto">A pull-based system doesn't need to think about access control at all. Anyone can do whatever weird form of access control they want on the content they've made available. You can publish some of your activity to some public feed while publishing some others to some more private feed with friends or co-workers access.</p>
  116. <p dir="auto">Its kind of obvious, if content isn't pushed, it is not circulated as fast (e.g. realtime). This might be ok for some stuff, and not for others (direct messaging kind of loses its meaning in a pull-based system, for example).</p>
  117. <div class="markdown-heading" dir="auto"><h3 class="heading-element" dir="auto"><g-emoji class="g-emoji" alias="arrow_up_down">↕️</g-emoji> Push: Native Model of Two-way Interactions</h3><a id="user-content-️-push-native-model-of-two-way-interactions" class="anchor-element" aria-label="Permalink: ↕️ Push: Native Model of Two-way Interactions" href="#%EF%B8%8F-push-native-model-of-two-way-interactions"><svg class="octicon octicon-link" viewbox="0 0 16 16" version="1.1" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
  118. <p dir="auto">A push-based system is all about two-way interactions: X pushes something onto Y. A pull-based system breaks that down to individual interactions: X posts something, Y pulls something.</p>
  119. <p dir="auto">Because push models two-way interactions, it acts much better on content circulation which can be modelled as two-way interaction. For example, if <strong>Alice</strong> comments on <strong>Bob</strong>'s post, in a push-based system that is the same as <strong>Bob</strong> posting something and notifying <strong>Alice</strong>. In a pull-based system though, <strong>Bob</strong> needs to query everyone who he knows and might've said something, to check whether what they've said is a comment on his post or not. Which is orders of magnitude more difficult.</p>
  120. <p dir="auto">Beyond content delivery that can be modelled as two-way interactions (e.g. comments, quotes, etc), both designs are lacking in the content discovery area in a broader sense, and in both cases you'd need to have third-party aggregators / crawlers / search services for that, similar to what search engines do for the distributed world of web pages.</p>
  121. <p dir="auto">While kind of independent, such discovery is an essential part of any such social network (a social network without explore, recommendation, tags, communities, etc. is just a messaging service). Any solution for this discovery issue will naturally fill-in the discovery gaps of pull vs push based systems.</p>
  122. <p dir="auto">In other words, if we were to practically build a pull-based system, we'd need some aggregators / search providers, which would also tell <strong>Bob</strong> who have reacted to their post, though in a push-based system <strong>Bob</strong> wouldn't be dependent on these fellas to get the answer to that question.</p>
  123. <br>
  124. <p dir="auto">Assuming all those trade-offs are worth the benefits of a pull-based system, what would it look like? Well the best place to start is <a href="https://en.wikipedia.org/wiki/RSS" rel="nofollow">RSS</a>, since it is the defacto standard of syndicating and circulating content in a pull-based design:</p>
  125. <ul dir="auto">
  126. <li>Its been iterated upon and polished for that specific puporse,</li>
  127. <li>It has tons of tools and clients already (RSS readers, etc),</li>
  128. <li>A ton of content already in circulation supports RSS (Youtube, Reddit, Medium, most podcasts, most personal blogs and news outlets, etc).</li>
  129. </ul>
  130. <p dir="auto">What is missing here? Well social media are generally successful mostly by lowering the barriers of content creation, an important part of which is making it super easy to create content through interacting with some other existing content.</p>
  131. <p dir="auto">We can bring that into RSS by treating <em><strong>any interaction as content</strong></em>. If you post something, thats an entry in your feed (as before). If you comment on something, thats also an entry in your feed. If you like something, thats another entry in your feed. If you follow someone (which would mean subscribing to some RSS feed), thats also another entry in your feed. To mark that interactive nature of some feed entry, we can simple extend RSS a bit:</p>
  132. <div class="highlight highlight-text-xml" dir="auto"><pre>&lt;<span class="pl-ent">item</span>&gt;
  133. &lt;<span class="pl-ent">title</span>&gt;Comment on "Exploring New Technologies"&lt;/<span class="pl-ent">title</span>&gt;
  134. &lt;<span class="pl-ent">link</span>&gt;http://www.my.blog/posts/456&lt;/<span class="pl-ent">link</span>&gt;
  135. &lt;<span class="pl-ent">description</span>&gt;This is bullshit man, you've missed a ton of nuance in this analysis.&lt;/<span class="pl-ent">description</span>&gt;
  136. &lt;<span class="pl-ent">pubDate</span>&gt;Mon, 21 Feb 2024 14:34:56 GMT&lt;/<span class="pl-ent">pubDate</span>&gt;
  137. &lt;<span class="pl-ent">guid</span> <span class="pl-e">isPermaLink</span>=<span class="pl-s"><span class="pl-pds">"</span>true<span class="pl-pds">"</span></span>&gt;http://www.my.blog/posts/456&lt;/<span class="pl-ent">guid</span>&gt;
  138. &lt;<span class="pl-ent">social</span><span class="pl-ent">:</span><span class="pl-ent">context</span> <span class="pl-e">type</span>=<span class="pl-s"><span class="pl-pds">"</span>comment<span class="pl-pds">"</span></span> <span class="pl-e">url</span>=<span class="pl-s"><span class="pl-pds">"</span>http://www.other.blog/posts/123<span class="pl-pds">"</span></span>&gt;
  139. &lt;<span class="pl-ent">item</span>&gt;
  140. &lt;<span class="pl-ent">title</span>&gt;Exploring New Technologies&lt;/<span class="pl-ent">title</span>&gt;
  141. &lt;<span class="pl-ent">link</span>&gt;http://www.other.blog/posts/123&lt;/<span class="pl-ent">link</span>&gt;
  142. &lt;<span class="pl-ent">guid</span> <span class="pl-e">isPermaLink</span>=<span class="pl-s"><span class="pl-pds">"</span>true<span class="pl-pds">"</span></span>&gt;http://www.other.blog/posts/123&lt;/<span class="pl-ent">guid</span>&gt;
  143. &lt;<span class="pl-ent">pubDate</span>&gt;Mon, 21 Feb 2024 12:34:56 GMT&lt;/<span class="pl-ent">pubDate</span>&gt;
  144. &lt;/<span class="pl-ent">item</span>&gt;
  145. &lt;/<span class="pl-ent">social</span><span class="pl-ent">:</span><span class="pl-ent">context</span>&gt;
  146. &lt;/<span class="pl-ent">item</span>&gt;</pre></div>
  147. <p dir="auto">For easier discussion, I'll refer to this schematic extension as <strong>RISS</strong> (think of it as Really Intuitive Social Syndication, or any other acronym of your liking).</p>
  148. <br>
  149. <p dir="auto">Ok that's cool and all, but would it really make sense to build products and platforms around such a protocol, if it existed? Would such products and platforms provide tangible user benefits? I think so, though I'm not sure to what extent.</p>
  150. <div class="markdown-heading" dir="auto"><h3 class="heading-element" dir="auto">✨ Anything, Anywhere, All at Once</h3><a id="user-content--anything-anywhere-all-at-once" class="anchor-element" aria-label="Permalink: ✨ Anything, Anywhere, All at Once" href="#-anything-anywhere-all-at-once"><svg class="octicon octicon-link" viewbox="0 0 16 16" version="1.1" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
  151. <p dir="auto">The most immediate benefit will be that users can get access to a lot of social content all in one place. At a basic level, this is like a nice RSS reader where you get all your news, with added engagement of being able to interact with the content.</p>
  152. <p dir="auto">At a deeper level though, this means you can <em><strong>find</strong></em> almost everything in one place. Most of content streams on the internet support RSS (YouTube, Medium, Reddit, podcasts, etc.). Producing RSS feeds is also relatively cheap, so content not supporting it can also <a href="https://gist.github.com/thefranke/63853a6f8c499dc97bc17838f6cedcc2">be cheaply bridged</a>. Top that with a nice search / aggregator, and you've effectively made the borders between various communities disappear for your users (I don't need to follow someone on YouTube to miss their content on Twitch. I can follow them anywhere in one place).</p>
  153. <div class="markdown-heading" dir="auto"><h3 class="heading-element" dir="auto">👁️‍🗨️ Separation of Speech and Reach</h3><a id="user-content-️️-separation-of-speech-and-reach" class="anchor-element" aria-label="Permalink: 👁️‍🗨️ Separation of Speech and Reach" href="#%EF%B8%8F%EF%B8%8F-separation-of-speech-and-reach"><svg class="octicon octicon-link" viewbox="0 0 16 16" version="1.1" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
  154. <p dir="auto">This benefit hinges on adoption so is not immediate, and might not be that great as well. But, with such a model, publishing is completely separated from distribution, meaning no one can bar anyone from publishing and their direct subscribers receiving their content (except the ISPs?). However, anyone can refuse to help distribute anything they don't like, as this is not in anyway hindering publishing of said content, and there is no exclusivity on distribution as well.</p>
  155. <p dir="auto">In contrast, in a centralised system, publishing and distribution are entangled, and distribution is done exlusively by the central platform operator as well, meaning them choosing "not to promote" is the borderline the same as "not allowing to be published". Even in a federated system, a server might decide they don't want to allow me to push content to my followers on that server anymore, effectively cutting off access.</p>
  156. <p dir="auto">Now I know people are going to complain regardless, but I do feel this separation is important for regulating such online spaces. Furthermore, I think such neat separation plays a great role in the financials of content generation as well, the same way that the distribution that lead to anyone with their own website accessible through search engines also lead to new, more open monetisation models (that are of course not without their flaws).</p>
  157. <br>
  158. <p dir="auto">It actually might be possible to get more decentralised than the fediverse, via a simple extension on RSS. It might not be worth it since there will be sacrifices, but there will also be gains, so it might. And the end result might be a faster growing decentralised network as it can already incorporate much more popular content and creators, with also much lower barrier to entry and cleaner seperation of concerns and responsibilities.</p>
  159. <p dir="auto">I' personally pretty busy right now, but when I get time, I think I will start exploring the potential of RISS a bit more.</p>
  160. </article>
  161. </article>
  162. <hr>
  163. <footer>
  164. <p>
  165. <a href="/david/" title="Aller à l’accueil"><svg class="icon icon-home">
  166. <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-home"></use>
  167. </svg> Accueil</a> •
  168. <a href="/david/log/" title="Accès au flux RSS"><svg class="icon icon-rss2">
  169. <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-rss2"></use>
  170. </svg> Suivre</a> •
  171. <a href="http://larlet.com" title="Go to my English profile" data-instant><svg class="icon icon-user-tie">
  172. <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-user-tie"></use>
  173. </svg> Pro</a> •
  174. <a href="mailto:david%40larlet.fr" title="Envoyer un courriel"><svg class="icon icon-mail">
  175. <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-mail"></use>
  176. </svg> Email</a> •
  177. <abbr class="nowrap" title="Hébergeur : Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33184162340"><svg class="icon icon-hammer2">
  178. <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-hammer2"></use>
  179. </svg> Légal</abbr>
  180. </p>
  181. <template id="theme-selector">
  182. <form>
  183. <fieldset>
  184. <legend><svg class="icon icon-brightness-contrast">
  185. <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-brightness-contrast"></use>
  186. </svg> Thème</legend>
  187. <label>
  188. <input type="radio" value="auto" name="chosen-color-scheme" checked> Auto
  189. </label>
  190. <label>
  191. <input type="radio" value="dark" name="chosen-color-scheme"> Foncé
  192. </label>
  193. <label>
  194. <input type="radio" value="light" name="chosen-color-scheme"> Clair
  195. </label>
  196. </fieldset>
  197. </form>
  198. </template>
  199. </footer>
  200. <script src="/static/david/js/instantpage-5.1.0.min.js" type="module"></script>
  201. <script>
  202. function loadThemeForm(templateName) {
  203. const themeSelectorTemplate = document.querySelector(templateName)
  204. const form = themeSelectorTemplate.content.firstElementChild
  205. themeSelectorTemplate.replaceWith(form)
  206. form.addEventListener('change', (e) => {
  207. const chosenColorScheme = e.target.value
  208. localStorage.setItem('theme', chosenColorScheme)
  209. toggleTheme(chosenColorScheme)
  210. })
  211. const selectedTheme = localStorage.getItem('theme')
  212. if (selectedTheme && selectedTheme !== 'undefined') {
  213. form.querySelector(`[value="${selectedTheme}"]`).checked = true
  214. }
  215. }
  216. const prefersColorSchemeDark = '(prefers-color-scheme: dark)'
  217. window.addEventListener('load', () => {
  218. let hasDarkRules = false
  219. for (const styleSheet of Array.from(document.styleSheets)) {
  220. let mediaRules = []
  221. for (const cssRule of styleSheet.cssRules) {
  222. if (cssRule.type !== CSSRule.MEDIA_RULE) {
  223. continue
  224. }
  225. // WARNING: Safari does not have/supports `conditionText`.
  226. if (cssRule.conditionText) {
  227. if (cssRule.conditionText !== prefersColorSchemeDark) {
  228. continue
  229. }
  230. } else {
  231. if (cssRule.cssText.startsWith(prefersColorSchemeDark)) {
  232. continue
  233. }
  234. }
  235. mediaRules = mediaRules.concat(Array.from(cssRule.cssRules))
  236. }
  237. // WARNING: do not try to insert a Rule to a styleSheet you are
  238. // currently iterating on, otherwise the browser will be stuck
  239. // in a infinite loop…
  240. for (const mediaRule of mediaRules) {
  241. styleSheet.insertRule(mediaRule.cssText)
  242. hasDarkRules = true
  243. }
  244. }
  245. if (hasDarkRules) {
  246. loadThemeForm('#theme-selector')
  247. }
  248. })
  249. </script>
  250. </body>
  251. </html>