\documentclass{beamer}
\usepackage[english]{babel}
\usepackage{color}
\usepackage{graphicx}
\usepackage{ifthen}
\usepackage[utf8]{inputenc}
\usepackage{ulem}
\usepackage{listings}
\usepackage{pdfpages}
\usepackage{tikz}
\usepackage{xtab}

\newcommand{\outputpicture}[2] {
  {\includegraphics[scale=#1]{output/#2}}
}
\newcommand{\devicepicture}[1] {
  {\includegraphics[scale=0.5]{../../external_resources/replicant_website/images/supported-devices/#1.png}}
}

%% \usetheme{Singapore}

\title{Extending the lifetime of smartphones with Replicant, a fully free Android distribution}
\author{Denis 'GNUtoo' Carikli and David 'dllud' Ludovino}
\date{\today}

\begin{document}

\maketitle

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Introduction}

\begin{frame}
  \center{Introduction}
\end{frame}

\begin{frame}
  \center{Replicant:}
  \begin{itemize}
  \item Fully free Android distribution approved by the FSF
  \item But the hardware it runs on is not...
  \item More details on hardware related freedom issues later %% TODO
  \end{itemize}
\end{frame}

\begin{frame}
  \center{Quick Facts}
  \begin{itemize}
  \item Website: replicant.us
  \item Exists since September 2009
  \item Currently based on LineageOS
  \item Android versions:
    \begin{itemize}
    \item Replicant 6: Android 6, last security update: October 2017\cite{last-android-6-update}
    \item Replicant 9: Android 9, work in progress\cite{porting-to-android-9}
    \end{itemize}
  \item Supports $\sim$ 10 devices (smartphones and tablets)
  \item $\sim$ 2 full time equivalent contributors and a big community
  \end{itemize}
\end{frame}

\begin{frame}
  \center{Minimum feature set required to support a device:}
  \begin{itemize}
  \item Display working and graphics fast enough
  \item sound working
  \item Be able to make calls
  \item etc
  \item GPS, Camera, and other non crucial hardware may not work, or work in later releases
  \end{itemize}
\end{frame}

{
  \begin{frame}
    \center{A very short introduction on hardware:}
    \outputpicture{0.8}{i9300_hardware.png}
    \begin{itemize}
    \item System on a chip
    \item Smartphones and the modem
    \end{itemize}
  \end{frame}
}

{
  \begin{frame}
    \center{Freedom issues in supported devices}
    \outputpicture{0.8}{i9300_hardware.png}
    \begin{itemize}
    \item The cellular network
    \item The modem firmware
    \item Other nonfree fimrwares
    \item Bootloaders and TrustZone
    \item Upstream anti-feature and huge code base
    \end{itemize}
  \end{frame}
}

{
  \begin{frame}
    \center{Freedom issues in LineageOS (without google play)}
    \outputpicture{0.8}{i9300_hardware.png}
    \begin{itemize}
    \item + Modem control over the device (MSM7K) or shared memory
    \item + Nonfree libraries (ril backdoor, etc)
    \item + Anti-features
    \end{itemize}
  \end{frame}
}

{
  \begin{frame}
    \center{Worst case with stock devices:}
    \begin{itemize}
    \item + Only the kernel is free software
    \item + Users potentially locked out of their devices
    \item + Many Anti-features or unwanted applications
    \item $\rightarrow$ Remining freedoms: The ability to install F-Droid or other applications
    \end{itemize}
  \end{frame}
}

\begin{frame}
  \center{Why Android?}
  \begin{itemize}
  \item Advantages:
    \begin{itemize}
    \item GUI and applications adapted to big fingers
    \item $\rightarrow$ run on devices that:
      \begin{itemize}
      \item lack keyboard
      \item have capacitve touchscreen and no stylus
      \item Have very small displays with very high number of pixel
      \end{itemize}
    \end{itemize}
  \item Issues
    \begin{itemize}
    \item Part of the GNU/Linux software architecture is light years away: Package management and build system, Graphics, audio, etc
    \item Huge unknown code from google
    \item Meant to run proprietary software, not to empower users
    \end{itemize}
  \end{itemize}
\end{frame}

\begin{frame}
  \center{Android: From time to market driven architecture to substainability}
  \begin{itemize}
  \item SOCs, WiFi chips, smartphones and tablets
    \begin{itemize}
    \item Write the code that work as fast as possible
    \item Support as many hardware features as possible
    \item $\rightarrow$ Varying code quality
    \item $\rightarrow$ Example: One driver rewritten 3 times %% TODO: reference
    \end{itemize}
  \item Breaking Kernel API and ABI
    \begin{itemize}
    \item It can take time (years) to bring in a new framework in Linux
    \item Example of API breakage: HTC dream audio driver
    \item Solution: Apps $\leftrightarrow$ Android framework $\leftrightarrow$ HAL $\leftrightarrow$ Kernel
    \item Getting better in Android: Trebble and Generic Kernel images
    \end{itemize}
  \end{itemize}
\end{frame}

\begin{frame}
  \center{Ugly code is good (for freedom):}
  %% TODO: replace with [blobby from OpenBSD] VS [dirty tux] -> [freedo]
  \begin{itemize}
  \item Having the source code under free software licenses, even if the code quality is bad is crucial for freedom:
    \begin{itemize}
    \item Hardware bringup is often made that way anyway
    \item Things can be improved later:
      always be cleaned up later or if the code quality is too bad, rewritten from scratch
    \item Having the source code under a free software license is very important
    \item Worst case: use the source code as documentation or reverse engineer it (add prints)
    \end{itemize}
  \item $\rightarrow$ We depend on that source code
  \end{itemize}
\end{frame}

%% TODO: free your mind / bend the rules
%% - Number of smartphones models made each year
%% -> Another way to look at it

%% Freedom
%% (climate activists, etc)

%% \begin{frame}
%%   \center{From a purely sustainable perspective:}
%%   \begin{xtabular}{ll}
%%     Big brand old devices & Big brand new devices \\
%%     Removable battery & Battery too difficult to replace \\
%%     Device specific kernel & Device specific modules \\
%%     Changing HAL API & HAL API being versioned \\
%%   \end{xtabular}
%% \end{frame}

\section{Part II}
\begin{frame}
  \center{Part II}
\end{frame}

\begin{frame}
  \center{Replicant 6 $\rightarrow$ More rencent Android}
\end{frame}

\begin{frame}
  \center{Devices supported by Lineage 16 with a removable battery}
\end{frame}

\begin{frame}
  \begin{itemize}
    \item Qualcomm MSM8*:
    \begin{itemize}
      \item Fairphone: FP2
      \item LG: G3 (many versions)
      \item OPPO: Find 7a/s
      \item Samsung: Galaxy Note 3 LTE (Many versions)
      \item Samsung: Galaxy S III Neo (2 versions)
      \item Samsung: Galaxy S5 Active
      \item Samsung: Galaxy S5 LTE (Many versions)
      \item Samsung: Galaxy S5 LTE Duos (Many versions)
      \item Wileyfox: Swift
    \end{itemize}
    \item Qualcomm APQ8*
    \begin{itemize}
      \item Samsung: Galaxy S4 (Many versions)
      \item Samsung: Galaxy S4 Value Edition (GT-I9515/L)
      \item Samsung: Galaxy S4 Active
      \item Samsung: Galaxy S5 LTE-A
      \item Samsung: Galaxy S5 Plus
    \end{itemize}
    \item Samsung Exynos 7580:
    \begin{itemize}
    \item Samsung: Galaxy S5 Neo
    \end{itemize}
  \end{itemize}
\end{frame}

\begin{frame}
  \center{Limiting the freedom, privacy and security attacks}
  \begin{itemize}
    \item Isolated modem:
    \begin{itemize}
      \item Modem not in the SOC
      \item No shared memory (RAM) between the modem and the SOC
      \begin{itemize}
        \item HSIC: USB-like, the host control re-enumeration
        \item MIPI: Should be ok, not extensively reviewed
      \end{itemize}
    \end{itemize}
  \end{itemize}
\end{frame}

\begin{frame}
  \begin{itemize}
    \item \sout{Qualcomm MSM8*:} Modem in the SOC
    \begin{itemize}
      \item \sout{Fairphone: FP2}
      \item \sout{LG: G3 (many versions)}
      \item \sout{OPPO: Find 7a/s}
      \item \sout{Samsung: Galaxy Note 3 LTE (Many versions)}
      \item \sout{Samsung: Galaxy S III Neo (2 versions)}
      \item \sout{Samsung: Galaxy S5 Active}
      \item \sout{Samsung: Galaxy S5 LTE (Many versions)}
      \item \sout{Samsung: Galaxy S5 LTE Duos (Many versions)}
      \item \sout{Wileyfox: Swift}
    \end{itemize}
    \item Qualcomm APQ8*
    \begin{itemize}
      \item Samsung: Galaxy S4 (Many versions)
      \item Samsung: Galaxy S4 Value Edition (GT-I9515/L)
      \item Samsung: Galaxy S4 Active
      \item Samsung: Galaxy S5 LTE-A
      \item Samsung: Galaxy S5 Plus
    \end{itemize}
    \item Samsung Exynos 7580:
    \begin{itemize}
    \item \sout{Samsung: Galaxy S5 Neo} Modem $\leftrightarrow$ SOC: shared memory
    \end{itemize}
  \end{itemize}
\end{frame}

\begin{frame}
  \center{Hmmm}
  \begin{itemize}
    \item $\rightarrow$ No Exynos with removable battery and isolated modem.
    \item $\rightarrow$ All the devices supported by Replicant 6.0 have been dropped.
    \item $\rightarrow$ We'd like to support the devices longer...
    \item The APQ* also look interesting, we would need to do more research on it:
    \begin{itemize}
      \item Isolated modem?
      \item Upstream support for the SOC?
      \item Nonfree bootloader? (signed?)
      \item Probably way more work needed (different modem, more upstreaming work)
    \end{itemize}
    \item We also took the decision when LineageOS didn't support thoses.
  \end{itemize}
\end{frame}

\section{Part III}
\begin{frame}
  \center{Part III}
\end{frame}

\begin{frame}
    \center{Already supported by Replicant 6.0:}
    \begin{itemize}
      \item Galaxy SIII (I9300): Good upstream status, modem support lacking, and other small fixes to do.
      \item Galaxy Note II (I9300): Good upstream status, modem and display support lacking
      \item Galaxy SIII 4G (I9305) and Galaxy Note II 4G (N7105): Different modem
    \end{itemize}
\end{frame}

\begin{frame}
    \center{Let's make them more substainable:}
    \begin{itemize}
      \item $\rightarrow$ Upstream Linux $\rightarrow$ We can support them longer.
      \item Remaining issues:
        \begin{itemize}
          %% $\rightarrow$ Repurpose the device and run GNU/Linux when not supported anymore.
        \item RAM size and new Android versions
        \item Nonfree bootloader
      \end{itemize}
    \end{itemize}
\end{frame}

\begin{frame}
  \center{Nonfree bootloader}
    \begin{itemize}
    \item Incompatible with Linux since year 2000
    \item Nonfree $\rightarrow$ Incentive to drop the device
    \item Partially free u-boot port
    \item Research to understand if we can make it fully free (xboot)
    \end{itemize}
\end{frame}

\begin{frame}
    \center{Some funding later...}
\end{frame}

\begin{frame}
    \center{Already supported by Replicant 6.0}
    \begin{itemize}
    \item Booting devices and inited the modem
    \item Still work to do
    \item Slowed down by conferences and other Replicant work (xboot, Replicant 6, etc)
    \end{itemize}
\end{frame}

\begin{frame}
    \center{Future directions}
    \begin{itemize}
    \item Finish the research on xboot
    \item Look into devices like the PinePhone and the Librem5
    \item Share more work with GNU/Linux upstream (ofono, other hardware support libraries)
    \end{itemize}
\end{frame}

%% \begin{frame}
%%   Licenses:
%%   \begin{itemize}
%%   \item The SIM card and BTS pictures comes from \url{https://en.wikipedia.org/wiki/File:Gsm_network.png} and are under the GFDL 1.2 or the Creative commons Attributions-Share ALike 3.0 Unported.
%%     \begin{itemize}
%%     \item GSM: \url{http://wiki.openmoko.org/wiki/QtMoko}
%%     \item SHR pictures: \url{http://wiki.openmoko.org/wiki/SHR_User_Manual}
%%     \end{itemize}
%%   \item HTC Dream: \url{https://commons.wikimedia.org/wiki/File:HTC_Dream_opened.jpg}
%%     Creative Commons Attribution 3.0 Unported
%%   \item \url{https://creativecommons.org/licenses/by-sa/4.0/} for the rest.
%%   \end{itemize}
%% \end{frame}

%% TODO
%% \begin{thebibliography}{99}
%% \bibitem{stalin-dream}
%%   \url{https://stallman.org/archives/2011-nov-feb.html}
%% \end{thebibliography}
\end{document}
