\documentclass[aspectratio=169]{beamer}
\usepackage[english]{babel}
\usepackage{color}
\usepackage{CJKutf8}
\usepackage{graphicx}
\usepackage{ifthen}
\usepackage[utf8]{inputenc}
\usepackage{listings}
\usepackage{longtable}
\usepackage{pdfpages}
\usepackage{xtab}

\lstdefinestyle{terminal}{
  backgroundcolor=\color{black},
  basicstyle=\scriptsize\color{green},
}

%% Based on:
%% https://tex.stackexchange.com/questions/136900/insert-a-full-page-image
\newcommand{\pictureframe}[1] {
  {
    \begin{frame}
      \noindent
      \resizebox{\textwidth}{\textheight}
                {\includegraphics{#1}}
                \hspace*{-\textwidth}
    \end{frame}
  }
}

\newcommand{\devicepicture}[1]{pictures/#1}

\newcommand{\includedevicepicture}[1]{
        {\includegraphics[width=.2\textwidth]{\devicepicture{#1}}}
}

\newcommand{\inline}[3]{
  \ifthenelse{\equal{top}{#2}}{
    \noindent
    \resizebox{\textwidth}{\textheight * 2 / 3}{#1}
    {#3}
  }{}
  \ifthenelse{\equal{bottom}{#2}}{
    {#3}
    \noindent
    \resizebox{\textwidth}{\textheight * 2 / 3}{#1}
  }{}
  \ifthenelse{\equal{right}{#2}}{
    \begin{columns}[T]
      \begin{column}{5cm}
        #3
      \end{column}
      \begin{column}{5cm}
        #1
      \end{column}
  \end{columns}
  }{}
}

\newcommand{\inlinepicture}[3]{
  \ifthenelse{\equal{right}{#2}}{
    \begin{columns}[T]
      \begin{column}{5cm}
        #3
      \end{column}
      \begin{column}{5cm}
        \includegraphics[width=5cm,height=8cm,keepaspectratio=true]{#1}
      \end{column}
    \end{columns}
  }{
    \inline{\includegraphics[keepaspectratio=true]{#1}}{#2}{#3}
  }
}
\usetheme{Singapore}

\title{Taking control over the means of production: Free software boot}

\author{Denis 'GNUtoo' Carikli}
\date{March 19, 2023}

\begin{document}

\maketitle

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

\begin{frame}
  \center{Controlling the means of production is the path to freedom}
\end{frame}

\begin{frame}
  \inlinepicture{output/W0128-NDdL_ZaD_Preparation_56926_small.jpg}{right}{
    \center{Real examples of taking control of the production:}
    \begin{itemize}
    \item The peasent movements / Via campesina
    \item Anarchist revolution in 1936 in Spain
    \item Zapatistas, Temporary autonomous zone, etc
    \item Theorized through work on the commons by Elinor Ostrom,
      Sivia Federici (Feminism and the politics of the commons), and
      probably many others people as well.
    \end{itemize}
  }
\end{frame}

\begin{frame}
  \center{The free software way}
  \begin{itemize}
  \item Considered as a commons but problematic dependencies (make few
    hardware, we don't make our own chips yet)
  \item "Reverse engineering, re-implementation and parallel operation":
    Hacking as transgressive infrastructuring:
    \url{https://web.archive.org/web/20230000000000*/https://mkorn.binaervarianz.de/pub/korn-cscw2016.pdf}
  \item (Re)implementations: From applications like Emacs, GCC (GNU) to the OS
    (GNU, GNU/Linux) and to free software Boot, hardware freedom, etc.
  \item (Also goes into other domains, but not the focus of this presentation).
  \end{itemize}
\end{frame}

\section{From free software applications down to the hardware}

\begin{frame}
  \center{Different levels of freedom}
  \center{Free applications $\rightarrow$ Common distro + common
    hardware $\rightarrow$ RYF + FSDG $\rightarrow$ Hardware freedom}
\end{frame}

\begin{frame}
  \inlinepicture{output/Libreoffice-flyer.jpg}{right}{
    \center{Free software applications}
  }
\end{frame}

\begin{frame}
  \inlinepicture{output/Libreoffice-flyer.jpg}{right}{
    \center{Use case: You already run GNU/Linux and want to do collective activities}
    \begin{itemize}
    \item Communication application: Example: gpg + email client
    \item Organization (association, company): Example: Libreoffice
    \end{itemize}
  }
\end{frame}

\begin{frame}
  \center{What if people don't already run free software OS?}

  \begin{longtable}[!t]{|p{1.5cm}|p{3cm}|p{3cm}|p{3cm}|p{3cm}|}
    \hline
    OS &
    Free compiler? &
    Restrictions? \\
    \hline
    Microsoft Windows &
    Yes (Mingw64, Msys2, Guix) &
    signed drivers (Wireshark and ncap) \\
    \hline
    Mac OS &
    %% VLC, Homebrew, Darling etc depend on Xcode
    No &
    %% Applications without any code signature cannot be run by
    %% default except from a computer's administrator account from [[MacOS]]
    Complicated to run (signed applications) \\
    \hline
    Android &
    Difficult / limited &
    usually no root access \\
    \hline
    iOS (iphone / ipads) &
    No &
    Apple prevents runing free software applications, censors
    applications, forbids real browsers, etc \\
    \hline
  \end{longtable}
\end{frame}

\begin{frame}
  \center{Issues}
  \begin{itemize}
  \item The applications have no control over the hardware: they need
    to ask the OS which then access network, the display etc on behalf
    of applications:
    \begin{itemize}
      \item A nonfree OS could spy on our mails for instance (Exemple:
        Microsoft adding plugins inside Firefox that had at least one
        security issue) $\rightarrow$ Puts people at risk and big
        issue witin movements that don't have the same agenda as
        Microsoft or states.
        \url{https://www.computerworld.com/article/2763687/sneaky-microsoft-plug-in-puts-firefox-users-at-risk.html}
      \item The OS can refuse to run an application or free software
        applications (iphones / ipads), prevent access to some
        resources (network drivers), etc.
    \end{itemize}
    \item Lot more issues, just an example: [insert your own issues here].
    \item $\rightarrow$ The OS must be free software
  \end{itemize}
\end{frame}

\begin{frame}
  \center{Solution: help people upgrade from nonfree OS to GNU/Linux}
  \begin{itemize}
  \item Install parties
  \item Finding people interested (might require to go find them
    outside of your community)
  \end{itemize}
\end{frame}

\begin{frame}
  \center{Extremely important but not sufficient (has many
    limitations)}
\end{frame}

\begin{frame}
  \center{The FSF has certifications for distributions and hardware:
    What can go wrong without them?}
\end{frame}

\begin{frame}
  \center{Distributions}
  \begin{itemize}
  \item Two different issues issues: Distribution/contributors and users
  \item Users: External repositories: Browsers addons (100\% free isn't sufficient)
  \item Distribution and users: Nonfree software
  \item $\rightarrow$ Less technical users often cannot know how to stay free software
  \item $\rightarrow$ Distribution don't want to fix (distribution policies)
  \end{itemize}
\end{frame}

\begin{frame}
  \center{Certified distributions}
  \begin{itemize}
  \item FSDG: Free system distribution guidelines: \url{https://gnu.org/distros}
  \item Not perfect but can collaborate to fix bugs.
    \begin{itemize}
    \item Lot of nonfree software removed. Users sometime find some,
      bugreport and get it removed. Need help from users.
    \item Third party repositories: Being worked on, still lot of work
      to do. Need help from users.
    \end{itemize}
  \end{itemize}
\end{frame}

\pictureframe{output/WiFi.jpg}

\begin{frame}
  \center{What about "hardware"? Same limitations than OS?}
  \begin{longtable}[!t]{|p{1.5cm}|p{3cm}|p{3cm}|p{3cm}|p{3cm}|}
    \hline
    Computer formfactor &
    Can run free OS? &
    Other retrictions? \\
    \hline
    PC with UEFI without restricted boot &
    Most of them, for now... &
    Can't change WiFi card, AMT \\
    \hline
    Huawei smartphone &
    No: \url{https://www.xda-developers.com/huawei-stop-providing-bootloader-unlock-codes/} &
    Cannot change the boot software, other OS loaded \\
    \hline
    Android &
    Difficult &
    usually no root access \\
    \hline
  \end{longtable}
\end{frame}

\begin{frame}
  \center{Issues: Software everywhere}
  \begin{itemize}    
  \item Management Engine: another computer to prevent users control:
    \url{https://www.fsf.org/blogs/sysadmin/the-management-engine-an-attack-on-computer-users-freedom}
  \item Smartphones: Similar issue: "Hidden" operating system launched
    by nonfree boot software: Example: Mobicore
    \url{https://www.replicant.us/freedom-privacy-security-issues.php}
  \item Raspberry PI: "Small" GPU firmware: full blown operating
    system is hidden in the "small" nonfree GPU firmware:
    \url{https://ownyourbits.com/2019/02/02/whats-wrong-with-the-raspberry-pi/}
  \item Smartphones: Tracking devices:
    \url{https://www.gnu.org/proprietary/malware-mobiles.html\#phone-communications}
  \item Again: not exaustive: [insert your own issue here].
  \end{itemize}
\end{frame}

\begin{frame}
  \center{Nonfree boot software + common distro can interact}
  \begin{itemize}
  \item Automatic updates with fwupd: Updates sometimes breaking
    computers, making it run slower, etc.
  \item Some boot software can also prevent downgrades (The Management
    engine has that for instance).
%%     \begin{itemize}
%%     \item \url{https://www.bleepingcomputer.com/news/technology/new-dell-bios-updates-cause-laptops-and-desktops-not-to-boot/}
%%     \end{itemize}
  \end{itemize}
\end{frame}

\begin{frame}
  \center{How to know it all?}
  \begin{itemize}
  \item Computers everywhere even in computers
  \item No guarantees with common comptuers
  \end{itemize}
\end{frame}

\begin{frame}
  \center{Solutions?}
  \begin{itemize}
  \item Work to replace nonfree software?
    \begin{itemize}
    \item High priority free software projects
      \url{https://www.fsf.org/campaigns/priority-projects/}
    \item Take a long time, not always possible
    \end{itemize}
  \item Making hardware that works without nonfree software?
    \begin{itemize}
    \item Not magic: require chips that work with free software already.
    \item Can be expensive to get (What if I don't have a lot of money?)
    \item Can be difficult to ship (What if I live in Palestine)
    \item Can be difficult to procure (States require big companies as
      small ones can't ship big quantities (like 500000 computers or
      more) and and companies are to be paid years later.)
    \end{itemize}
  \item FSF certifications?
    \begin{itemize}
    \item Works for non technical users (super important)
      $\rightarrow$ Can scale
    \item Help find nonfree software and know the status
    \item Also need hardware that works without nonfree software to
      stay usable.
    \end{itemize}
  \item $\rightarrow$ We need all of them
    \begin{itemize}
    \item Know what doesn't work $\rightarrow$ Start to fix
    \item Getting help from users (Thinkpenguin, ath9k\_htc)
    \end{itemize}
  \end{itemize}
\end{frame}

\begin{frame}
  \center{Why hardware and software certifications are
    complementary?}
  \begin{itemize}
  \item Even FSF certified distribution runs nonfree software if the
    computer is not certified. Examples: ACPI (comes from the
    BIOS/UEFI, bytecode in the GPUs "BIOS").
  \item Users with a certified computer and not certified
    distributions will probably run nonfree software without knowing
    it at some point, and it's not a bug.
  \end{itemize}
\end{frame}

\section{Using the certifications}

\begin{frame}
  \center{FSF certified hardware and distributions: What is available?}
\end{frame}

\begin{frame}
  \center{The certifications}
  \begin{itemize}
  \item RYF (Respect your freedom): Certification for hardware: \url{https://ryf.fsf.org}
  \item FSDG (Free System Distribution Guidelines): Certification for
    software (distributions): \url{https://gnu.org/distros}
  \end{itemize}
\end{frame}

%% Take RYF hardware, what can be used with it
\begin{frame}
  \center{Certified laptops: https://ryf.fsf.org/index.php/categories/laptops}
  \begin{itemize}
  \item Technoetical T400, T400s, T500
  \item Taurinus, Technoetical, Vikings X200
  \item Technoetical X200s, X200T
  \end{itemize}
\end{frame}

%% RYF: CC-BY-ND 3.0
%% Technoetical website: CC-BY-SA 4.0
\begin{frame}
  \begin{xtabular}{lll}
    \includedevicepicture{thinkpads-x/tehnoetic_x200-docking_500x500-500x500.png} &
    \includedevicepicture{thinkpads-x/tehnoetic_x200-docking_500x500-500x500.png} &
    \includedevicepicture{thinkpads-x/tehnoetic_x200t-rotated-pen-docking_im-500x500-500x500.png} \\
    \includedevicepicture{thinkpads-t/tehnoetic_t400_adjust_500x500-500x500.png} &
    \includedevicepicture{thinkpads-t/tet-t400s-front-touch-500x500.jpg} &
    \includedevicepicture{thinkpads-t/tehnoetic_t500_500x500-500x500.png} \\
  \end{xtabular}
\end{frame}

\begin{frame}
  \center{Warning}
  \begin{itemize}
  \item Order with an FSDG distribution $\rightarrow$ FSDG
    distribution works.
  \item Third party hardware (graphic card for instance) can still
    introduce nonfree software.
  \item Only certifies software freedom, not if the vendor is
    reliable, cheap, "eco-friendly", does fair-trade, ships on time,
    etc.
    \begin{itemize}
    \item $\rightarrow$ You need to do your own research for the rest
      (read people's reviews, ask people, make sure the information is
      up to date, etc).
    \end{itemize}
  \end{itemize}
\end{frame}

\begin{frame}
  \center{What can you do with these?}
  \begin{itemize}
  \item Refurbished computer from circa 2008
    \begin{itemize}
    \item Enough RAM: Upgradable, up to 8GiB, Buy through RYF vendor
      or ask to test to make sure it's compatible.
    \item CPU still fast enough for most tasks
      \begin{itemize}
      \item Limits: Videos \textless 1080p, heavy compilations (full
        distributions from scratch).
      \end{itemize}
    \end{itemize}
    \begin{itemize}
    \item Mate display and good quality keyboards $\rightarrow$ can do
      work (writing, programming, etc) on them.
    \item Gigabit Ethernet
    \item Cheap and/or big storage (2 SATA HDDs/SSDs possible on some
      laptops).
    \item WiFi: 2.4 cheap, 5GHz works in crowded environments (like
      big conferences).
    \item Highly customizable (Some of them can have multiple WiFi
      cards for instance).
    \item Some of only have trackpads, some have both
    \item Removable batteries, semi-rugged, last long time. Limits:
      \begin{itemize}
      \item Ethernet on X200.
      \item Requires some light maintenance (removing dust).
      \end{itemize}
    \end{itemize}
    \item Compatible with all the FSF certified distributions but Replicant
  \end{itemize}
\end{frame}

\begin{frame}
  \center{More details:}
    \url{https://libreplanet.org/wiki/Group:Hardware/Computers/Laptops/Freeable_laptops/Libreboot_Laptops_comparison}
\end{frame}

\begin{frame}
  \center{Other type of computers (AKA formfactors)}
\end{frame}

\begin{frame}
  \center{Certified WiFi access points: https://ryf.fsf.org/index.php/categories/routers}
  \begin{itemize}
  \item TPE-R1300 Wireless-N Mini Router
  \item TPE-R1200 Wireless-N Mini Router v2
  \item TPE-R1100 Wireless-N Mini Router
  \end{itemize}
\end{frame}

\begin{frame}
  \center{What can you do with these?}
  \begin{itemize}
  \item Mainly building (home) networks.
  \item Requires isolation from rain, dust, etc to build community
    networks. \url{https://media.libreplanet.org/u/libreplanet/m/freeing-networks-where-we-need-freedom-most/}
  \item Runs LibreCMC:
    \begin{itemize}
    \item Fully graphical web interface that it easy to use and very robust.
    \item Also works with command line or configuration files.
    \item Still requires some networking knowledge (what is an IP
      address? What is "DHCP" ?).
    \end{itemize}
  \end{itemize}
\end{frame}

\begin{frame}
  \center{Certified server / workstation:
    https://ryf.fsf.org/index.php/categories/routers}
  \begin{itemize}
  \item Vikings ASUS KCMA D8 Workstation 
  \end{itemize}
\end{frame}

\begin{frame}
  \center{What can you do with these?}
  \begin{itemize}
  \item Also compatible with all the FSF certified distributions but Replicant
    \begin{itemize}
    \item Way faster than the laptops
    \item Best for servers (Display controller limited)
    \end{itemize}
  \end{itemize}
\end{frame}

\section{Under the hood and DIY approach}

\begin{frame}
  \center{DIY and current status}
\end{frame}

\begin{frame}
  \center{A look into software projects}
  \begin{itemize}
  \item Coreboot
  \item Libreboot
  \item U-Boot (and u-boot-libre)
  \item And FSDG distributions
  \end{itemize}
\end{frame}

\begin{frame}
  \center{X86 and reminder}
  \begin{itemize}
  \item Experiement: Remove the HDD / SSD, power on your laptop:
    something shows up on the display (a vendor logo, some text, etc).
  \item $\rightarrow$ Software is running, that software is the boot software.
  \item BIOS, UEFI, Coreboot, Libreboot, etc
  \end{itemize}
\end{frame}

\pictureframe{output/HP_small.jpeg}
\pictureframe{output/Thinkpad_small.jpeg}

\begin{frame}
  \center{Where is that software?}
  \begin{itemize}
  \item In a memory chip, inside the mainboard
  \end{itemize}
\end{frame}

\pictureframe{output/X200_small.jpeg}
\pictureframe{output/SOIC-16_small.jpeg}
\pictureframe{output/WD_Caviar_Green_WD10EADS_-_Controller_-_Winbond_25X20ALNIG-91999_small.jpg}

\begin{frame}
  \center{Projects}
  \begin{itemize}
  \item Coreboot: Almost completely free or completely nonfree
    software depending on the computer. $\rightarrow$ Not usable
    as-is.
  \item $\rightarrow$ Libreboot: Coreboot distribution created in 2009
    that solved this issue.
  \item $\rightarrow$ We'll look into the recent changes in Libreboot
    later on.
  \end{itemize}
\end{frame}

\begin{frame}
  \center{How to use "Libreboot" ?}
  \begin{itemize}
  \item Get a supported computer
  \item Download Libreboot
  \item For some supported computers: run a script to install it
  \item For other: disassemble the computer, and reprogram the memory
    chip inside the mainboard with some dedicated hardware.
  \item Reassemble the computer, change the battery if needed, Add a
    WiFi card that works with free software, etc.
  \end{itemize}
\end{frame}

\pictureframe{pictures/thinkpads-x/tehnoetic_x200-docking_500x500-500x500.png}

\begin{frame}
  \center{ARM and u-boot: what is u-boot}
  \begin{itemize}
  \item Boot software
  \item Replaces the BIOS / UEFI and GRUB
  \item Can boot many ARM computers without nonfree software.
  \item U-boot is typically packaged by distributions like Guix,
    Parabola, PureOS or Trisquel.
  \item "Libreboot" was interested in adding support for u-boot too.
  \end{itemize}
\end{frame}

\begin{frame}
  \center{My story with u-boot ("About me" slide)}
  \begin{itemize}
  \item I ended up maintaining Parabola u-boot packages and organizing
    how to support ARM devices in Parabola with several goals:
  \begin{itemize}
  \item Lowering maintenance
  \item Being able to support a huge quantity of devices
  \item $\rightarrow$ Use computers well supported by upstream.
  \item $\rightarrow$ Organize the code and documentation to have as
    little as possible to do for each new device.
  \end{itemize}
  \end{itemize}
\end{frame}

\begin{frame}
  \center{Issue: I found nonfree software in u-boot}
  \begin{itemize}

  \item Nonfree software found:
    \begin{itemize}
    \item Licenses/r8a779x\_usb3.txt
    \item drivers/usb/host/xhci-rcar-r8a779x\_usb3\_v3.h
    \item Debian also found nonfree software in u-boot (drivers/dma/MCD\_tasks.c):
      \url{https://metadata.ftp-master.debian.org/changelogs/main/u/u-boot/u-boot_2021.01+dfsg-5_copyright}
    \end{itemize}
  \item Can't redistribute it in Parabola
  \item Parabola has a mechanism (mksource()) to produce deblobbed
    tarballs, but Parabola packages for u-boot were too complex
    $\rightarrow$ didn't work.
  \item Other FSF certified distributions (like Guix) also use u-boot.
  \item $\rightarrow$ Used Libreboot to make a libre u-boot
    (u-boot-libre) and reused it in Parabola.
  \end{itemize}
\end{frame}

\begin{frame}[allowframebreaks]
  \frametitle{PKGBUILD}
  \lstinputlisting{PKGBUILD}
\end{frame}

\begin{frame}
  \center{But Libreboot too started adding nonfree software...}
  \begin{itemize}
  \item $\rightarrow$ I regrouped together with other people (Like
    Adrien ‘neox’ Bourmault) and organization already using computers
    with Libreboot (Like Libre en communs, Technoetical, others) who
    needed a free software Boot software.
  \end{itemize}
\end{frame}

\begin{frame}
  \center{We are continuing the Libreboot project but witout nonfree
    software}
  \begin{itemize}
  \item Status:
  \begin{itemize}
  \item Rationale explained at https://libreboot.at
  \item Infrastructure: Mailing lists, bug reports, website, git
    repositories.
  \item Status: we accept patches but don't have a release yet.
  \item Short term: remake the latest free release.
  \item (And also make u-boot-libre releases as well).
  \end{itemize}
  \end{itemize}
\end{frame}

\begin{frame}
  \center{Longer term goals: make new releases}
  \begin{itemize}
  \item More details at: \url{https://libreplanet.org/wiki/Group:Hardware/Upstream_projects/Coreboot}
  \end{itemize}
\end{frame}

\begin{frame}
  \center{Thinkpads with GM45 chipsets}
  \begin{itemize}
  \item Laptops:
  \begin{itemize}
  \item Thinkpad R400
  \item Thinkpad R500
  \item Thinkpad T400
  \item Thinkpad T400s
  \item Thinkpad T500
  \item Thinkpad W500
  \item Thinkpad X200
  \item Thinkpad X200s
  \item Thinkpad X200 Tablet
  \item ThinkPad X301
  \end{itemize}
  \item Status:
  \begin{itemize}
  \item Most patches should be easy to upstream or carry around.
  \item 2 patches for not using nonfree microcode updates. 1/2 rebased.
  \end{itemize}
  \end{itemize}
\end{frame}

\begin{frame}
  \center{Computers with Intel I945 chipsets}
  \begin{itemize}
  \item Laptops:
  \begin{itemize}
  \item Apple iMac 5,2
  \item Apple Macbook 1,1
  \item Apple Macbook 2,1
  \item Gigabyte GA-G41M-ES2L
  \item Intel D945GCLF
  \item Thinkpad R60 (with Intel GPU only)
  \item Thinkpad T60 (with Intel GPU only)
  \item Thinkpad X60
  \item Thinkpad X60s
  \item Thinkpad X60 Tablet
  \end{itemize}
  \item Status:
  \begin{itemize}
  \item Apart from the Gigabyte GA-G41M-ES2L and Intel D945GCLF, no
    more free software GPU init upstream but the Linux i915 driver
    seem to be able to initialize the GPU at least for the X60.
  \end{itemize}
  \end{itemize}
\end{frame}

\begin{frame}
  \center{Computers with AMD chipsets}
  \begin{itemize}
  \item Laptops:
  \begin{itemize}
  \item KCMA-D8
  \item KFSN4-DRE
  \item KGPE-D16
  \end{itemize}
  \item Status:
  \begin{itemize}
  \item Not supported anymore by upstream coreboot but there is some
    community support in a coreboot 4.11 branch.
  \end{itemize}
  \end{itemize}
\end{frame}

\begin{frame}
  \center{Libreboot compatible ARM computers}
  \begin{itemize}
  \item Status at: \url{https://libreplanet.org/wiki/Group:Hardware/Upstream_projects/Coreboot}
  \item Laptops:
  \begin{itemize}
  \item ASUS C201 Chromebook
  \end{itemize}
  \item Status:
  \begin{itemize}
  \item Still in Coreboot 4.19 but no maintainers
  \item Unknown status in Parabola. (wael in \#parabola in liberachat
    proposed to test).
  \end{itemize}
  \item Computers with u-boot: we didn't take decisions about them,
    but probably not the priority as can handled by FSF certified
    distros as well (with u-boot-libre or some deblob procedure).
  \end{itemize}
\end{frame}

\begin{frame}
  \center{Short digression: PowerPC 64bit little endian}
  \begin{itemize}
  \item Interesting computers:
    \begin{itemize}
    \item Raptor Engineering (Talos II, Blackbird, etc), some are RYF:
      2 computers in one:
      \begin{itemize}
      \item BMC (Baseband management controller): small ARM computer
        to boot the big one: Doesn't depend on nonfree software but no
        free distro for it.
      \item The big powerPC computer might work on Guix and/or on
        Trisquel 11 (not out yet).
      \end{itemize}
    \item Some Single board computers (like the NXP T2080 RDB) or the
      PowerPC notebook prototypes can run u-boot but display isn't
      working with free software.
    \end{itemize}
  \end{itemize}
\end{frame}

\section{ARM computers with u-boot}

\begin{frame}
  \center{ARM computers with u-boot}
  \begin{itemize}
  \item Lot of computers that can boot with free software
  \item Also lot of them that can't
  \item No direct competition with Intel, limitations (RAM).
  \item Lot of hardware variation (microSD, SATA, displays, no
    displays, etc).
  \item $\rightarrow$ Need consideration when buying (use cases,
    microSD less reliable, etc).
  \end{itemize}
\end{frame}

\begin{frame}
  \center{Hardware constraints}
  \begin{itemize}
  \item Boot medias:
    \begin{itemize}
    \item SD / MicroSD
    \item Internal memory (eMMC)
    \item "Boot flash"
    \item SATA (quite rare)
    \item "Boot order"
    \end{itemize}
  \end{itemize}
\end{frame}

\begin{frame}
  \center{Hardware and software constraints}
  \begin{itemize}
  \item Bootrom / Boot ROM $\rightarrow$ First stage bootloader
    $\rightarrow$ Second stage bootloader $\rightarrow$ Linux + small
    filesystem in RAM (initramfs / initrd) $\rightarrow$ init
    (GNU/Linux).
  \item Issue: First stage bootloader at different offsets
  \item Issue: A single U-boot image cannot work yet on many
    computers.
  \item $\rightarrow$ Most of the time the distribution has bootloader
    packages but only a generic installer that doesn't boot on microSD
    at best.
  \end{itemize}
\end{frame}

\begin{frame}
  \center{Distributions}
  \begin{itemize}
  \item Guix (32bit currently broken, 64bit seems to work)
  \item Parabola (32bit works, 64bit computers support outdated, need
    help)
  \item PureOS: 64bit only
  \item Trisquel 10: 32bit
  \item Trisquel 11: 32bit, 64bit
  \end{itemize}
\end{frame}

\begin{frame}
  \center{Parabola: How to add an ARM computer}
  \begin{itemize}
  \item Add a package for a bootloader: (requires to know the computer
    name, and the u-boot configuration, if it's similar to one already
    supported).
  \item Document the computer in the wiki:
  \begin{itemize}
  \item Add information about how to install Parabola on it
  \item Describe it a bit (amount of RAM, name, etc)
  \item Describe what works what doesn't and the required hardware
    (HDMI display, keyboard or serial console cable).
  \item Add that computer to the list of officially supported ARM computers
  \end{itemize}
  \end{itemize}
\end{frame}

\begin{frame}
  \center{Parabola: Officially supported}
  \begin{itemize}
  \item \url{https://wiki.parabola.nu/Computers}
  \item Olimex: Lime 1 A20: Full support
  \item Olimex: Lime 2 A20: Full support, 1 bug to fix
  \item Beaglebone black: Partial support (no 3D acceleration, video
    decoding, PRUs, capes, etc).
  \item $\rightarrow$ Many more just need documentation / installation instructions
  \end{itemize}
\end{frame}

\begin{frame}
  \center{Parabola: Software status}
  \begin{itemize}
  \item No support for accessories (capes, shields etc) yet
  \item Only support extlinux.conf and old style booting (u-boot boot
    protocol)
  \item No UEFI + GRUB support yet
  \end{itemize}
\end{frame}

\begin{frame}
  \center{Guix: Software status}
  \begin{itemize}
  \item ARM 32bit currently broken
  \item Diffucult to customize (kernel modules) but good abstraction
    (image types for specific computers).
  \item Also produces images for the Pinebook PRO but only in "latest"
    (no signatures), though easy to build them yourself.
  \end{itemize}
\end{frame}

\begin{frame}
  \center{PureOS and Trisquel}
  \begin{itemize}
  \item Very similar: Both are directly or indirectly derived from Debian.
  \item Similar situation: No documentation $\rightarrow$ Where to add it? The Libreplanet wiki?
  \item Need user testing and fixing
  \item Different policies: can contribute to Trisquel directly,
    PureOS prefers people to contribute directly to debian whenever
    possible (lowers maintenance).
  \item Some features make it harder to support: Multiple kernel but
    no way to update /boot/extlinux/extlinux.conf $\rightarrow$ Use UEFI?
  \end{itemize}
\end{frame}

\begin{frame}
  \center{Tests with Trisquel}
  \begin{itemize}
  \item Ideally have a bootloader image in PureOS or Trisquel (in one
    of u-boot-sunxi, u-boot-img, u-boot-omap, etc)
  \item "Device tree" shipped by the kernel
  \item Using 1 kernel to support updates
  \item Writting some configuration to make it boot and update well
  \item $\rightarrow$ Tried rapidely with a Lime 1 A20: cound't find the devicetree.
  \item $\rightarrow$ Tried rapidely with a Beagleboard: cound't find u-boot.img.
  \item $\rightarrow$ Tried rapidely with a Pandaboard: hang during
    boot (no rootfs found?) lot of stacktraces.
  \item $\rightarrow$ I also have a TBS2910: no bootloader
  \item $\rightarrow$ We should probably retry with Trisquel 11
  \end{itemize}
\end{frame}

\begin{frame}
  \center{Call for action and advertizements}
  \begin{itemize}
  \item Try to have more collaboration between FSDG distributions:
    \begin{itemize}
    \item https://libreplanet.org/wiki/Group:Hardware
    \item https://libreplanet.org/wiki/Group:Software
    \end{itemize}
  \item Help for testing ARM, improving documentation, etc.
  \item Help Parabola or FSDG distributions that are understaffed
  \end{itemize}
\end{frame}

\begin{frame}
  \center{Licenses of this presentation }
  \begin{itemize}
  \item CC-BY-SA 3.0 or
  \item CC-BY-SA 4.0 or
  \item GFDL 1.3+ With no Invariant Sections, no Front Cover Texts and
    no Back Cover Texts.
  \item Pictures: Can't change WiFi card, BIOS pictures, Thinkpad X200
    internals: Me, with the same license than this presentation.
  \end{itemize}
\end{frame}

\begin{frame}
  \center{Other Pictures}
  \begin{itemize}
  \item Thinkpads: Tehnoetic: CC-BY-SA 4.0,
  \item ZAD: CC-BY-SA 3.0 Unported, \url{https://commons.wikimedia.org/wiki/File:W0128-NDdL_ZaD_Preparation_56926.JPG}
  \item Libreoffice flyer: CC-BY-SA 3.0 Unported,
    \url{https://commons.wikimedia.org/wiki/File:Libreoffice-flyer.svg}
  \item Winbond 25X20AlNiG 1009
    \url{https://commons.wikimedia.org/wiki/File:WD_Caviar_Green_WD10EADS_-_Controller_-_Winbond_25X20ALNIG-91999.jpg} \\
    Author: Raimond Spekking
    Licenses: CC BY-SA 4.0"

  \end{itemize}
\end{frame}

\end{document}
