diff options
-rw-r--r-- | .gitignore | 4 | ||||
-rw-r--r-- | Makefile | 30 | ||||
-rw-r--r-- | img/Tux.png | bin | 0 -> 11913 bytes | |||
-rw-r--r-- | img/World_Wide_Smartphone_Sales.png | bin | 0 -> 35723 bytes | |||
-rw-r--r-- | img/apps.png | bin | 0 -> 235353 bytes | |||
-rw-r--r-- | img/dialpad.png | bin | 0 -> 35164 bytes | |||
-rw-r--r-- | img/folded.png | bin | 0 -> 50320 bytes | |||
-rw-r--r-- | img/gobby-fit.png | bin | 0 -> 101583 bytes | |||
-rw-r--r-- | img/gobby-notfit.png | bin | 0 -> 82044 bytes | |||
-rw-r--r-- | img/librem5.png | bin | 0 -> 146997 bytes | |||
-rw-r--r-- | img/mobian.png | bin | 0 -> 10109 bytes | |||
-rw-r--r-- | img/n900.png | bin | 0 -> 2043489 bytes | |||
-rw-r--r-- | img/notmainline.png | bin | 0 -> 20485 bytes | |||
-rw-r--r-- | img/notmainline2.png | bin | 0 -> 42010 bytes | |||
-rw-r--r-- | img/openmoko.png | bin | 0 -> 56546 bytes | |||
-rw-r--r-- | img/pinephone.png | bin | 0 -> 356089 bytes | |||
-rw-r--r-- | img/pmos-logo.png | bin | 0 -> 2158 bytes | |||
-rw-r--r-- | img/pms-folded.png | bin | 0 -> 18173 bytes | |||
-rw-r--r-- | img/pms.png | bin | 0 -> 92037 bytes | |||
-rw-r--r-- | img/puremaps.png | bin | 0 -> 288298 bytes | |||
-rw-r--r-- | img/purism.png | bin | 0 -> 10074 bytes | |||
-rw-r--r-- | img/session.png | bin | 0 -> 45328 bytes | |||
-rw-r--r-- | img/ticker-ls.png | bin | 0 -> 105123 bytes | |||
-rw-r--r-- | img/unfolded.png | bin | 0 -> 49539 bytes | |||
-rw-r--r-- | talk.org | 362 | ||||
-rw-r--r-- | talk.pdf | bin | 0 -> 3338174 bytes |
26 files changed, 396 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..40fd116 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +*.pdf +*.tex +*~ +_build/ diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..518c407 --- /dev/null +++ b/Makefile @@ -0,0 +1,30 @@ +all: talk.pdf + +SOURCES=\ + talk.org \ + $(wildcard _build/*.png) \ + $(wildcard img/*.jpg) \ + $(wildcard img/*.png) \ + $(NULL) + +OUT=talk.pdf + +$(OUT): $(SOURCES) + mkdir -p _build + # org-src-preserve-indentation prevents spaces converted to tabs in babel) + emacs -batch $< --eval='(setq org-src-preserve-indentation t)' \ + --eval='(org-beamer-export-to-pdf)' + +clean: + rm -f *.tex $(OUT) _build + +mode: + wlr-randr --output HDMI-A-1 --mode 1280x720@50 + wlr-randr --output HDMI-A-1 --mode 1280x720@50 --pos 0,0 + wlr-randr --output eDP-1 --pos 0,721 + +record: + wf-recorder -a 'Logitech H360 Headset' -o HDMI-A-1 + +run: + pdf-presenter-console talk.pdf diff --git a/img/Tux.png b/img/Tux.png Binary files differnew file mode 100644 index 0000000..bdc5b1d --- /dev/null +++ b/img/Tux.png diff --git a/img/World_Wide_Smartphone_Sales.png b/img/World_Wide_Smartphone_Sales.png Binary files differnew file mode 100644 index 0000000..f31ea6c --- /dev/null +++ b/img/World_Wide_Smartphone_Sales.png diff --git a/img/apps.png b/img/apps.png Binary files differnew file mode 100644 index 0000000..b406c51 --- /dev/null +++ b/img/apps.png diff --git a/img/dialpad.png b/img/dialpad.png Binary files differnew file mode 100644 index 0000000..e1d456e --- /dev/null +++ b/img/dialpad.png diff --git a/img/folded.png b/img/folded.png Binary files differnew file mode 100644 index 0000000..203506f --- /dev/null +++ b/img/folded.png diff --git a/img/gobby-fit.png b/img/gobby-fit.png Binary files differnew file mode 100644 index 0000000..fd51baf --- /dev/null +++ b/img/gobby-fit.png diff --git a/img/gobby-notfit.png b/img/gobby-notfit.png Binary files differnew file mode 100644 index 0000000..2d60b68 --- /dev/null +++ b/img/gobby-notfit.png diff --git a/img/librem5.png b/img/librem5.png Binary files differnew file mode 100644 index 0000000..9ecc058 --- /dev/null +++ b/img/librem5.png diff --git a/img/mobian.png b/img/mobian.png Binary files differnew file mode 100644 index 0000000..6ba19cf --- /dev/null +++ b/img/mobian.png diff --git a/img/n900.png b/img/n900.png Binary files differnew file mode 100644 index 0000000..bf42a20 --- /dev/null +++ b/img/n900.png diff --git a/img/notmainline.png b/img/notmainline.png Binary files differnew file mode 100644 index 0000000..2b74c5b --- /dev/null +++ b/img/notmainline.png diff --git a/img/notmainline2.png b/img/notmainline2.png Binary files differnew file mode 100644 index 0000000..e86a4c2 --- /dev/null +++ b/img/notmainline2.png diff --git a/img/openmoko.png b/img/openmoko.png Binary files differnew file mode 100644 index 0000000..5cf42db --- /dev/null +++ b/img/openmoko.png diff --git a/img/pinephone.png b/img/pinephone.png Binary files differnew file mode 100644 index 0000000..15b8c76 --- /dev/null +++ b/img/pinephone.png diff --git a/img/pmos-logo.png b/img/pmos-logo.png Binary files differnew file mode 100644 index 0000000..ad76f47 --- /dev/null +++ b/img/pmos-logo.png diff --git a/img/pms-folded.png b/img/pms-folded.png Binary files differnew file mode 100644 index 0000000..b591c2f --- /dev/null +++ b/img/pms-folded.png diff --git a/img/pms.png b/img/pms.png Binary files differnew file mode 100644 index 0000000..f9b84ad --- /dev/null +++ b/img/pms.png diff --git a/img/puremaps.png b/img/puremaps.png Binary files differnew file mode 100644 index 0000000..2fccacf --- /dev/null +++ b/img/puremaps.png diff --git a/img/purism.png b/img/purism.png Binary files differnew file mode 100644 index 0000000..b8a499e --- /dev/null +++ b/img/purism.png diff --git a/img/session.png b/img/session.png Binary files differnew file mode 100644 index 0000000..a8529ab --- /dev/null +++ b/img/session.png diff --git a/img/ticker-ls.png b/img/ticker-ls.png Binary files differnew file mode 100644 index 0000000..dece4ac --- /dev/null +++ b/img/ticker-ls.png diff --git a/img/unfolded.png b/img/unfolded.png Binary files differnew file mode 100644 index 0000000..726cda5 --- /dev/null +++ b/img/unfolded.png diff --git a/talk.org b/talk.org new file mode 100644 index 0000000..6694399 --- /dev/null +++ b/talk.org @@ -0,0 +1,362 @@ +#+TODO: TODO(t) IN-PROGRESS DONE +#+STARTUP: indent +#+STARTUP: beamer +#+OPTIONS: ':nil *:t -:t ::t <:t H:2 \n:nil ^:t arch:headline +#+OPTIONS: author:t broken-links:nil c:nil creator:nil +#+OPTIONS: d:(not "LOGBOOK") date:t e:t email:nil f:t inline:t num:t +#+OPTIONS: p:nil pri:nil prop:nil stat:t tags:t tasks:t tex:t +#+OPTIONS: timestamp:t title:t toc:t todo:t |:t +#+TITLE: Is there hope for Linux on smartphones? +#+SUBTITLE: at FrOSCon 2022 +#+DATE: 2022-08-20 +#+AUTHOR: Guido Günther +#+EMAIL: agx@sigxcpu.org +#+LANGUAGE: en +#+SELECT_TAGS: export +#+EXCLUDE_TAGS: noexport +#+CREATOR: Emacs 25.2.2 (Org mode 9.0.9) +#+latex_header: \mode<beamer>{\usetheme{Copenhagen}} +#+latex_header: \setbeamertemplate{headline}{} +#+latex_header: \AtBeginSection[]{\begin{frame}<beamer>\frametitle{Topic}\tableofcontents[currentsection]\end{frame}} +#+latex_header: \hypersetup{ linkcolor=blue, pdfborder={0 0 0 0}} +#+COLUMNS: %40ITEM %10BEAMER_env(Env) %9BEAMER_envargs(Env Args) %4BEAMER_col(Col) %10BEAMER_extra(Extra) + +# Submitted description: +# Smartphones and other mobile devices are ubiquitous and while we're picky about free software on our laptops, +# desktops and servers lots of us have a truck load full of proprietary software in their pocket every day. +# Does it have to be that way? +# How would a way out of the duopoly look like? What are the upsides? +# What works today? What are the gaps? How can you get involved? + +* About myself + +** About me +:PROPERTIES: +:UNNUMBERED: t +:END: + +- Debian Developer +- phosh / GNOME contributor +- Freelancing Free Software Developer +- Working with Purism on the Librem 5 Phone + +* What is Linux Mobile? + +** The world right now + +#+CAPTION: https://en.wikipedia.org/wiki/Mobile_operating_system +#+ATTR_LATEX: :height 0.7\textheight +[[./img/World_Wide_Smartphone_Sales.png]] + +** The world right now + +*** Android + +- But AOSP? +#+BEAMER: \pause +- Google Mobile Services (GMS) +- Vendors add additional proprietary components + +** What is Linux Mobile? + +*** Welcome to Linux Mobile + +- All Free Software +- Targets smartphones +- (close to) mainline Linux Kernel +- Uses "Linux" userland APIs (sysv, systemd, GTK, Qt, …) +- Frameworks for mobile apps +- Enough band aid to help existing apps along + +** Linux Mobile: Targets smartphones + +| Devices | Sales in 2020 | +|-------------+---------------| +| PCs/Laptops | 300 mio¹ | +| Smartphones | 1350 mio² | + +** Linux Mobile: All Free Software + +- Software (hence user) Freedom +- Know where your data goes +- User instead of vendor control +- Lifecycle determined by hardware, not software + +** Linux Mobile: Mainline Linux Kernel + +*** :BMCOL: +:PROPERTIES: +:BEAMER_col: 0.7 +:END: +- No binary blobs +- Drivers are maintained +- Can just update for security support +- Only one place to fix +- Know where to send patches + +*** :BMCOL: +:PROPERTIES: +:BEAMER_col: 0.3 +:END: +#+ATTR_LATEX: :height 0.4\textheight +[[./img/Tux.png]] + + +** Linux Mobile: "Linux" userspace + +#+begin_src ditaa :file _build/session.png :cmdline -s 3 -o :exports results + +------------+---------------+--------------+ + | Phoc | Phosh | Squeekboard | + +------------+---------------+--+-----------+ + |c7AF gnome—settings—daemon | feedbackd | + +-------------------------------+-----------+ + |c7AF gnome—session | + +-------------------------------------------+ + |c7AF policykit, upower, iio—s—p | + +-------------------------------------------+ + |c7AF NetworkManager, ModemManager | + +-------------------------------------------+ + |c7AF systemd / sysv / libc / mesa | + +-------------------+-----------------------+ + | + +-------------------+-----------------------+ + |c7AD Linux Kernel | + +-------------------------------------------+ + #+end_src + +#+ATTR_LATEX: :height 0.4\textheight +#+RESULTS: +[[file:_build/session.png]] + +- (security) updates sorted out via distributions +- again all free software +- lots of existing, good applications +- allows to use your phone as laptop *and* use the same apps + +** Linux Mobile: Mobile app frameworks + +*** folded left :BMCOL: +:PROPERTIES: +:BEAMER_col: 0.4 +:END: +#+ATTR_LATEX: :height 0.7\textheight +[[./img/pms-folded.png]] + +*** folded right :BMCOL: +:PROPERTIES: +:BEAMER_col: 0.4 +:END: +#+ATTR_LATEX: :height 0.7\textheight +[[./img/folded.png]] + +** Linux Mobile: Mobile app frameworks + +#+ATTR_LATEX: :height 0.7\textheight +[[./img/unfolded.png]] + +** Linux Mobile: Band aid for older apps + +#+ATTR_LATEX: :height 0.8\textheight +[[./img/gobby-notfit.png]] + +** Linux Mobile: Band aid for older apps + +#+ATTR_LATEX: :height 0.8\textheight +[[./img/gobby-fit.png]] + +** Linux Mobile: Band aid for older apps + +#+ATTR_LATEX: :height 0.8\textheight +[[./img/pms.png]] + +** Alternative approaches + +#+BEAMER: \pause +- Use Android kernels + with either Android userspace or Halium / libhybris +#+BEAMER: \pause +- Pro: Broad device support +#+BEAMER: \pause +- Con: as long as Android is supported for your device +#+BEAMER: \pause +- Con: There's no *single* Android kernel +#+ATTR_LATEX: :height 0.4\textheight +[[./img/notmainline2.png]] + +** Alternative approaches + +- Con: Android kernel and userspace blobs don't magically go away +#+BEAMER: \pause +- Tied to vendors support cycle +#+BEAMER: \pause +- Android is *not* Linux + +https://not.mainline.space + +#+ATTR_LATEX: :width 0.9\textwidth +[[./img/notmainline.png]] + +* Why could that work out? + +** Why is that possible? + +Since 2019 we have Linux first devices: + + #+BEAMER: \pause + Librem 5 and PinePhone. + + #+ATTR_LATEX: :height 0.4\textheight + [[./img/librem5.png]] + +** Why is that possible? + +Sounds simple? Heaps of work, e.g. to light up the screen: + +- LCD panel driver +- Display controller, DSI bridge and PHY +- LCD (backlight) driver plus regulators +- GPU drivers and mesa support + +#+BEAMER: \pause + +Now add touch controller, camera sensors, CSI, PMIC, charge +controller, USB and USB-C/PD, accelerometer, compass, proximity sensor, +ambient light sensor, video accelerators, … + +#+BEAMER: \pause +and all of these need power management + +** Why is that possible? + +Some originally Android driven devices are gaining mainline support + +#+BEAMER: \pause +Most prominent *some* Qualcomm Snapdragons e.g. SDM845 improving +quickly, some gaps (camera, calls, sensors, ...) + +** Why could that work out? + +#+ATTR_LATEX: :height 0.3\textheight +[[./img/openmoko.png]] + +#+ATTR_LATEX: :height 0.3\textheight +[[./img/n900.png]] + +Openmoko Freerunner (2008) and Nokia N900 (2009) + +Different user space stacks and distributions! + +** Why could that work out? + +- We have (comparetively) broad device support +- Multiple distributions support overlapping mobile platforms +- Many things packaged in "general purpose" distributions +- This enables for great deal of collaboration (thanks pmOS!) +#+BEAMER: \pause +- Same tools, toolchain, packaging format and programming languages + +** Current Status + +- Linux first devices: Phone calls, mobile data, sensors, torch, camera, LEDs, haptic, … +- Touch friendly apps that fit the phone screen +- App list grows quickly + +** Current status + +*** Most prominent gaps + +- Easy camera use +- Efficient video encoding +- Good battery life +- IM diversity +- Easy VoLTE setup + +** Current status +*** Most prominent gaps + +- All free software app store + (sandboxing, payments) +- Runtime management + +** Current status + +There are people running it as their only smartphone. + +** What to use? + +- postmarketOS +#+ATTR_LATEX: :height 0.2\textheight +[[./img/pmos-logo.png]] + +- Mobian +#+ATTR_LATEX: :height 0.2\textheight +[[./img/mobian.png]] + +- PureOS +#+ATTR_LATEX: :height 0.2\textheight +[[./img/purism.png]] + +** And right now? + +*** Goodies + +Use it as PC in your pocket + +* How to help? + +** How to help? + +- Don't accept proprietary apps +- As tinkerer: Get a Linux Mobile device and start experimenting. + Maybe you have one in your drawer? +- As web developer: Think about Mobile Linux when designing + applications +- As a distro hacker: Add more apps that fit phone screens to your + favorite distribution: https://linmobapps.frama.io/ + +** How to help? + +- As a developer: Write the app you miss the most +- As a user: Buy a device that runs Linux Mobile +- As a student: Maybe do your master thesis on Linux Mobile +- As hw vendor: Use mainline Linux, it works + +* Thanks + +** Send feedback and point out errors to +- Mail: <agx@sigxcpu.org> +- Fediverse: agx@librem.one +- Matrix: @agx:sigxcpu.org +- IRC OFTC: agx + +* Appendix :B_appendix: + :PROPERTIES: + :BEAMER_env: appendix + :END: + +** Image/Video references + +- Public Domain + - Mobian logo: https://mobian-project.org/images/mobian.png + - PureOS logo: https://puri.sm/wp-content/uploads/2015/04/purism-logo-1748x1120px.png + - Librem5: Purism: https://puri.sm/products/librem-5/ +- CC BY-SA 3.0: + - postmarketOS Logo: postmarketOS developer team: https://upload.wikimedia.org/wikipedia/commons/a/a6/PostmarketOS_logo.svg + - Screenshots: myself using https://gitlab.gnome.org/World/Phosh/phosh + - Openmoko: Nevetsjc: https://en.wikipedia.org/wiki/Openmoko#/media/File:Freerunner02.png + - N900: Ianaré Sévi: https://en.wikipedia.org/wiki/Nokia_N900#/media/File:N900_xterm.JPG + +** Image/Video references + +- cc-0: + - Pinephone: https://en.wikipedia.org/wiki/PinePhone#/media/File:Pinephone_betaedition.png +- other: tux: By lewing@isc.tamu.edu and The GIMP The copyright holder + of this file allows anyone to use it for any purpose, provided that + the copyright holder is properly attributed. Redistribution, + derivative work, commercial use, and all other use is permitted. + +** References + +- 1) https://www.theverge.com/2021/1/11/22225356/pc-sales-shipments-2020-growth-idc-canalys-remote-work +- 2) https://www.visualcapitalist.com/top-smartphone-brands-2020/ +- 3) https://mainline.space/ diff --git a/talk.pdf b/talk.pdf Binary files differnew file mode 100644 index 0000000..7dfbd95 --- /dev/null +++ b/talk.pdf |