summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDenis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>2019-11-20 17:16:31 +0100
committerDenis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>2019-12-26 00:52:15 +0100
commitcb49f5a3d70116668869e091da81eac6665b7b04 (patch)
tree0dd0d64d0f13172eafd44abef5863aebb95034f4
parent05bd0ea4ce6e44aeefa1c2c088fc145aeb50ef66 (diff)
downloadpresentations-cb49f5a3d70116668869e091da81eac6665b7b04.tar.gz
presentations-cb49f5a3d70116668869e091da81eac6665b7b04.tar.bz2
presentations-cb49f5a3d70116668869e091da81eac6665b7b04.zip
Last changes
Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
-rw-r--r--36c3/Replicant_sustainability/Makefile10
-rw-r--r--36c3/Replicant_sustainability/Replicant_sustainability.tex343
2 files changed, 140 insertions, 213 deletions
diff --git a/36c3/Replicant_sustainability/Makefile b/36c3/Replicant_sustainability/Makefile
index 20fbd5c..7bc95ec 100644
--- a/36c3/Replicant_sustainability/Makefile
+++ b/36c3/Replicant_sustainability/Makefile
@@ -1,5 +1,8 @@
TEXFLAGS ?= -halt-on-error -output-format pdf -output-directory output
TITLE = Replicant_sustainability
+IMAGES := \
+ output/i9300_hardware.png \
+ output/virtuous_circle.png \
.PHONY: all clean test medias
all: output/$(TITLE).pdf
@@ -7,16 +10,17 @@ all: output/$(TITLE).pdf
output:
mkdir -p output
-output/$(TITLE).pdf: output $(TITLE).tex output/i9300_hardware.jpeg
+output/$(TITLE).pdf: output $(TITLE).tex $(IMAGES)
pdflatex $(TEXFLAGS) '\providecommand\locale{en}\input{$(TITLE).tex}'
# pdflatex $(TEXFLAGS) '\providecommand\locale{en}\input{$(TITLE).tex}'
output/%.png: dot/%.dot output
dot -T png $< > $@
-output/i9300_hardware.jpeg: images/i9300_hardware.svg
+output/i9300_hardware.png: images/i9300_hardware.svg
convert $< $@
-
+output/virtuous_circle.png: images/virtuous_circle.dot
+ dot -T png $< > $@
clean:
rm -rf output
diff --git a/36c3/Replicant_sustainability/Replicant_sustainability.tex b/36c3/Replicant_sustainability/Replicant_sustainability.tex
index 6280e18..8432351 100644
--- a/36c3/Replicant_sustainability/Replicant_sustainability.tex
+++ b/36c3/Replicant_sustainability/Replicant_sustainability.tex
@@ -21,13 +21,13 @@
}
}
-\newcommand{\qtmokopictureframe}[2] {
+\newcommand{\devicespictureframe}[3] {
{
\begin{frame}
- \noindent
- {\includegraphics{#1}}
- {\includegraphics{#2}}
- \hspace*{-\textwidth}
+ \center{#1}
+ {\includegraphics[scale=0.5]{../../external_resources/replicant_website/images/supported-devices/#2.png}}
+ {\includegraphics[scale=0.5]{../../external_resources/replicant_website/images/supported-devices/#3.png}}
+ \hspace*{-\textwidth}
\end{frame}
}
}
@@ -53,6 +53,12 @@
\maketitle
+%% \begin{frame}
+%% \begin{itemize}
+%% \item Context
+%% \end{itemize}
+%% \end{frame}
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
@@ -65,7 +71,7 @@
\end{frame}
\begin{frame}
- \center{Some context}
+ \center{Quick Facts}
\begin{itemize}
\item Website: replicant.us
\item Exists since September 2009
@@ -76,11 +82,12 @@
\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}
+ \center{Minimum feature set required to support a device:}
\begin{itemize}
\item Display working and graphics fast enough
\item sound working
@@ -90,134 +97,21 @@
\end{itemize}
\end{frame}
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-\begin{frame}
- \center{A very short introduction on hardware}
- \begin{itemize}
- \item System on a chip
- \item Smartphones and the modem
- \end{itemize}
-\end{frame}
-
-\pictureframe{output/i9300_hardware.jpeg}
-
-\begin{frame}
- \center{picture of the hardware + link to GSM tower}
-\end{frame}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\begin{frame}
- \center{A short introduction to Android}
-\end{frame}
-
-\begin{frame}
- \center{Android: Time to market driven architectures?}
- \begin{itemize}
- \item SOCs
- \begin{itemize}
- \item Write the code work as fast as possible
- \item Support as much hardware features as possible
- \item $\rightarrow$ Varying code quality
- \item $\rightarrow$ Example: One driver rewritten 3 times
- \end{itemize}
- \item To smartphones and tablets
- \end{itemize}
-\end{frame}
-
-\begin{frame}
- \center{Freedom and companies image}
- \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}
- \end{itemize}
-\end{frame}
-
-\begin{frame}
- \center{Android Architecture}
- \begin{itemize}
- \item Examples of the worst API changes:
- \begin{itemize}
- \item Audio driver: Incompatible interface: Qualcomm DSP (MSM7K)
- \item Modem driver: Out of tree driver, with changing interfaces (Samsung IPC)
- \item Backlight driver: uses LED interfaces instead (HTC Dream)
- \item WiFi driver: Has a highly modified Wext interface (Broadcom, TI, etc)
- \item Display driver: Has a custom panel refresh interface (MSM7k, Optimus black)
- \item Camera driver: uses custom ioctl to make it work
- \item Accelerometer driver: output custom protocol + custom ioctl
- \item Kernel core: has different power management API
- \end{itemize}
- \end{itemize}
-\end{frame}
-
-\begin{frame}
- \center{Image of the Android framework}
-\end{frame}
-
-\begin{frame}
- \center{Android Framework}
- \begin{itemize}
- \item Device manufacturers can break the Linux API completely
- \item It can take time (years) to bring in a new framework in Linux
- \item API and ABI guarantees (modulo kernel configuration and build)
- \end{itemize}
-\end{frame}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\begin{frame}
- \center{Replicant phase 1: Quick and dirty hacks}
-\end{frame}
-
-\begin{frame}
- \center{Introduction}
- \begin{itemize}
- \item Replicant History: short version
- \end{itemize}
-\end{frame}
-
-\begin{frame}
- \center{Before the Openmoko}
-\end{frame}
-
-\begin{frame}
- \center{Picture of various hardware}
-\end{frame}
-
-\begin{frame}
- \center{The Openmoko: a GNU/Linux smartphone}
-\end{frame}
-
-\begin{frame}
- \center{Pictures of the openmoko}
-\end{frame}
+%% \begin{frame}
+%% \center{A very short introduction on hardware}
+%% \begin{itemize}
+%% \item System on a chip
+%% \item Smartphones and the modem
+%% \end{itemize}
+%% \end{frame}
-\begin{frame}
- \center{Many GNU/Linux distributions were available for it}
- \begin{itemize}
- \item Debian
- \item SHR
- \item QtMoko
- \end{itemize}
-\end{frame}
+\pictureframe{output/i9300_hardware.png}
-\begin{frame}
- \center{Issues:}
- \begin{itemize}
- \item Hardware
- \item Software
- \end{itemize}
-\end{frame}
\begin{frame}
- \center{Comparison with GNU/Linux} \\
+ \center{Why Android?}
\begin{itemize}
- \item Advantages
+ \item Advantages:
\begin{itemize}
\item GUI and applications adapted to big fingers
\item $\rightarrow$ run on devices that:
@@ -229,7 +123,7 @@
\end{itemize}
\item Issues
\begin{itemize}
- \item GNU/Linux software architecture is light years ahread
+ \item Part of the GNU/Linux software architecture is light years: Package management and build system, Graphics, audio, etc
\item Huge unknown code from google
\item Meant to run proprietary software
\item Not meant to empower users
@@ -238,65 +132,97 @@
\end{frame}
\begin{frame}
+ \center{Android: From time to market driven architecture to substainability}
\begin{itemize}
- \item Like a proprietary OS (Microsoft Windows)
- \item Let's replicate it and make a free software version
- \item $\rightarrow$ Replicant
- \end{itemize}
-\end{frame}
-
-\begin{frame}
- \center{Replicant, SHR and the HTC Dream} \\
- \begin{itemize}
- \item SHR: GNU/Linux on the first Android device
- \begin{itemize}
- \item Took more than one year of hard work
- \item by 3 or 4 people (not full time)
- \item Not reliable
- \item Incomplete (audio) or missing features (rotation)
- \end{itemize}
- \item Replicant
- \begin{itemize}
- \item Took very few hours/week
- \item 1 person (not full time)
- \item Way more reliable
- \end{itemize}
+ \item SOCs, WiFi chips, smartphones and tablets
+ \begin{itemize}
+ \item Write the code work as fast as possible
+ \item Support as much 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$\leftarrow$ $\rightarrow$ Android framework $\leftarrow$ $\rightarrow$ HAL $\leftarrow$ $\rightarrow$ Kernel
+ \item Getting better in Android: Trebble and Generic Kernel images
+ \end{itemize}
\end{itemize}
\end{frame}
\begin{frame}
- \center{HTC Dream: Bad for freedom}
+ \center{Freedom and companies image:}
\begin{itemize}
- \item Qualcomm MSM7k
- \item The modem controlled:
+ \item Having the source code under free software licenses, even if the code quality is bad is crucial for freedom:
\begin{itemize}
- \item The boot, RAM and storage of the device
- \item The audio (and most probably the microphone)
+ \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 We leanred about it while working on Replicant.
+ \item $\rightarrow$ We depend on that source code
\end{itemize}
\end{frame}
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\begin{frame}
- \center{Replicant phase 2: Better devices}
-\end{frame}
+%% \begin{frame}
+%% \center{What affect a device lifetime in Replicant?}
+%% \begin{itemize}
+%% \item Upstream support $\leftarrow$ We're working on it
+%% \item Android RAM consumption VS device RAM size $\leftarrow$ Very little leverage from Replicant
+%% \item Removable batteries and developers being able to get the device $\leftarrow$ We don't support devices without removable batteries
+%% \item Freedom issues (Chinese whispers) $\leftarrow$ Conflicting interests
+%% \end{itemize}
+%% \end{frame}
-\begin{frame}
- \center{Newer devices}
- \begin{itemize}
- \item Nexus one
- \begin{itemize}
- \item The audio (and most probably the microphone)
- \item Required nonfree audio firmware for having working calls
- \end{itemize}
- \end{itemize}
+\begin{frame}[plain,allowframebreaks]{title}
+\begin{xtabular}{ll}
+ \hline
+ Device dropping cause & Replicant leverage \\
+ \hline
+ Upstream support & We're working to improve it \\
+ \hline
+ Android RAM consumption & negligeable \\
+ %% Most device we want to support have similar-ish RAM size
+ %% Cannot increase much the device lifetime by choosing devices with bigger RAM size
+ %% => We have no impact on it and have to endure it
+ \hline
+ Lack of removable batteries & don't support devices with non-replacable batteries \\
+ \hline
+ Freedom issues & Conflicting interests \\
+ %% Chinese whispers => Better keeping it simple
+ %% We drop the least free devices
+ %% Conflicting interest
+ \hline
+\end{xtabular}
\end{frame}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\devicespictureframe{Replicant phase 1: Quick and dirty hacks}{dream_sapphire}{passion}
+%% Context: [Replicant 1.5 -> Replicant 2.2]
+%% Talk about:
+%% - Qualcomm
+%% - MSM7K: The modem controlled:
+%% - The boot, RAM and storage of the device
+%% - The audio (and most probably the microphone)
+%% - QSD8K: issues:
+%% - Nexus one required nonfree audio firmware for having working calls
+%% - The audio (and most probably the microphone)
+%% - No strong guarantee about the modem isolation
+%% - Too much nonfreee libs
+%% - Mainline status
+%% - Too much proprietary libs nowadays
+%% - We leanred about all that while working on Replicant.
+%% TODO:
+%% - Make a picture of the HTC Dream with the keyboard open
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%% TODO: Backup slide with list of proprietary libs of a modern qualcomm SOC
\begin{frame}
\center{Code substainability}
\begin{itemize}
- \item Required verry little maintenance and time (quick and dirty hacks)
+ \item Required very little maintenance and time (quick and dirty hacks)
\item Porting to a new Android version:
\begin{itemize}
\item 3D acceleration:
@@ -316,20 +242,19 @@
\begin{itemize}
\item Removable batteries
\item Little RAM
- \item Nightmare-like freedom issues
+ \item Nightmare-like freedom issues:
\begin{itemize}
\item $\rightarrow$ Very strong incentive to discontinue support for them
\item $\rightarrow$ negligeable freedom gained by installing Replicant
- \item $\rightarrow$ Replicant was still useful as support for better devices was added later
+ \item $\rightarrow$ Replicant was still useful as support for better devices were added later
\end{itemize}
\end{itemize}
\end{frame}
\begin{frame}
- \center{Better devices}
+ \center{Replicant phase 2: Replicant 2.3 $\rightarrow$ Replicant 4.0}
\begin{itemize}
- \item More freedom
- \item But required more work
+ \item More freedom but required more work
\begin{itemize}
\item Required to continue reverse engineering the modem protocol (easy but long)
\item Nonfree libraries to replace varies across devices. Examples: Camera, audio, etc
@@ -338,20 +263,29 @@
\end{frame}
\begin{frame}
- \center{Freedom blockers}
+ \center{Devices substainability and freedom blockers}
\begin{itemize}
- \item All currently supported devices have nonfree bootloaders
- \item The nonfree bootloaders are not easy at all to replace as the code is usually signed
+ \item Nonfree and signed bootloaders that are very hard or impossible to replace
+ \item Devices without modem isolation guarantees %% Have been dropped later
+ \item WiFi, Bluetooth, GPS
+ \item Enough RAM (1GB or more) on all the supported devices %% TODO: check with tablets
\end{itemize}
\end{frame}
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
- \center{Replicant phase 3: Focus on devices with free software bootloaders}
+ \center{Code substainability}
+ \begin{itemize}
+ \item Porting to a new Android version can take quite some time:
+ \begin{itemize}
+ \item Still need to make it fast without 3D acceleration
+ \item Still have Total dependency on Android upstream (Linux code not upstream)
+ \end{itemize}
+ \end{itemize}
\end{frame}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
- \center{First attempt to change focus}
+ \center{Replicant phase 3: GNU/Linux devices on Replicant 4.2}
\begin{itemize}
\item The GTA04 from Golden Delicious has a free software bootloader
\item The Optimus black (p970) from LG has a bootloader that is not signed
@@ -374,7 +308,7 @@
\item Required a lot of work by Paul Kocialkowski\cite{freeing-a-phone-from-the-ground-up}
\item Bootloader: The code is now upstream in u-boot
\item Linux: Very minimal support upstream
- \begin{itemize}
+ \begin{itemize}
\item working: microSD, USB
\item lacking: No display driver, sound etc
\end{itemize}
@@ -382,22 +316,9 @@
\end{itemize}
\end{frame}
-\begin{frame}
- \center{Optimus black}
- \begin{itemize}
- \item Long work to add support in upstream u-boot
- \item Very basic upstream Linux support (lacking a display driver etc)
- \item See Paul's blog for more details\cite{freeing-a-phone-from-the-ground-up}
- \end{itemize}
-\end{frame}
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
\center{Replicant phase 4: Back to supported devices}
-\end{frame}
-
-\begin{frame}
- \center{Replicant 6 status}
\begin{itemize}
\item Android 6 outdated
\item Samsung devices still supported
@@ -405,18 +326,18 @@
\end{frame}
\begin{frame}
- \center{Samsung devices that are or can be supported by Replicant}
+ \center{Samsung devices that are or can be supported by Replicant 6.0}
\begin{itemize}
\item Exynos or OMAP System on a chip
\item The modems in it have been customized by samsung use the same vendor-specific protocol
- \item Very large number of unit sold:
+ \item Very large number of unit sold:
\begin{itemize}
\item 70 million units for the Galaxy SIII
\item Easy to find second hand
\end{itemize}
\item Isolated modem for currently supported devices
\item Removable battery for smartphones and somewhat removable for tablets
- \item Nonfree bootloader
+ \item Nonfree and signed bootloader
\item WiFi doesn't work out of the box
\end{itemize}
\end{frame}
@@ -551,11 +472,7 @@
\end{itemize}
\end{frame}
-\begin{frame}
- \center{TODO: Not vicious circle + image}
- %% GNU/Linux ----benefits----> Replicant
- %% Replicant ----benefits----> GNU/Linux
-\end{frame}
+\pictureframe{output/virtuous_circle.png}
\begin{frame}
\center{Effects of using Linux upstream}
@@ -591,10 +508,16 @@
\end{frame}
\begin{frame}
- \center{Extra readings}
+ \center{How to not drop devices:}
\begin{itemize}
- \item OpenMoko History: \url{https://www.vanille.de/blog/openmoko-10-years-after-mickeys-story/}
- \item Paul's blog for on freeing the Optimus black\cite{freeing-a-phone-from-the-ground-up}
+ \item Get to the same freedom than future devices:
+ \begin{itemize}
+ \item Free software bootloader
+ \item Free WiFi and Bluetooth firmwares
+ \item GPS (library + firmware)
+ \end{itemize}
+ \item Enough RAM or obtimisations
+ \item Hardware documentation and repair guides under a free license
\end{itemize}
\end{frame}
@@ -607,7 +530,7 @@
\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
+ Creative Commons Attribution 3.0 Unported
\item \url{https://creativecommons.org/licenses/by-sa/4.0/} for the rest.
\end{itemize}
\end{frame}