% $Header$
% use lualatex for compilation

\documentclass[aspectratio=169,navbar=false]{beamer}

% This file is a solution template for:

% - Talk at a conference/colloquium.
% - Talk length is about 20min.
% - Style is ornate.



% Copyright 2004 by Till Tantau <tantau@users.sourceforge.net>.
%
% In principle, this file can be redistributed and/or modified under
% the terms of the GNU Public License, version 2.
%
% However, this file is supposed to be a template to be modified
% for your own needs. For this reason, if you use this file as a
% template and not specifically distribute it as part of a another
% package/program, I grant the extra permission to freely copy and
% modify this file as you see fit and even to delete this copyright
% notice. 


\mode<presentation>
{
  \usetheme[cd2018,noddc,darktitlepage]{tud}
  \usecolortheme{tud}
  % or ...

  %\setbeamercovered{transparent}
  % or whatever (possibly just delete it)
}

% notes on 2nd screen:
\usepackage{pgfpages}
\setbeameroption{show notes on second screen}

\usepackage[british]{babel}
% or whatever

\usepackage[backend=biber, sorting=none]{biblatex}

\usepackage{ccicons}

\usepackage{ifluatex}

\ifluatex
\usepackage{fontspec}
%\setmainfont{TeX Gyre Pagella}
%\RequirePackage{unicode-math}
  %\setmathfont{XITS Math}
  %\setmainfont{Open Sans}
  %\setsansfont{Open Sans}
   %\setmathfont[range={it}]{Open Sans:style=Italic}
   %\setmathfont[range={it}]{Open Sans}

\else
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
% Or whatever. Note that the encoding and the font should match. If T1
% does not look nice, try deleting the line with the fontenc.
\fi

\title[Decentralised Hashtag Federation] % (optional, use only with long paper titles)
{Decentralised Hashtag Search and Subscription
for Federated Social Networks}

\author
{Trolli Schmittlauch}
% - Give the names in the same order as the appear in the paper.
% - Use the \inst{?} command only if the authors have different
%   affiliation.

\institute[] % (optional, but mostly needed)
{
  Department of Computer Science\\
  Technical University Dresden
}

\date[APConf 2019] % (optional, should be abbreviation of conference name)
{ActivityPubConf 2019}
\datecity{Prague}
% - Either use conference name or its abbreviation.
% - Not really informative to the audience, more for people (including
%   yourself) who are reading the slides online

%\subject{Privacy}
% This is only inserted into the PDF information catalog. Can be left
% out. 



% If you have a file called "university-logo-filename.xxx", where xxx
% is a graphic format that can be processed by latex or pdflatex,
% resp., then you can add a logo as follows:

% \pgfdeclareimage[height=0.5cm]{university-logo}{university-logo-filename}
% \logo{\pgfuseimage{university-logo}}



% Delete this, if you do not want the table of contents to pop up at
% the beginning of each subsection:
%\AtBeginSubsection[]
%{
%  \begin{frame}<beamer>{Outline}
%    \tableofcontents[currentsection,currentsubsection]
%  \end{frame}
%}


% If you wish to uncover everything in a step-wise fashion, uncomment
% the following command: 

%\beamerdefaultoverlayspecification{<+->}


\begin{document}

\maketitle

\note{introduce myself:\\
known as schmittlauch on the Internet\\
student of Computer Science @ TU Dresden\\
interest in federated systems and unusual social networks\\
presenting my work on a study paper from this year}


\begin{frame}{Outline}
  \tableofcontents
  % You might wish to add the option [pausesections]
\end{frame}


% Structuring a talk is a difficult task and the following structure
% may not be suitable. Here are some rules that apply for this
% solution: 

% - Exactly two or three sections (other than the summary).
% - At *most* three subsections per section.
% - Talk about 30s to 2min per frame. So there should be between about
%   15 and 30 frames, all told.

% - A conference audience is likely to know very little of what you
%   are going to talk about. So *simplify*!
% - In a 20min talk, getting the main ideas across is hard
%   enough. Leave out details, even if it means being less precise than
%   you think necessary.
% - If you omit details that are vital to the proof/implementation,
%   just say so once. Everybody will be happy with that.

\section{Motivation}

\begin{frame}{Welcome to ActivityPubConf!}{Motivation}


\only<1>{
  \includegraphics[width=\textwidth]{figures/toot_nohashtags.png}
  \note{Who has been posting about this Conference?}
}
\only<2>{
  \includegraphics[width=\textwidth]{figures/toot_hashtags.png}
  \note{And who used \#ActivityPubConf?}
}
\end{frame}


\subsection{Importance of \#Hashtags}

\begin{frame}{Importance of \#Hashtags}{}

Hashtags are used for marking posts about certain topics or events:
\note{mark topics of posts, make them discoverable by content. No full text search in fediverse}
  \begin{columns}
  \begin{column}{0.47\textwidth}

    \begin{itemize}
    \item<1-> \textbf{events}: \#ActivityPubConf, \#CCCamp19
    \item<2-> \textbf{political topics}: \#SaveTheInternet
    \item<3-> \textbf{general topics}: \#mastoadmin, \#Tusky
    \item<4-> \textbf{ongoing demonstrations}: \#GeziPark, \#WomensMarch
    \item<5-> \textbf{social movements}: \#MeToo
    \end{itemize}
  \end{column}
  \begin{column}{0.5\textwidth}
  \begin{overlayarea}{\textwidth}{0.6\paperheight}
  \center
  \only<1>{
    \includegraphics[width=\textwidth]{figures/APConfLogo.png}
  }
  \only<2>{
    \includegraphics[height=0.58\paperheight]{figures/hashtag_savetheinternet.jpg}\\
    \tiny{\href{https://www.flickr.com/photos/8183946@N05/14733648892}{"Obama in the Backseat: Rally to Save the Internet"} by \href{https://www.flickr.com/photos/8183946@N05}{Free Press Pics} is licensed under \href{https://creativecommons.org/licenses/by-sa/2.0/?ref=ccsearch&atype=rich}{CC BY-SA 2.0} \ccbysa}
  }
  \only<3>{
    \includegraphics[height=0.6\paperheight]{figures/Elephant_Friend_(Greeting).png}
  }
  \only<4>{
    \includegraphics[width=\textwidth]{figures/hashtag_gezipark.jpg}
  }
  \only<5>{
  \includegraphics[height=0.6\paperheight]{figures/hashtag_metoo.jpg}\\
  \tiny{\href{https://www.flickr.com/photos/50612692@N04/28039368079}{"IMG\_4263"} by \href{https://www.flickr.com/photos/50612692@N04}{GGAADD} is licensed under \href{https://creativecommons.org/licenses/by-sa/2.0/?ref=ccsearch&atype=rich}{CC BY-SA 2.0} \ccbysa}
}
  \end{overlayarea}
  \end{column}
  \end{columns}

\end{frame}

\subsection{State of Hashtags in the Fediverse}

\begin{frame}{State of Hashtags on the Fediverse}{}
{\center \Large Hashtags are used in the fediverse}
\pause 
\vspace{2em}

{\large But do they behave as expected?}
\end{frame}

\begin{frame}
\begin{columns}
 \begin{column}{0.5\textwidth}
 \begin{figure}
  \includegraphics[height=0.65\paperheight]{figures/{activitypubconf_toot.matereal.eu}.png}
  \caption{\#activitypubconf on the single-user instance \textit{toot.matereal.eu}}
 \end{figure}
 \end{column}
 
 \begin{column}{0.5\textwidth}
 \begin{figure}
  \includegraphics[height=0.65\paperheight]{figures/{activitypubconf_mastodon.social}.png}
  \caption{\#activitypubconf on the large instance \textit{mastodon.social}}
 \end{figure}
 \end{column}
 \end{columns}

\end{frame}

\begin{frame}{State of Hashtags on the Fediverse}{Fragmentation}
 \begin{itemize}
  \item fragmented view on hashtag posts depending on user's instance
  \item hashtag search only on locally known posts
  \item Result: incentive to cluster on large nodes \(\Leftarrow\) centralisation
 \end{itemize}

\end{frame}

\begin{frame}{Reason}{Push-Federation}
  \begin{columns}
  \begin{column}{0.55\textwidth}
  \includegraphics[height=0.6\paperheight]{figures/push_federation.pdf}
  \end{column}
  
  \begin{column}{0.45\textwidth}
 \begin{itemize}
  
  \only<1>{\item subscription to \texttt{@alice@cyber.space} by contacting instance \texttt{cyber.space}}
  \only<2>{\item all future posts by alice are delivered to instances of subscribers, but \textit{not} instances without any subscriber}
  \only<3>{\item other ways for posts to reach an instance:\\ boosts, thread resolution}
 \end{itemize}
 \end{column}
 \end{columns}
\end{frame}

\begin{frame}{Current Solutions}
 \begin{itemize}
  \item Mastodon PubRelay or Pleroma lite-pub relay:
  \begin{itemize}
   \item centralised actor relaying all incoming posts
   \item single point of failure, which relay to choose?
   \item relaying all incoming posts \(\Rightarrow\) huge load on small instances
   \item only access to posts sent after initial subscribtion
  \end{itemize}
  \item Diaspora* SocialRelay
  \begin{itemize}
   \item similar, but allows subscribing to certain tags only
  \end{itemize}


 \end{itemize}

\end{frame}




\section{System Architecture}

\begin{frame}{System Architecture}{Goals}
\begin{itemize}
 \item \textbf{relay \& subscribe}: instances can subscribe to all public posts of a hashtag
 \item \textbf{store \& query}: instances can retrieve 1 year of history for a hashtag without subscription
 \item fully decentralised, no single point of authority for all tags
\end{itemize}
\end{frame}

\begin{frame}{System Architecture}{adding a P2P backend to the fediverse}

core idea: distributing responsibility for tags using a \textbf{D}istributed \textbf{H}ash \textbf{T}able \note{distribute responsibility for posts of a hashtag = relaying \& storage}

\end{frame}

why even still use classic push federation?

\section{Discussion}

\begin{frame}{Discussion}{I need YOUR feedback}

I want feedback from all of you, no matter whether it's from a \textit{\LARGE technical} or from a \textit{\LARGE social perspective}.

\end{frame}

\subsection{Social Considerations}

\subsection{Technical Considerations}

CloudFlare

load and capacity factor

\section{Summary}

\begin{frame}{Summary}

  % Keep the summary *very short*.
  \begin{itemize}
  \item
    things can be \alert{highlighted}.
  \end{itemize}
  
  % The following outlook is optional.
  \vskip0pt plus.5fill
  \begin{itemize}
  \item
    Outlook
  \end{itemize}
\end{frame}



% All of the following is optional and typically not needed. 
\appendix
\section<presentation>*{\appendixname}
\subsection<presentation>*{For Further Reading}

\begin{frame}[allowframebreaks]
  \frametitle{References}
    
  
  
    %\bibliography{literature}
   
\end{frame}

\begin{frame}{Complete Paper}
\center
 \includegraphics[height=0.45\paperheight]{figures/qr_paper.png}\\
 \url{https://git.orlives.de/schmittlauch/paper_hashtag_federation/src/branch/master/paper_hashtag_federation.pdf}
 
\end{frame}


\begin{frame}
 
 \center\huge{Thank you for your attention!}
 
 %\includegraphics[height=0.5\textheight]{figures/nomnompingu.png}\tiny\footnote{CC-BY-SA 3.0 by Elektroll}
 
\end{frame}


\end{document}
