fedi-pres/fedi-slide.html

314 lines
116 KiB
HTML
Raw Permalink Normal View History

2023-06-19 07:40:24 +00:00
<!DOCTYPE html><html lang="en-US"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width,height=device-height,initial-scale=1.0"><meta name="apple-mobile-web-app-capable" content="yes"><meta http-equiv="X-UA-Compatible" content="ie=edge"><meta property="og:type" content="website"><meta name="twitter:card" content="summary"><style>@media screen{body[data-bespoke-view=""] .bespoke-marp-parent>.bespoke-marp-osc>button,body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>button,body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-info-container button,body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-note-container button{-webkit-tap-highlight-color:transparent;-webkit-appearance:none;appearance:none;background-color:initial;border:0;color:inherit;cursor:pointer;font-size:inherit;opacity:.8;outline:none;padding:0;transition:opacity .2s linear}body[data-bespoke-view=""] .bespoke-marp-parent>.bespoke-marp-osc>button:disabled,body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>button:disabled,body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-info-container button:disabled,body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-note-container button:disabled{cursor:not-allowed;opacity:.15!important}body[data-bespoke-view=""] .bespoke-marp-parent>.bespoke-marp-osc>button:hover,body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>button:hover,body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-info-container button:hover,body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-note-container button:hover{opacity:1}body[data-bespoke-view=""] .bespoke-marp-parent>.bespoke-marp-osc>button:hover:active,body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>button:hover:active,body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-info-container button:hover:active,body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-note-container button:hover:active{opacity:.6}body[data-bespoke-view=""] .bespoke-marp-parent>.bespoke-marp-osc>button:hover:not(:disabled),body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>button:hover:not(:disabled),body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-info-container button:hover:not(:disabled),body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-note-container button:hover:not(:disabled){transition:none}body[data-bespoke-view=""] .bespoke-marp-parent>.bespoke-marp-osc>button[data-bespoke-marp-osc=prev],body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>button[data-bespoke-marp-osc=prev],body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-info-container button.bespoke-marp-presenter-info-page-prev{background:#0000 url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAgMTAwIj48cGF0aCBmaWxsPSJub25lIiBzdHJva2U9IiNmZmYiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSI1IiBkPSJNNjggOTAgMjggNTBsNDAtNDAiLz48L3N2Zz4=") no-repeat 50%;background-size:contain;overflow:hidden;text-indent:100%;white-space:nowrap}body[data-bespoke-view=""] .bespoke-marp-parent>.bespoke-marp-osc>button[data-bespoke-marp-osc=next],body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>button[data-bespoke-marp-osc=next],body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-info-container button.bespoke-marp-presenter-info-page-next{background:#0000 url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAgMTAwIj48cGF0aCBmaWxsPSJub25lIiBzdHJva2U9IiNmZmYiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2
2023-06-14 10:45:03 +00:00
/*!
2023-06-19 07:40:24 +00:00
* Marp default theme.
2023-06-14 10:45:03 +00:00
*
2023-06-19 07:40:24 +00:00
* @theme default
2023-06-14 10:45:03 +00:00
* @author Yuki Hattori
*
* @auto-scaling true
* @size 16:9 1280px 720px
* @size 4:3 960px 720px
2023-06-19 07:40:24 +00:00
*/div#\:\$p>svg>foreignObject>section{--color-prettylights-syntax-comment:#6e7781;--color-prettylights-syntax-constant:#0550ae;--color-prettylights-syntax-entity:#8250df;--color-prettylights-syntax-storage-modifier-import:#24292f;--color-prettylights-syntax-entity-tag:#116329;--color-prettylights-syntax-keyword:#cf222e;--color-prettylights-syntax-string:#0a3069;--color-prettylights-syntax-variable:#953800;--color-prettylights-syntax-brackethighlighter-unmatched:#82071e;--color-prettylights-syntax-invalid-illegal-text:#f6f8fa;--color-prettylights-syntax-invalid-illegal-bg:#82071e;--color-prettylights-syntax-carriage-return-text:#f6f8fa;--color-prettylights-syntax-carriage-return-bg:#cf222e;--color-prettylights-syntax-string-regexp:#116329;--color-prettylights-syntax-markup-list:#3b2300;--color-prettylights-syntax-markup-heading:#0550ae;--color-prettylights-syntax-markup-italic:#24292f;--color-prettylights-syntax-markup-bold:#24292f;--color-prettylights-syntax-markup-deleted-text:#82071e;--color-prettylights-syntax-markup-deleted-bg:#ffebe9;--color-prettylights-syntax-markup-inserted-text:#116329;--color-prettylights-syntax-markup-inserted-bg:#dafbe1;--color-prettylights-syntax-markup-changed-text:#953800;--color-prettylights-syntax-markup-changed-bg:#ffd8b5;--color-prettylights-syntax-markup-ignored-text:#eaeef2;--color-prettylights-syntax-markup-ignored-bg:#0550ae;--color-prettylights-syntax-meta-diff-range:#8250df;--color-prettylights-syntax-brackethighlighter-angle:#57606a;--color-prettylights-syntax-sublimelinter-gutter-mark:#8c959f;--color-prettylights-syntax-constant-other-reference-link:#0a3069;--color-fg-default:#24292f;--color-fg-muted:#57606a;--color-fg-subtle:#6e7781;--color-canvas-default:#fff;--color-canvas-subtle:#f6f8fa;--color-border-default:#d0d7de;--color-border-muted:#d8dee4;--color-neutral-muted:rgba(175,184,193,.2);--color-accent-fg:#0969da;--color-accent-emphasis:#0969da;--color-attention-subtle:#fff8c5;--color-danger-fg:#cf222e;color-scheme:light}div#\:\$p>svg>foreignObject>section:where(.invert){--color-prettylights-syntax-comment:#8b949e;--color-prettylights-syntax-constant:#79c0ff;--color-prettylights-syntax-entity:#d2a8ff;--color-prettylights-syntax-storage-modifier-import:#c9d1d9;--color-prettylights-syntax-entity-tag:#7ee787;--color-prettylights-syntax-keyword:#ff7b72;--color-prettylights-syntax-string:#a5d6ff;--color-prettylights-syntax-variable:#ffa657;--color-prettylights-syntax-brackethighlighter-unmatched:#f85149;--color-prettylights-syntax-invalid-illegal-text:#f0f6fc;--color-prettylights-syntax-invalid-illegal-bg:#8e1519;--color-prettylights-syntax-carriage-return-text:#f0f6fc;--color-prettylights-syntax-carriage-return-bg:#b62324;--color-prettylights-syntax-string-regexp:#7ee787;--color-prettylights-syntax-markup-list:#f2cc60;--color-prettylights-syntax-markup-heading:#1f6feb;--color-prettylights-syntax-markup-italic:#c9d1d9;--color-prettylights-syntax-markup-bold:#c9d1d9;--color-prettylights-syntax-markup-deleted-text:#ffdcd7;--color-prettylights-syntax-markup-deleted-bg:#67060c;--color-prettylights-syntax-markup-inserted-text:#aff5b4;--color-prettylights-syntax-markup-inserted-bg:#033a16;--color-prettylights-syntax-markup-changed-text:#ffdfb6;--color-prettylights-syntax-markup-changed-bg:#5a1e02;--color-prettylights-syntax-markup-ignored-text:#c9d1d9;--color-prettylights-syntax-markup-ignored-bg:#1158c7;--color-prettylights-syntax-meta-diff-range:#d2a8ff;--color-prettylights-syntax-brackethighlighter-angle:#8b949e;--color-prettylights-syntax-sublimelinter-gutter-mark:#484f58;--color-prettylights-syntax-constant-other-reference-link:#a5d6ff;--color-fg-default:#c9d1d9;--color-fg-muted:#8b949e;--color-fg-subtle:#6e7681;--color-canvas-default:#0d1117;--color-canvas-subtle:#161b22;--color-border-default:#30363d;--color-border-muted:#21262d;--color-neutral-muted:hsla(215,8%,47%,.4);--color-accent-fg:#58a6ff;--color-accent-emphasis:#1f6feb;--color-attention-subtle:rgba(187,128,9,.15);--color-danger-fg:#f85149;color-scheme:dark}div#\:\$p>svg>foreignObject>section{-ms-text-size-adjust:100%;
/* content:""; */display:table}div#\:\$p>svg>foreignObject>section:after{clear:both}div#\:\$p>svg>foreignObject>section>:first-child{margin-top:0!important}div#\:\$p>svg>foreignObject>section>:last-child{margin-bottom:0!important}div#\:\$p>svg>foreignObject>section a:not([href]){color:inherit;text-decoration:none}div#\:\$p>svg>foreignObject>section .absent{color:var(--color-danger-fg)}div#\:\$p>svg>foreignObject>section .anchor{float:left;line-height:1;margin-left:-20px;padding-right:4px}div#\:\$p>svg>foreignObject>section .anchor:focus{outline:none}div#\:\$p>svg>foreignObject>section :is(pre,marp-pre),div#\:\$p>svg>foreignObject>section blockquote,div#\:\$p>svg>foreignObject>section details,div#\:\$p>svg>foreignObject>section dl,div#\:\$p>svg>foreignObject>section ol,div#\:\$p>svg>foreignObject>section p,div#\:\$p>svg>foreignObject>section table,div#\:\$p>svg>foreignObject>section ul{margin-bottom:16px;margin-top:0}div#\:\$p>svg>foreignObject>section blockquote>:first-child{margin-top:0}div#\:\$p>svg>foreignObject>section blockquote>:last-child{margin-bottom:0}div#\:\$p>svg>foreignObject>section :is(h1,marp-h1) .octicon-link,div#\:\$p>svg>foreignObject>section :is(h2,marp-h2) .octicon-link,div#\:\$p>svg>foreignObject>section :is(h3,marp-h3) .octicon-link,div#\:\$p>svg>foreignObject>section :is(h4,marp-h4) .octicon-link,div#\:\$p>svg>foreignObject>section :is(h5,marp-h5) .octicon-link,div#\:\$p>svg>foreignObject>section :is(h6,marp-h6) .octicon-link{color:var(--color-fg-default);vertical-align:middle;visibility:hidden}div#\:\$p>svg>foreignObject>section :is(h1,marp-h1):hover .anchor,div#\:\$p>svg>foreignObject>section :is(h2,marp-h2):hover .anchor,div#\:\$p>svg>foreignObject>section :is(h3,marp-h3):hover .anchor,div#\:\$p>svg>foreignObject>section :is(h4,marp-h4):hover .anchor,div#\:\$p>svg>foreignObject>section :is(h5,marp-h5):hover .anchor,div#\:\$p>svg>foreignObject>section :is(h6,marp-h6):hover .anchor{text-decoration:none}div#\:\$p>svg>foreignObject>section :is(h1,marp-h1):hover .anchor .octicon-link,div#\:\$p>svg>foreignObject>section :is(h2,marp-h2):hover .anchor .octicon-link,div#\:\$p>svg>foreignObject>section :is(h3,marp-h3):hover .anchor .octicon-link,div#\:\$p>svg>foreignObject>section :is(h4,marp-h4):hover .anchor .octicon-link,div#\:\$p>svg>foreignObject>section :is(h5,marp-h5):hover .anchor .octicon-link,div#\:\$p>svg>foreignObject>section :is(h6,marp-h6):hover .anchor .octicon-link{visibility:visible}div#\:\$p>svg>foreignObject>section :is(h1,marp-h1) code,div#\:\$p>svg>foreignObject>section :is(h1,marp-h1) tt,div#\:\$p>svg>foreignObject>section :is(h2,marp-h2) code,div#\:\$p>svg>foreignObject>section :is(h2,marp-h2) tt,div#\:\$p>svg>foreignObject>section :is(h3,marp-h3) code,div#\:\$p>svg>foreignObject>section :is(h3,marp-h3) tt,div#\:\$p>svg>foreignObject>section :is(h4,marp-h4) code,div#\:\$p>svg>foreignObject>section :is(h4,marp-h4) tt,div#\:\$p>svg>foreignObject>section :is(h5,marp-h5) code,div#\:\$p>svg>foreignObject>section :is(h5,marp-h5) tt,div#\:\$p>svg>foreignObject>section :is(h6,marp-h6) code,div#\:\$p>svg>foreignObject>section :is(h6,marp-h6) tt{font-size:inherit;padding:0 .2em}div#\:\$p>svg>foreignObject>section summary :is(h1,marp-h1),div#\:\$p>svg>foreignObject>section summary :is(h2,marp-h2),div#\:\$p>svg>foreignObject>section summary :is(h3,marp-h3),div#\:\$p>svg>foreignObject>section summary :is(h4,marp-h4),div#\:\$p>svg>foreignObject>section summary :is(h5,marp-h5),div#\:\$p>svg>foreignObject>section summary :is(h6,marp-h6){display:inline-block}div#\:\$p>svg>foreignObject>section summary :is(h1,marp-h1) .anchor,div#\:\$p>svg>foreignObject>section summary :is(h2,marp-h2) .anchor,div#\:\$p>svg>foreignObject>section summary :is(h3,marp-h3) .anchor,div#\:\$p>svg>foreignObject>section summary :is(h4,marp-h4) .anchor,div#\:\$p>svg>foreignObject>section summary :is(h5,marp-h5) .anchor,div#\:\$p>svg>foreignObject>section summary :is(h6,marp-h6) .anchor{margin-left:-40px}div#\:\$p>svg>foreignObject>section summary :is(h1,marp-h1),div#\:\$p>svg>foreignObject>section summary :is(h2,marp-h2){b
<h1 is="marp-h1" data-auto-scaling id="into-the-federated-universe"> Into the federated Universe</h1>
<h3 id="digital-sovereignty-through-decentral-communication">Digital sovereignty through decentral communication</h3>
<h6 id="by-april-john-aprilblahajnyc">by April John (<a href="https://github.com/marp-team">@april:blahaj.nyc</a>)</h6>
<footer><em>Photo by Tobias Buckdahn, CC BY-SA via <a href="https://gitlab.com/swisode/website/blob/primary/themes/quark-child/images/fediverse.svg">https://gitlab.com/swisode/website/blob/primary/themes/quark-child/images/fediverse.svg</a></em></footer>
</section>
</foreignObject><foreignObject width="1280" height="720" data-marpit-advanced-background="pseudo"><section data-paginate="true" data-class="invert" data-footer="*Photo by Tobias Buckdahn, CC BY-SA via https://gitlab.com/swisode/website/blob/primary/themes/quark-child/images/fediverse.svg*" class="invert" data-marpit-pagination="1" data-marpit-pagination-total="32" style="" data-marpit-advanced-background="pseudo" data-marpit-advanced-background-split="right"></section></foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="2" data-paginate="true" data-marpit-pagination="2" data-marpit-pagination-total="32" style="--paginate:true;">
<h1 id="content-notes">Content notes</h1>
<ul>
<li>Technical details of the activitypup protocoll</li>
<li>The politics behind different fediverse servers</li>
<li>Inter-project politics</li>
<li>Unused potential of the Fediverse</li>
<li>Does it need to be federated?</li>
<li>Why dont we do peer to peer?</li>
</ul>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="3" data-paginate="true" data-marpit-pagination="3" data-marpit-pagination-total="32" style="--paginate:true;">
<h1 id="april-john">April John</h1>
2023-06-14 10:45:03 +00:00
<p>@april@donotsta.re<br />
@april:blahaj.nyc</p>
2023-06-19 07:40:24 +00:00
<h5 id="things-im-known-for">Things im known for:</h5>
<ul>
<li>Fediverse Software Maintainer</li>
<li>Linux Kernel Contributor</li>
<li>Professional pro-grammar kitten</li>
</ul>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section data-paginate="true" data-footer="*Photo by [Eukombos](https://commons.wikimedia.org/wiki/User:Eukombos), CC0 via [Wikimedia Commons](https://commons.wikimedia.org/wiki/File:Fediverse_logo_proposal.svg)*" data-marpit-pagination="4" data-marpit-pagination-total="32" style="--paginate:true;--footer:*Photo by [Eukombos](https://commons.wikimedia.org/wiki/User:Eukombos), CC0 via [Wikimedia Commons](https://commons.wikimedia.org/wiki/File:Fediverse_logo_proposal.svg)*;--marpit-advanced-background-split:50%;" data-marpit-advanced-background="background" data-marpit-advanced-background-split="right"><div data-marpit-advanced-background-container="true" data-marpit-advanced-background-direction="horizontal"><figure style="background-image:url(&quot;https://upload.wikimedia.org/wikipedia/commons/thumb/9/93/Fediverse_logo_proposal.svg/2048px-Fediverse_logo_proposal.svg.png&quot;);background-size:auto 250px;"></figure></div></section></foreignObject><foreignObject width="50%" height="720"><section id="4" data-paginate="true" data-footer="*Photo by [Eukombos](https://commons.wikimedia.org/wiki/User:Eukombos), CC0 via [Wikimedia Commons](https://commons.wikimedia.org/wiki/File:Fediverse_logo_proposal.svg)*" data-marpit-pagination="4" data-marpit-pagination-total="32" style="--paginate:true;--footer:*Photo by [Eukombos](https://commons.wikimedia.org/wiki/User:Eukombos), CC0 via [Wikimedia Commons](https://commons.wikimedia.org/wiki/File:Fediverse_logo_proposal.svg)*;--marpit-advanced-background-split:50%;" data-marpit-advanced-background="content" data-marpit-advanced-background-split="right">
<h1 id="the-fediverse-federated-universe">The Fediverse (federated universe)</h1>
<ul>
<li>users on different servers communicate via a shared protocol</li>
<li></li>
</ul>
<footer><em>Photo by <a href="https://commons.wikimedia.org/wiki/User:Eukombos">Eukombos</a>, CC0 via <a href="https://commons.wikimedia.org/wiki/File:Fediverse_logo_proposal.svg">Wikimedia Commons</a></em></footer>
</section>
</foreignObject><foreignObject width="1280" height="720" data-marpit-advanced-background="pseudo"><section data-paginate="true" data-footer="*Photo by [Eukombos](https://commons.wikimedia.org/wiki/User:Eukombos), CC0 via [Wikimedia Commons](https://commons.wikimedia.org/wiki/File:Fediverse_logo_proposal.svg)*" data-marpit-pagination="4" data-marpit-pagination-total="32" style="" data-marpit-advanced-background="pseudo" data-marpit-advanced-background-split="right"></section></foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="5" data-paginate="true" data-marpit-pagination="5" data-marpit-pagination-total="32" style="--paginate:true;">
<h1 id="the-idea-of-a-federated-universe">The idea of a federated universe.</h1>
<ul>
<li>Founding of twitter in 2006 as microblogging service</li>
<li>Open Standard OStatus 2008</li>
<li>Making of gnu-social 2013</li>
<li>ActivityPup in 2018</li>
<li>finally, a federated universe! The fediverse!</li>
</ul>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="6" data-paginate="true" data-marpit-pagination="6" data-marpit-pagination-total="32" style="--paginate:true;">
<h1 id="you-heard-of-mastodon">You heard of Mastodon?</h1>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="7" data-paginate="true" data-marpit-pagination="7" data-marpit-pagination-total="32" style="--paginate:true;">
<h1 id="you-heard-of-mastodon-1">You heard of Mastodon?</h1>
<p>...there is more.</p>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section data-paginate="true" data-footer="*Photo by axbom.com, CC BY-SA via https://axbom.com/fediverse/*" data-marpit-pagination="8" data-marpit-pagination-total="32" style="--paginate:true;" data-marpit-advanced-background="background"><div data-marpit-advanced-background-container="true" data-marpit-advanced-background-direction="horizontal"><figure style="background-image:url(&quot;https://axbom.com/content/images/size/w2000/2023/01/fediverse-branches-axbom-30-CC-BY-SA.webp&quot;);background-size:auto 690px;"></figure></div></section></foreignObject><foreignObject width="1280" height="720"><section id="8" data-paginate="true" data-footer="*Photo by axbom.com, CC BY-SA via https://axbom.com/fediverse/*" data-marpit-pagination="8" data-marpit-pagination-total="32" style="--paginate:true;" data-marpit-advanced-background="content"><footer><em>Photo by axbom.com, CC BY-SA via <a href="https://axbom.com/fediverse/">https://axbom.com/fediverse/</a></em></footer>
</section>
</foreignObject><foreignObject width="1280" height="720" data-marpit-advanced-background="pseudo"><section data-paginate="true" data-footer="*Photo by axbom.com, CC BY-SA via https://axbom.com/fediverse/*" data-marpit-pagination="8" data-marpit-pagination-total="32" style="" data-marpit-advanced-background="pseudo"></section></foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="9" data-paginate="true" data-marpit-pagination="9" data-marpit-pagination-total="32" style="--paginate:true;">
<h1 id="activitypub">Activitypub</h1>
<ul>
<li>protocol introduced in 2018</li>
<li>idea of a universal standard for any multimedia service to communicate between servers
<ul>
<li>i.e. servers chaos.social and crimew.gay communicating with each other</li>
</ul>
</li>
<li>especially popular for microblogging</li>
</ul>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="10" data-paginate="true" data-footer="*Photo by fastly.com*" data-marpit-pagination="10" data-marpit-pagination-total="32" style="--paginate:true;--footer:*Photo by fastly.com*;">
<h1 id="the-architecture-of-activitypub">The architecture of Activitypub</h1>
<p><img src="image-2.png" alt="Alt text" /></p>
<footer><em>Photo by fastly.com</em></footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="11" data-paginate="true" data-marpit-pagination="11" data-marpit-pagination-total="32" style="--paginate:true;">
<h1 id="actors-and-activities">Actors and Activities</h1>
<h3 id="actors-represent-people-video-channels-podcasts">Actors represent People, Video Channels, Podcasts</h3>
<p><img src="image-3.png" alt="Alt text" /></p>
<h3 id="activities-represent-posts-videos-audio">Activities represent Posts, Videos, Audio</h3>
<p><img src="image-4.png" alt="Alt text" /></p>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="12" data-paginate="true" data-marpit-pagination="12" data-marpit-pagination-total="32" style="--paginate:true;">
<h1 id="actors-and-activities-1">Actors and Activities</h1>
<h3 id="actors-represent-people-video-channels-podcasts-1">Actors represent People, Video Channels, Podcasts</h3>
<pre is="marp-pre" data-auto-scaling="downscale-only"><code>{
&quot;@context&quot;: &quot;https://www.w3.org/ns/activitystreams&quot;,
&quot;type&quot;: &quot;Person&quot;,
&quot;id&quot;: &quot;https://crimew.gay/users/luna&quot;,
&quot;name&quot;: &quot;luna 'delete &amp; redraft' vivian.&quot;,
&quot;preferredUsername&quot;: &quot;luna&quot;,
&quot;summary&quot;: &quot;hi, i'm luna, your local 18 year old gay ace polyam non-binary transfem genderfluid mess.&quot;,
&quot;inbox&quot;: &quot;https://crimew.gay/users/luna/inbox/&quot;,
&quot;outbox&quot;: &quot;https://crimew.gay/users/luna/outbox/&quot;,
&quot;followers&quot;: &quot;https://crimew.gay/users/luna/followers/&quot;,
&quot;following&quot;: &quot;https://crimew.gay/users/luna/following/&quot;,
&quot;liked&quot;: &quot;https://crimew.gay/users/luna/liked/&quot;
}
</code></pre>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="13" data-paginate="true" data-marpit-pagination="13" data-marpit-pagination-total="32" style="--paginate:true;">
<h1 id="actors-and-activities-2">Actors and Activities</h1>
<h3 id="activities-represent-posts-videos-audio-1">Activities represent Posts, Videos, Audio</h3>
<pre is="marp-pre" data-auto-scaling="downscale-only"><code>
{
&quot;@context&quot;: &quot;https://www.w3.org/ns/activitystreams&quot;,
&quot;type&quot;: &quot;Note&quot;,
&quot;to&quot;: [&quot;https://donotsta.re/users/april&quot;],
&quot;attributedTo&quot;: &quot;https://crimew.gay/users/luna&quot;,
&quot;content&quot;: &quot;it's 4:20, &lt;b&gt;nice&lt;/b&gt;&quot;
}
</code></pre>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="14" data-paginate="true" data-marpit-pagination="14" data-marpit-pagination-total="32" style="--paginate:true;">
<h1 id="issues-of-the-standard">Issues of the standard</h1>
<ul>
<li>barebones specification leading to many unstandartized extensions of the protocol
<ul>
<li>happened, because as a w3c standard it had to satisfy many people, and thus less was more</li>
</ul>
</li>
<li>activitypub sends HTML with Activities, which the Servers need to parse and then server to users
<ul>
<li>XSS as a service!</li>
</ul>
</li>
<li>Limited standard featureset, but we can extend it ourself!</li>
</ul>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="15" data-paginate="true" data-marpit-pagination="15" data-marpit-pagination-total="32" style="--paginate:true;">
<h1 id="how">How?</h1>
<h3 id="simple-we-add-extra-json-fields">&quot;Simple&quot;, we add extra JSON fields!</h3>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="16" data-paginate="true" data-marpit-pagination="16" data-marpit-pagination-total="32" style="--paginate:true;">
<h1 id="extending-the-ap-protocol">Extending the AP protocol</h1>
<ul>
<li>Projects want new features</li>
<li>They need to invent the standard to federate these themself</li>
</ul>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="17" data-paginate="true" data-marpit-pagination="17" data-marpit-pagination-total="32" style="--paginate:true;">
<h1 id="case-study-cat-ears-on-a-profile">Case study: Cat ears on a profile</h1>
<ul>
<li>Misskey added support for cat ears on profile pictures: <img src="image-5.png" alt="" style="height:80px;" /></li>
<li>federated using a ActivityPub extension called <code>isCat</code></li>
<li>Misskey interprets it and displays cat ears</li>
<li>others like Mastodon just ignore it</li>
</ul>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="18" data-paginate="true" data-marpit-pagination="18" data-marpit-pagination-total="32" style="--paginate:true;">
<h1 id="case-study-cat-ears-on-a-profile-1">Case study: Cat ears on a profile</h1>
<pre is="marp-pre" data-auto-scaling="downscale-only"><code>{
&quot;@context&quot;: &quot;https://www.w3.org/ns/activitystreams&quot;,
&quot;type&quot;: &quot;Person&quot;,
&quot;id&quot;: &quot;https://crimew.gay/users/luna&quot;,
&quot;name&quot;: &quot;luna 'delete &amp; redraft' vivian.&quot;,
&quot;preferredUsername&quot;: &quot;luna&quot;,
&quot;summary&quot;: &quot;hi, i'm luna, your local 18 year old gay ace polyam non-binary transfem genderfluid mess.&quot;,
&quot;inbox&quot;: &quot;https://crimew.gay/users/luna/inbox/&quot;,
&quot;outbox&quot;: &quot;https://crimew.gay/users/luna/outbox/&quot;,
&quot;followers&quot;: &quot;https://crimew.gay/users/luna/followers/&quot;,
&quot;following&quot;: &quot;https://crimew.gay/users/luna/following/&quot;,
&quot;liked&quot;: &quot;https://crimew.gay/users/luna/liked/&quot;,
&quot;isCat&quot;: true
}
</code></pre>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="19" data-paginate="true" data-marpit-pagination="19" data-marpit-pagination-total="32" style="--paginate:true;">
<h1 id="that-doesnt-always-work">..that doesnt always work</h1>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="20" data-paginate="true" data-marpit-pagination="20" data-marpit-pagination-total="32" style="--paginate:true;">
<h1 id="multiple-standards-for-the-same-feature">Multiple standards for the same feature</h1>
<h2 id="quote-posts">Quote posts</h2>
<ul>
<li><code>_misskey_quote</code></li>
<li><code>quoteUrl</code></li>
<li><code>quoteUri</code></li>
</ul>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="21" data-paginate="true" data-marpit-pagination="21" data-marpit-pagination-total="32" style="--paginate:true;">
<h1 id="multiple-standards-for-the-same-feature-1">Multiple standards for the same feature</h1>
<h2 id="groups-exclusive-posts">Groups exclusive posts</h2>
<ul>
<li>Bonfire's circles</li>
<li>Lemmy's implementation using <code>Announce</code> and <code>Follow</code></li>
<li>Friendica &amp; Hubzilla implementing groups using ActivityStreams</li>
<li>Smithereen using FEP-400e (Fediverse Enhancement Proposals)</li>
<li>....</li>
</ul>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="22" data-paginate="true" data-marpit-pagination="22" data-marpit-pagination-total="32" style="--paginate:true;">
<h1 id="mastodon-in-the-meantime">Mastodon in the meantime</h1>
<ul>
<li>implementing FEP-400e partially</li>
<li>adding many own ActivityPub extensions to the mix which werent used in any of the above mentioned projects</li>
<li>we now have an even different standard</li>
</ul>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="23" data-paginate="true" data-marpit-pagination="23" data-marpit-pagination-total="32" style="--paginate:true;">
<h1 id="mastodon-messing-up-things">Mastodon messing up things</h1>
<h3 id="the-issue-with-that">The issue with that</h3>
<ul>
<li>Mastodon is by far the biggest fediverse project</li>
<li>When mastodon implements something a specific way it turns the de-facto standard</li>
<li>bad standards impact the fediverse as a whole</li>
</ul>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="24" data-paginate="true" data-marpit-pagination="24" data-marpit-pagination-total="32" style="--paginate:true;">
<h1 id="mastodon-messing-things-up">Mastodon messing things up</h1>
<h3 id="things-already-messed-up">Things already messed up</h3>
<ul>
<li>LD-signing</li>
<li>bad sanity checking of AP ids</li>
<li>Mastodon storing activities using internal IDs instead of using the provided IDs</li>
<li>no single implementation of the AP C2S api (yes that exists), they rather use their own
<ul>
<li>goal is to preserve a &quot;Mastodon User Experience&quot; by not implementing it</li>
</ul>
</li>
<li>and soon... Groups</li>
</ul>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="25" data-paginate="true" data-marpit-pagination="25" data-marpit-pagination-total="32" style="--paginate:true;">
<h1 id="why-things-are-like-this">Why things are like this</h1>
<ul>
<li>every project working on its own</li>
<li>no real unified effort between fediverse software maintainers to unify features</li>
<li>working together was tried before, but suffered from disagreement between different software projects</li>
<li>every software maintainer playing &quot;mini dictator&quot;</li>
<li>Mastodon having a monopoly, caused my 90% of people being on the 10 most populated instances (which run on mastodon exclusively)</li>
</ul>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="26" data-paginate="true" data-marpit-pagination="26" data-marpit-pagination-total="32" style="--paginate:true;">
<h1 id="how-things-could-get-better">How things could get better</h1>
<ul>
<li>Fediverse Enhancement Proposals</li>
<li>standardize activitypub examples using w3c</li>
<li>AP C2S</li>
<li>people moving from big instances to small ones
<ul>
<li>selfhost it!</li>
</ul>
</li>
</ul>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="27" data-paginate="true" data-footer="all that implement it" data-marpit-pagination="27" data-marpit-pagination-total="32" style="--paginate:true;--footer:all that implement it;">
<h1 id="activitypub-client-to-server">Activitypub Client to Server</h1>
<ul>
<li>part of the original AP spec</li>
<li>never got implemented fully anywhere</li>
<li>some clients existed for it</li>
<li>Pleroma started implementation of it, Mastodon refused to do it for 5 years in a row</li>
<li>essentially universal API for all activitypub servers, using the same standards as between server communication</li>
<li>makes it able to use one client for all* AP servers</li>
</ul>
<ul>
<li>takes much load of the server</li>
</ul>
<footer>all that implement it</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="28" data-paginate="true" data-marpit-pagination="28" data-marpit-pagination-total="32" style="--paginate:true;">
<h1 id="selfhost-it">Selfhost it!</h1>
<ul>
<li>big instances work against decentralisation of the fediverse
<ul>
<li>reason Mastodon got the biggest fedi software in the first place</li>
</ul>
</li>
<li>own instances gives you independance</li>
<li>lets you deal with fediblocks yourself</li>
</ul>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="29" data-paginate="true" data-marpit-pagination="29" data-marpit-pagination-total="32" style="--paginate:true;">
<h1 id="issues-with-self-hosting">Issues with self hosting</h1>
<ul>
<li>money</li>
<li>one needs to administer the instance themself</li>
<li>your server hardware may be overwhelmed</li>
<li>fedi consumes much storage</li>
</ul>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="30" data-paginate="true" data-marpit-pagination="30" data-marpit-pagination-total="32" style="--paginate:true;">
<h1 id="how-to-selfhost">How to selfhost</h1>
<ul>
<li>get suitable hardware &amp; domain</li>
<li>What instance do you want?</li>
<li>How do you want to deploy it?</li>
<li>Do you want to use a S3 bucket?</li>
<li>Follow relays!</li>
</ul>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="31" data-paginate="true" data-marpit-pagination="31" data-marpit-pagination-total="32" style="--paginate:true;">
<h1 id="what-can-the-future-hold">What can the future hold?</h1>
<h3 id="universal-peer-to-peer">Universal Peer-to-peer</h3>
<h3 id="more-smaller-instances">More smaller instances</h3>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="32" data-paginate="true" data-marpit-pagination="32" data-marpit-pagination-total="32" style="--paginate:true;">
<h1 id="ending-words">Ending words</h1>
<h2 id="distrust-authorities---promote-decentralisation">Distrust authorities - promote decentralisation</h2>
2023-06-14 10:45:03 +00:00
</section>
<script>!function(){"use strict";const t={h1:{proto:()=>HTMLHeadingElement,attrs:{role:"heading","aria-level":"1"},style:"display: block; font-size: 2em; margin-block-start: 0.67em; margin-block-end: 0.67em; margin-inline-start: 0px; margin-inline-end: 0px; font-weight: bold;"},h2:{proto:()=>HTMLHeadingElement,attrs:{role:"heading","aria-level":"2"},style:"display: block; font-size: 1.5em; margin-block-start: 0.83em; margin-block-end: 0.83em; margin-inline-start: 0px; margin-inline-end: 0px; font-weight: bold;"},h3:{proto:()=>HTMLHeadingElement,attrs:{role:"heading","aria-level":"3"},style:"display: block; font-size: 1.17em; margin-block-start: 1em; margin-block-end: 1em; margin-inline-start: 0px; margin-inline-end: 0px; font-weight: bold;"},h4:{proto:()=>HTMLHeadingElement,attrs:{role:"heading","aria-level":"4"},style:"display: block; margin-block-start: 1.33em; margin-block-end: 1.33em; margin-inline-start: 0px; margin-inline-end: 0px; font-weight: bold;"},h5:{proto:()=>HTMLHeadingElement,attrs:{role:"heading","aria-level":"5"},style:"display: block; font-size: 0.83em; margin-block-start: 1.67em; margin-block-end: 1.67em; margin-inline-start: 0px; margin-inline-end: 0px; font-weight: bold;"},h6:{proto:()=>HTMLHeadingElement,attrs:{role:"heading","aria-level":"6"},style:"display: block; font-size: 0.67em; margin-block-start: 2.33em; margin-block-end: 2.33em; margin-inline-start: 0px; margin-inline-end: 0px; font-weight: bold;"},span:{proto:()=>HTMLSpanElement},pre:{proto:()=>HTMLElement,style:"display: block; font-family: monospace; white-space: pre; margin: 1em 0; --marp-auto-scaling-white-space: pre;"}},e="data-marp-auto-scaling-wrapper",i="data-marp-auto-scaling-svg",n="data-marp-auto-scaling-container";class s extends HTMLElement{constructor(){super(),this.svgPreserveAspectRatio="xMinYMid meet";const t=t=>([e])=>{const{width:i,height:n}=e.contentRect;this[t]={width:i,height:n},this.updateSVGRect()};this.attachShadow({mode:"open"}),this.containerObserver=new ResizeObserver(t("containerSize")),this.wrapperObserver=new ResizeObserver(((...e)=>{t("wrapperSize")(...e),this.flushSvgDisplay()}))}static get observedAttributes(){return["data-downscale-only"]}connectedCallback(){var t,s,o,r,a;this.shadowRoot.innerHTML=`\n<style>\n svg[${i}] { display: block; width: 100%; height: auto; vertical-align: top; }\n span[${n}] { display: table; white-space: var(--marp-auto-scaling-white-space, nowrap); width: max-content; }\n</style>\n<div ${e}>\n <svg part="svg" ${i}>\n <foreignObject><span ${n}><slot></slot></span></foreignObject>\n </svg>\n</div>\n `.split(/\n\s*/).join(""),this.wrapper=null!==(t=this.shadowRoot.querySelector(`div[${e}]`))&&void 0!==t?t:void 0;const l=this.svg;this.svg=null!==(o=null===(s=this.wrapper)||void 0===s?void 0:s.querySelector(`svg[${i}]`))&&void 0!==o?o:void 0,this.svg!==l&&(this.svgComputedStyle=this.svg?window.getComputedStyle(this.svg):void 0),this.container=null!==(a=null===(r=this.svg)||void 0===r?void 0:r.querySelector(`span[${n}]`))&&void 0!==a?a:void 0,this.observe()}disconnectedCallback(){this.svg=void 0,this.svgComputedStyle=void 0,this.wrapper=void 0,this.container=void 0,this.observe()}attributeChangedCallback(){this.observe()}flushSvgDisplay(){const{svg:t}=this;t&&(t.style.display="inline",requestAnimationFrame((()=>{t.style.display=""})))}observe(){this.containerObserver.disconnect(),this.wrapperObserver.disconnect(),this.wrapper&&this.wrapperObserver.observe(this.wrapper),this.container&&this.containerObserver.observe(this.container),this.svgComputedStyle&&this.observeSVGStyle(this.svgComputedStyle)}observeSVGStyle(t){const e=()=>{const i=(()=>{const e=t.getPropertyValue("--preserve-aspect-ratio");if(e)return e.trim();return`x${(({textAlign:t,direction:e})=>{if(t.endsWith("left"))return"Min";if(t.endsWith("right"))return"Max";if("start"===t||"end"===t){let i="rtl"===e;return"end"===t&&(i=!i),i?"Max":"Min"}return"Mid"})(t)}YMid meet`})();i!==this.svgPreserveAspectRatio&&(this.svgPreserveAspectRatio=i,this.updateSVGRect()),t===this.svgComputedStyle&&requestAnimationFrame(e)};e()
2023-06-19 07:40:24 +00:00
</script></foreignObject></svg></div><div class="bespoke-marp-note" data-index="0" tabindex="0"><p>![h:250 bg right](https://upload.wikimedia.org/wikipedia/commons/thumb/9/93/Fediverse_logo_proposal.svg/2048px-Fediverse_logo_proposal.svg.png)</p></div><script>/*!! License: https://unpkg.com/@marp-team/marp-cli@3.0.0/lib/bespoke.js.LICENSE.txt */
!function(){"use strict";function e(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var t={from:function(e,t){var n,r=1===(e.parent||e).nodeType?e.parent||e:document.querySelector(e.parent||e),o=[].filter.call("string"==typeof e.slides?r.querySelectorAll(e.slides):e.slides||r.children,(function(e){return"SCRIPT"!==e.nodeName})),i={},a=function(e,t){return(t=t||{}).index=o.indexOf(e),t.slide=e,t},s=function(e,t){i[e]=(i[e]||[]).filter((function(e){return e!==t}))},l=function(e,t){return(i[e]||[]).reduce((function(e,n){return e&&!1!==n(t)}),!0)},c=function(e,t){o[e]&&(n&&l("deactivate",a(n,t)),n=o[e],l("activate",a(n,t)))},d=function(e,t){var r=o.indexOf(n)+e;l(e>0?"next":"prev",a(n,t))&&c(r,t)},u={off:s,on:function(e,t){return(i[e]||(i[e]=[])).push(t),s.bind(null,e,t)},fire:l,slide:function(e,t){if(!arguments.length)return o.indexOf(n);l("slide",a(o[e],t))&&c(e,t)},next:d.bind(null,1),prev:d.bind(null,-1),parent:r,slides:o,destroy:function(e){l("destroy",a(n,e)),i={}}};return(t||[]).forEach((function(e){e(u)})),n||c(0),u}},n=e(t);const r=document.body,o=(...e)=>history.replaceState(...e),i="presenter",a="next",s=["",i,a],l="bespoke-marp-",c=`data-${l}`,d=(e,{protocol:t,host:n,pathname:r,hash:o}=location)=>{const i=e.toString();return`${t}//${n}${r}${i?"?":""}${i}${o}`},u=()=>r.dataset.bespokeView,f=e=>new URLSearchParams(location.search).get(e),m=(e,t={})=>{var n;const r={location,setter:o,...t},i=new URLSearchParams(r.location.search);for(const t of Object.keys(e)){const n=e[t];"string"==typeof n?i.set(t,n):i.delete(t)}try{r.setter({...null!==(n=window.history.state)&&void 0!==n?n:{}},"",d(i,r.location))}catch(e){console.error(e)}},g=(()=>{const e="bespoke-marp";try{return localStorage.setItem(e,e),localStorage.removeItem(e),!0}catch(e){return!1}})(),p=e=>{try{return localStorage.getItem(e)}catch(e){return null}},v=(e,t)=>{try{return localStorage.setItem(e,t),!0}catch(e){return!1}},h=e=>{try{return localStorage.removeItem(e),!0}catch(e){return!1}},y=(e,t)=>{const n="aria-hidden";t?e.setAttribute(n,"true"):e.removeAttribute(n)},b=e=>{e.parent.classList.add(`${l}parent`),e.slides.forEach((e=>e.classList.add(`${l}slide`))),e.on("activate",(t=>{const n=`${l}active`,r=t.slide,o=r.classList,i=!o.contains(n);if(e.slides.forEach((e=>{e.classList.remove(n),y(e,!0)})),o.add(n),y(r,!1),i){const e=`${n}-ready`;o.add(e),document.body.clientHeight,o.remove(e)}}))},w=e=>{let t=0,n=0;Object.defineProperty(e,"fragments",{enumerable:!0,value:e.slides.map((e=>[null,...e.querySelectorAll("[data-marpit-fragment]")]))});const r=r=>void 0!==e.fragments[t][n+r],o=(r,o)=>{t=r,n=o,e.fragments.forEach(((e,t)=>{e.forEach(((e,n)=>{if(null==e)return;const i=t<r||t===r&&n<=o;e.setAttribute(`${c}fragment`,(i?"":"in")+"active");const a=`${c}current-fragment`;t===r&&n===o?e.setAttribute(a,"current"):e.removeAttribute(a)}))})),e.fragmentIndex=o;const i={slide:e.slides[r],index:r,fragments:e.fragments[r],fragmentIndex:o};e.fire("fragment",i)};e.on("next",(({fragment:i=!0})=>{if(i){if(r(1))return o(t,n+1),!1;const i=t+1;e.fragments[i]&&o(i,0)}else{const r=e.fragments[t].length;if(n+1<r)return o(t,r-1),!1;const i=e.fragments[t+1];i&&o(t+1,i.length-1)}})),e.on("prev",(({fragment:i=!0})=>{if(r(-1)&&i)return o(t,n-1),!1;const a=t-1;e.fragments[a]&&o(a,e.fragments[a].length-1)})),e.on("slide",(({index:t,fragment:n})=>{let r=0;if(void 0!==n){const o=e.fragments[t];if(o){const{length:e}=o;r=-1===n?e-1:Math.min(Math.max(n,0),e-1)}}o(t,r)})),o(0,0)},x=document,k=()=>!(!x.fullscreenEnabled&&!x.webkitFullscreenEnabled),$=()=>!(!x.fullscreenElement&&!x.webkitFullscreenElement),E=e=>{e.fullscreen=()=>{k()&&(async()=>{return $()?null===(e=x.exitFullscreen||x.webkitExitFullscreen)||void 0===e?void 0:e.call(x):((e=x.body)=>{var t;return null===(t=e.requestFullscreen||e.webkitRequestFullscreen)||void 0===t?void 0:t.call(e)})();var e})()},document.addEventListener("keydown",(t=>{"f"!==t.key&&"F11"!==t.key||t.altKey||t.ctrlKey||t.metaKey||!k()||(e.fullscreen(),t.preventDefault())}))},L=`${l}inactive`,S=(e=2e3)=>({parent:t,fire:n})=>{c