#+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{\usetheme{Copenhagen}} #+latex_header: \setbeamertemplate{headline}{} #+latex_header: \AtBeginSection[]{\begin{frame}\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: - 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/