marketing

Marketing materials (presentations, posters, flyers)
Log | Files | Refs

commit e542986bc0fedb80f6b611a65a768cb0f6cdf1a5
parent e10dc4c6e52a027c667e72be22b721358f0e142d
Author: Iván Ávalos <avalos@disroot.org>
Date:   Tue, 18 Jun 2024 10:25:14 -0600

Improvements to CoSin'24 wallet slides

Diffstat:
Mworkshops/wallet.tex | 145+++++++++++++++++++++++++++++++++++++++++++++++++++++--------------------------
1 file changed, 97 insertions(+), 48 deletions(-)

diff --git a/workshops/wallet.tex b/workshops/wallet.tex @@ -3,7 +3,7 @@ \newcommand{\TITLE}{NEXT \\ GENERATION \\ INTERNET} \newcommand{\SUB}{GNU Taler for Developers} -\newcommand{\AUTHOR}{Christian Grothoff} +\newcommand{\AUTHOR}{Iván Ávalos} \newcommand{\SPEAKER}{Christian Grothoff} \newcommand{\INST}{Bern University of Applied Sciences} \newcommand{\DATE}{COSIN'24} @@ -29,8 +29,8 @@ Taler is \vfill \begin{itemize} \item a Free/Libre software \emph{payment system} infrastructure project - \item ... with a surrounding software ecosystem - \item ... and a company (Taler Systems S.A.) and community that wants to deploy it + \item \dots with a surrounding software ecosystem + \item \dots and a company (Taler Systems S.A.) and community that wants to deploy it as widely as possible. \end{itemize} \vfill @@ -95,50 +95,44 @@ However, Taler is \end{center} \end{frame} -\begin{frame}[fragile]{GNU Taler wallet}{qtart} - qtart (\textbf{Q}uickJS \textbf{TA}ler \textbf{R}un\textbf{T}ime) is a QuickJS-based runtime that embeds wallet-core into a native - library for usage outside of the browser, such as the mobile apps or any - future desktop app. - \begin{itemize} - \item Based on the reputable QuickJS JavaScript engine. - \item Implements native modules for cryptography. - \item Supports native HTTP networking (with multi-threading). - \item Provides access to the wallet-core API via a simple callback-based interface. - \item Keeps us from having to rewrite wallet-core! - \item Keeps us from having to deal with Big Node! - \end{itemize} -\end{frame} +\begin{frame}[fragile]{GNU Taler wallet}{wallet-core} + \vfill -\begin{frame}[fragile]{GNU Taler wallet}{Android installation} - For Android, there are three main installation methods: - \begin{itemize} - \item Build from source code (with Android Studio) - \item Install from store - \begin {itemize} - \item From Google Play Store - \item From F-Droid (stable) - \item From F-Droid (nightly) - \end{itemize} - \item Manually install APK (\url{https://wallet.taler.net}) - \end{itemize} -\end{frame} + \textbf{wallet-core} is the component that powers the Taler wallets across + different platforms. It is written in TypeScript and it implements of all + the core functionality required by the wallets. It takes care of the + following: -\begin{frame}[fragile]{GNU Taler wallet}{iOS installation} - For iOS, there are three main installation methods: \begin{itemize} - \item Build from source code (with Xcode) - \item Install from the App Store - \item Install from TestFlight (beta) + \item database management (SQLite3) + \item task shepherding + \item cryptography + \item wallet operations + \item communication with the exchange \end{itemize} + + Most of its functionality is exposed via \textbf{requests}. Apps using + wallet-core can interact with it by calling different request methods, + passing parameters, and then e.g.\ rendering in the UI the data contained in + the response or showing an error message. + + \vfill \end{frame} -\begin{frame}[fragile]{GNU Taler wallet}{WebEx installation} - For the web extension, there are three installation methods: + +\begin{frame}[fragile]{GNU Taler wallet}{qtart} + qtart (\textbf{Q}uickJS \textbf{TA}ler \textbf{R}un\textbf{T}ime) is a + QuickJS-based runtime that embeds wallet-core into a native library for + usage outside of the browser, such as the mobile apps or any future desktop + app. + \begin{itemize} - \item Build from source code (with pnpm) - \item Install from \url{https://addons.mozilla.org} - \item Install from \url{https://wallet.taler.net/} + \item Based on the acclaimed QuickJS JavaScript engine. + \item Implements native modules for cryptography. + \item Supports native HTTP networking (with multi-threading). + \item Provides access to the wallet-core API via a simple callback-based interface. + \item Keeps us from having to rewrite wallet-core for every platform! \end{itemize} \end{frame} @@ -164,6 +158,35 @@ $ make created under \texttt{packages/taler-wallet-embedded/dist/taler-wallet-core-qjs.mjs}. \end{frame} + +\begin{frame}[fragile]{GNU Taler wallet}{Building web extension} + In order to build the web extension, please follow the steps in the previous + slide, and then run the following command: + +\begin{verbatim} +$ make webextension +\end{verbatim} + + This will generate two files under \texttt{packages/taler-wallet-webextension}: + + \begin{itemize} + \item \texttt{extension/v2/taler-wallet-webextension-\$VERSION.zip} + \item \texttt{extension/v3/taler-wallet-webextension-\$VERSION.zip} + \end{itemize} + + Those files are the final packaged extensions. Depending on the manifest + version supported by your browser, you should install either \texttt{v2} + (e.g. Firefox) and \texttt{v3} (e.g. Chromium/Chrome). + + %% This will generate an extension package under + %% \texttt{packages/taler-wallet-webextension/extension/v2} and another one + %% under \texttt{packages/taler-wallet-webextension/extension/v3}, both of them + %% called \texttt{taler-wallet-webextension-\$VERSION.zip}. Depending on the + %% manifest supported by your browser, you should install either the package in + %% \texttt{v2} (e.g. Firefox) or the one in \texttt{v3} (e.g. Chrome). +\end{frame} + + \begin{frame}[fragile]{GNU Taler wallet}{Building qtart (Android)} \begin{enumerate} \item Install Docker and Docker Compose @@ -184,6 +207,7 @@ $ docker-compose run --rm quickjs \texttt{allprojects/repositories}. \end{frame} + \begin{frame}[fragile]{GNU Taler wallet}{Building Android app} \begin{enumerate} \item Install Android Studio. @@ -200,6 +224,7 @@ $ docker-compose run --rm quickjs \end{enumerate} \end{frame} + \begin{frame}[fragile]{GNU Taler wallet}{Building iOS app} \begin{enumerate} \item Install Xcode (in macOS). @@ -215,8 +240,6 @@ $ docker-compose run --rm quickjs \end{enumerate} \end{frame} -\begin{frame}[fragile]{GNU Taler wallet}{Building web extension} -\end{frame} \begin{frame}{Wallet-core API}{Introduction} \begin{center} @@ -237,6 +260,7 @@ $ docker-compose run --rm quickjs \end{frame} + \begin{frame}[fragile]{Wallet-core API}{Request structure} \begin{center} \begin{tabular}{c c c} @@ -255,13 +279,12 @@ $ docker-compose run --rm quickjs { "id": 0, "operation": "init", - "args": { - "logLevel": "INFO" - } + "args": { "logLevel": "INFO" } } \end{verbatim} \end{frame} + \begin{frame}[fragile]{Wallet-core API}{Response structure} \begin{center} \begin{tabular}{c c c} @@ -278,15 +301,14 @@ $ docker-compose run --rm quickjs Example \begin{verbatim} -{ - "type": "response", +{ "type": "response", "id": 0, "operation": "init", - "result": {...} -} + "result": {...} } \end{verbatim} \end{frame} + \begin{frame}[fragile]{Wallet-core API}{Notification structure} \begin{center} \begin{tabular}{c c c} @@ -310,9 +332,36 @@ $ docker-compose run --rm quickjs \end{verbatim} \end{frame} + +\begin{frame}[fragile]{Wallet-core API}{Error structure} + An error can be contained inside a response or a notification, and includes + the following data, in some cases along with extra fields: + + \begin{center} + \begin{tabular}{c c c} + \hline + Field & Type & Description \\ + \hline + \texttt{code} & integer & GANA error code \\ + \texttt{when} & timestamp? & time when it occurred \\ + \texttt{hint} & string? & error message \\ + \end{tabular} + \end{center} + + Example + +\begin{verbatim} +{ "code": 7001, + "hint": "could not resolve host: demo.taler.net", + "when": { "t_ms": 1718726899827 } } +\end{verbatim} +\end{frame} + + \begin{frame}{Wallet-core CLI} \end{frame} + \begin{frame}{Other components} \begin{itemize} \item Merchant