summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordllud <dllud@riseup.net>2019-12-24 01:17:55 +0000
committerdllud <dllud@riseup.net>2019-12-24 01:17:55 +0000
commite74e2526bafc9d64496be5f5301727750d3aa1ac (patch)
tree753e8669d42b0a4a7a034b7c47f75f82ae68258e
parente32d180eb3b9b2ded7c7e845f150d8aaa3869ed0 (diff)
downloadwebview-presentation-e74e2526bafc9d64496be5f5301727750d3aa1ac.tar.gz
webview-presentation-e74e2526bafc9d64496be5f5301727750d3aa1ac.tar.bz2
webview-presentation-e74e2526bafc9d64496be5f5301727750d3aa1ac.zip
GeckoView shim
-rw-r--r--full-description.md2
-rw-r--r--img/geckoview.pngbin0 -> 11436 bytes
-rw-r--r--slides.tex165
3 files changed, 115 insertions, 52 deletions
diff --git a/full-description.md b/full-description.md
index 76ce747..ac1730f 100644
--- a/full-description.md
+++ b/full-description.md
@@ -33,7 +33,7 @@ replacing WebView by a shim built around GeckoView[12].
At first, we reviewed the several ongoing projects that strive to clean the
Chromium mess:
-- ungoogle-chromium seemed to be aligned with both privacy and software
+- ungoogled-chromium seemed to be aligned with both privacy and software
freedom[4].
- Bromite is quite interesting for the fact that the codebase is used to build
WebView[13]. However it is only focused on privacy and ad blocking, not on
diff --git a/img/geckoview.png b/img/geckoview.png
new file mode 100644
index 0000000..ec9ae47
--- /dev/null
+++ b/img/geckoview.png
Binary files differ
diff --git a/slides.tex b/slides.tex
index bf80af1..bb6237f 100644
--- a/slides.tex
+++ b/slides.tex
@@ -12,7 +12,6 @@
\usepackage{listings}
\usepackage{graphicx}
\usepackage[font=tiny,skip=0pt]{caption}
-\usepackage{array}
\usepackage{verbatim}
\graphicspath{{img/}}
@@ -265,6 +264,63 @@ public class MainActivity extends Activity {
\end{frame}
\section{GeckoView shim}
+\begin{frame}
+ \frametitle{WebView API compatibility shim for GeckoView}
+ Chromium fork requires constant maintenance burden.\\\smallskip
+ Google's interests do not align with ours. Check Mozilla.\\
+ \vspace{2\baselineskip}
+ \begin{columns}
+ \begin{column}{0.1\textwidth}
+ \includegraphics[width=\textwidth]{geckoview}
+ \end{column}
+ \begin{column}{0.9\textwidth}
+ GeckoView:
+ \begin{itemize}
+ \item Java wrapper for Gecko browser engine.
+ \item Used in Android apps as replacement for WebView.
+ \item API is incompatible with WebView: not meant to be a drop-in.
+ \end{itemize}
+ \end{column}
+ \end{columns}
+\end{frame}
+
+\subsection{Mapping WebView to GeckoView}
+\begin{frame}[fragile]
+ \frametitle{Mapping WebView to GeckoView}
+ \begin{itemize}
+ \setlength\itemsep{1em}
+ \item<1-> Some functions have a 1:1 mapping.\\\smallskip
+ {\small
+ \begin{tabular}{l | l}
+ WebView & GeckoView \\
+ \hline
+ \verb|goBack()|, \verb|goForward()| & \verb|GeckoSession.NavigationDelegate|\\
+ \verb|loadUrl()| & \verb|GeckoSession.loadUri()|\\
+ \verb|stopLoading()| & \verb|GeckoSession.stop()|
+ \end{tabular}
+ }
+ \item<2-> Others require emulation.\\\smallskip
+ {\small
+ \begin{tabular}{l | l}
+ WebView & GeckoView \\
+ \hline
+ \verb|getTitle()| & \verb|GeckoSession.HistoryDelegate.HistoryItem.getTitle()|\\
+ \verb|pageDown()| & \verb|PanZoomController.scrollBy(width,height)|
+ \end{tabular}
+ }
+ \item<3-> Others require more features from Gecko to be exposed via GeckoView,
+ e.g. \verb|zoomIn()|.
+ \item<4-> Others still, added on latest Android APIs (26-29), seem too tied to Chromium,
+ e.g. \verb|getWebViewLooper()|, \verb|getWebChromeClient()|, \verb|getWebViewClient()|.
+ \end{itemize}
+\end{frame}
+
+\begin{frame}
+ \frametitle{Mapping WebView to GeckoView}
+ Requires a considerable effort.\\\bigskip
+ Can pay off in the long-term: no need to constantly scout for proprietary dependencies and privacy issues.\\\bigskip
+ Burden may be lessened by collaborations, e.g., qt5-webengine replacement with Gecko underneath.
+\end{frame}
\section{GeckoView on apps}
@@ -282,64 +338,71 @@ public class MainActivity extends Activity {
\begin{frame}
\frametitle{Licenses (I)}
- \begin{tabular}{>{\scriptsize}l | >{\scriptsize}l | >{\scriptsize}l}
- item & source & license \\
- \hline
- K-9 Mail logo & \url{https://github.com/k9mail/k-9} & Apache-2.0 \\
- OsmAnd logo & \url{https://github.com/osmandapp/Osmand} & CC-BY-NC-ND 4.0 \\
- Nextcloud logo & \url{https://github.com/nextcloud/android} & AGPLv3 \\
- Tiny Tiny RSS logo & \url{https://gitlab.com/derSchabi/tttrsss} & GPLv3 \\
- I2P logo & \url{https://github.com/i2p/i2p.android.base} & Apache-2.0 \\
- Orbot logo & \url{https://gitweb.torproject.org/orbot.git} & BSD \\
- F-Droid logo & \url{https://gitlab.com/fdroid/fdroidclient} & GPLv3 \\
- andOTP logo & \url{https://github.com/andOTP/andOTP} & MIT \\
- Shaarlier logo & \url{https://github.com/dimtion/Shaarlier} & GPLv3 \\
- wallabag logo & \url{https://github.com/wallabag/android-app} & GPLv3 \\
- OpenKeychain logo & \url{https://github.com/open-keychain/open-keychain} & GPLv3 \\
- EteSync logo & \url{https://github.com/etesync/android} & GPLv3 \\
- Syncthing logo & \url{https://github.com/syncthing/syncthing-android} & MPLv2 \\
- Briar logo & \url{https://code.briarproject.org/briar/briar} & GPLv3 \\
- \end{tabular}
+ {\scriptsize
+ \begin{tabular}{l | l | l}
+ item & source & license \\
+ \hline
+ K-9 Mail logo & \url{https://github.com/k9mail/k-9} & Apache-2.0 \\
+ OsmAnd logo & \url{https://github.com/osmandapp/Osmand} & CC-BY-NC-ND 4.0 \\
+ Nextcloud logo & \url{https://github.com/nextcloud/android} & AGPLv3 \\
+ Tiny Tiny RSS logo & \url{https://gitlab.com/derSchabi/tttrsss} & GPLv3 \\
+ I2P logo & \url{https://github.com/i2p/i2p.android.base} & Apache-2.0 \\
+ Orbot logo & \url{https://gitweb.torproject.org/orbot.git} & BSD \\
+ F-Droid logo & \url{https://gitlab.com/fdroid/fdroidclient} & GPLv3 \\
+ andOTP logo & \url{https://github.com/andOTP/andOTP} & MIT \\
+ Shaarlier logo & \url{https://github.com/dimtion/Shaarlier} & GPLv3 \\
+ wallabag logo & \url{https://github.com/wallabag/android-app} & GPLv3 \\
+ OpenKeychain logo & \url{https://github.com/open-keychain/open-keychain} & GPLv3 \\
+ EteSync logo & \url{https://github.com/etesync/android} & GPLv3 \\
+ Syncthing logo & \url{https://github.com/syncthing/syncthing-android} & MPLv2 \\
+ Briar logo & \url{https://code.briarproject.org/briar/briar} & GPLv3 \\
+ \end{tabular}
+ }
\end{frame}
\begin{frame}
\frametitle{Licenses (II)}
- \begin{tabular}{>{\scriptsize}l | >{\scriptsize}l | >{\scriptsize}l}
- item & source & license \\
- \hline
- Conversations logo & \url{https://github.com/siacs/Conversations} & GPLv3 \\
- Signal logo & \url{https://github.com/signalapp/Signal-Android} & GPLv3 \\
- Silence logo & \url{https://git.silence.dev/Silence/Silence-Android} & GPLv3 \\
- Tinc App logo & \url{https://github.com/pacien/tincapp} & GPLv3 \\
- KeePass DX logo & \url{https://github.com/Kunzisoft/KeePassDX} & GPLv3 \\
- dandelion* logo & \url{https://github.com/gsantner/dandelion} & GPLv3 \\
- Nomad logo & \url{https://framagit.org/disroot/AndHub} & GPLv3 \\
- Tusky logo & \url{https://github.com/tuskyapp/Tusky} & GPLv3 \\
- Movim logo & \url{https://github.com/movim/movim_android} & AGPLv3 \\
- Jami logo & \url{https://git.jami.net/savoirfairelinux/ring-client-android} & GPLv3 \\
- Bitmask logo & \url{https://0xacab.org/leap/bitmask_android} & GPLv3 \\
- WireGuard logo & \url{https://git.zx2c4.com/wireguard-android} & Apache-2.0 \\
- Fennec F-Droid logo & \url{https://hg.mozilla.org/releases/mozilla-esr68} & MPL-2.0 \\
- Tor Browser logo & \url{https://gitweb.torproject.org/tor-browser.git} & MPL-2.0 \\
- \end{tabular}
+ {\scriptsize
+ \begin{tabular}{l | l | l}
+ item & source & license \\
+ \hline
+ Conversations logo & \url{https://github.com/siacs/Conversations} & GPLv3 \\
+ Signal logo & \url{https://github.com/signalapp/Signal-Android} & GPLv3 \\
+ Silence logo & \url{https://git.silence.dev/Silence/Silence-Android} & GPLv3 \\
+ Tinc App logo & \url{https://github.com/pacien/tincapp} & GPLv3 \\
+ KeePass DX logo & \url{https://github.com/Kunzisoft/KeePassDX} & GPLv3 \\
+ dandelion* logo & \url{https://github.com/gsantner/dandelion} & GPLv3 \\
+ Nomad logo & \url{https://framagit.org/disroot/AndHub} & GPLv3 \\
+ Tusky logo & \url{https://github.com/tuskyapp/Tusky} & GPLv3 \\
+ Movim logo & \url{https://github.com/movim/movim_android} & AGPLv3 \\
+ Jami logo & \url{https://git.jami.net/savoirfairelinux/ring-client-android} & GPLv3 \\
+ Bitmask logo & \url{https://0xacab.org/leap/bitmask_android} & GPLv3 \\
+ WireGuard logo & \url{https://git.zx2c4.com/wireguard-android} & Apache-2.0 \\
+ Fennec F-Droid logo & \url{https://hg.mozilla.org/releases/mozilla-esr68} & MPL-2.0 \\
+ Tor Browser logo & \url{https://gitweb.torproject.org/tor-browser.git} & MPL-2.0 \\
+ \end{tabular}
+ }
\end{frame}
\begin{frame}
\frametitle{Licenses (II)}
- \begin{tabular}{>{\scriptsize}l | >{\scriptsize}l | >{\scriptsize}l}
- item & source & license \\
- \hline
- Thorium logo & \url{https://github.com/sschueller/peertube-android} & AGPLv3 \\
- WebKit logo & \url{https://en.wikipedia.org/wiki/File:WebKit_logo_(2015).svg} & non-free \\
- Chromium logo & \url{https://commons.wikimedia.org/wiki/File:Chromium_11_Logo.svg} & CC-BY 2.5 \\
- Replicant logo & \url{https://ftp.osuosl.org/pub/replicant/artwork/replicant_artwork.tar.gz} & CC-BY-SA 3.0 \\
- Guix logo & \url{https://git.savannah.gnu.org/cgit/guix/guix-artwork.git/} & CC-BY-SA 4.0 \\
- Bromite logo & \url{https://github.com/bromite/bromite.github.io} & GPLv3 \\
- Iridium logo & \url{https://github.com/iridium-browser/artwork} & non-free \\
- Debian logo & \url{https://www.debian.org/logos/} & CC-BY-SA 3.0 \\
- Unobtainium logo & \url{https://gitlab.com/thermatk/Unobtainium} & BSD \\
- everything else & this slideshow & CC BY-SA 4.0
- \end{tabular}
+ {\scriptsize
+ \begin{tabular}{l | l | l}
+ item & source & license \\
+ \hline
+ Thorium logo & \url{https://github.com/sschueller/peertube-android} & AGPLv3 \\
+ WebKit logo & \url{https://en.wikipedia.org/wiki/File:WebKit_logo_(2015).svg} & non-free \\
+ Chromium logo & \url{https://commons.wikimedia.org/wiki/File:Chromium_11_Logo.svg} & CC-BY 2.5 \\
+ Replicant logo & \url{https://redmine.replicant.us/projects/replicant/wiki/Artwork} & CC-BY-SA 3.0 \\
+ Guix logo & \url{https://git.savannah.gnu.org/cgit/guix/guix-artwork.git/} & CC-BY-SA 4.0 \\
+ Bromite logo & \url{https://github.com/bromite/bromite.github.io} & GPLv3 \\
+ Iridium logo & \url{https://github.com/iridium-browser/artwork} & non-free \\
+ Debian logo & \url{https://www.debian.org/logos/} & CC-BY-SA 3.0 \\
+ Unobtainium logo & \url{https://gitlab.com/thermatk/Unobtainium} & BSD \\
+ GeckoView logo & \url{https://github.com/mozilla/geckoview} & non-free \\
+ everything else & this slideshow & CC BY-SA 4.0
+ \end{tabular}
+ }
\end{frame}
\end{document}