From 5ccd81ba6f76b47b1b26da85abf5d310d59e6e1f Mon Sep 17 00:00:00 2001 From: Tom Marble Date: Wed, 1 Jan 2020 22:46:32 -0600 Subject: [PATCH] New post: a minimal matrix cli client Signed-off-by: Tom Marble --- .../posts/a_minimal_matrix_cli_client.mdwn | 113 ++++++++++++++++++ 1 file changed, 113 insertions(+) create mode 100644 tmarble/posts/a_minimal_matrix_cli_client.mdwn diff --git a/tmarble/posts/a_minimal_matrix_cli_client.mdwn b/tmarble/posts/a_minimal_matrix_cli_client.mdwn new file mode 100644 index 0000000..f924e3d --- /dev/null +++ b/tmarble/posts/a_minimal_matrix_cli_client.mdwn @@ -0,0 +1,113 @@ +# a minimal matrix cli client + +In [building the software][betrusted-initial] for Betrusted our goal is to +start with a minimal [Matrix][matrix] client: specifically one built +intentionally for the command line with no extras to +keep the memory footprint as low as possible. + +This will prepare us for the secure client on the actual device we +will be running in a highly constrained user interface environment, +with application code written in Rust on top of the [Xous][xous] +operating system. + +
+ +Betrusted Simulation in renode +
+Betrusted Azerty Keyboard +
+
+ +_Shown: very early Betrusted simulation running in [renode][renode]_ + +The rationale for choosing the Matrix protocol for the first chat +application is that it: 1) is an open protocol, 2) supports federated +(decentralized) organization, 3) has multiple, independent, open source +implementations, and 4) supports multiple interoperability bridges. + +## Choosing a Matrix reference client + +Looking for inspiration from existing [Matrix clients][matrix-clients] +we find Fractal is written in Rust, but is a very complex GUI application +and it does not have encryption support. The Weechat client is actually +a plugin for Weechat, is written in Python, and further from being +a stand alone application. Gomucks is a more minimal client, but it +is written in Go, has many "missing features", and fails to build. +There are very old and unmaintained projects [matrix-cli][matrixcli] +and [matrixcli][matrixcli]. + +A very promising, even if "work in progress", client is [ruma-client][ruma-client] +as it is written in Rust and designed to be minimal. Another potential source +of inspiration is [Matrix IRCd][matrix-ircd] as it is written in Rust +and curated by the Matrix foundation. So stay tuned for the initial +Betrusted Matrix command line client which will benefit from these +prior works. + +## Web Content Accessibility Guidelines + +We are developing for an international and diverse set of users +and want to take into consideration guidance established for the +web from the [Web Content Accessibility Guidelines][wcag]. + +However, Betrusted is very intentionally _not_ a web browser. +In fact the display is very simple: 336 × 536 pixel, black-and-white, +200 ppi resolution LCD. + +Here are things we will keep in mind while considering accessibility +(based on the WCAG checks): + +* Page Title + We can show "titles", but there will not be "windows", _per se_ + Betrusted (at least initially) will not have a screen reader. +* Image Text Alternatives + In the context of the chat application the first "images" to be used + will be for emojis. We may provide an alternative, textual + representation for these images, e.g. **:smiley:** for :) +* Text + ** Headings + Betrusted will not have heading structure (like a web browser) + ** Contrast ratio + This is easy: Betrusted _only_ works at maximal contrast: black-and-white + ** Resize text + Betrusted should allow users to resize text (insomuch as rendering + different font sizes does not consume memory exorbitantly) +* Interaction + ** Keyboard access and visual focus + Betrusted (at least initially) will not have assistive technologies. + ** Forms, labels and errors + Following the guideline "Labels, keyboard access, clear instructions, and effective error handling are important for forms accessibility." is appropriate for Betrusted +* General + ** Moving, Flashing or Blinking Content + For the chat application we do not expect blinking content. + ** Multimedia alternatives + For the chat application we do not expect multimedia (at least initially). + ** Basic Structure Check + The goal of "linearization of content" will likely not be an issue + for Betrusted as the screen is so small it will be impractical to + have more than one column in any given presentation. + +Thus evaluating Bestrusted for Accessibility will require certain +adaptations. + +## Acknowledgment + +The [Betrusted Software][betrusted-software] project is made possible with +financial support from [NLnet][nlnet] and the +[ING10 Privacy & Trust Enhancing Technologies Fund][pet]. + + +[[!tag betrusted software risc-v matrix rust]] + +[betrusted-initial]: http://info9.net/wiki/tmarble/posts/Betrusted_Software/ +[xous]: https://xobs.io/p/8e333298-72aa-4815-b3d8-2b7080578c2a/ +[matrix]: https://en.wikipedia.org/wiki/Matrix_(protocol) +[matrix-clients]: https://matrix.org/clients/ +[matrix-cli]: https://github.com/koenw/matrix-cli +[matrixcli]: https://github.com/saadnpq/matrixcli +[ruma-client]: https://github.com/ruma/ruma-client +[matrix-ircd]: https://github.com/matrix-org/matrix-ircd +[renode][renode]: https://renode.io/ +[wcag]: https://www.w3.org/WAI/test-evaluate/preliminary/ +[betrusted-software]: https://nlnet.nl/project/BetrustedSoftware/ +[nlnet]: https://nlnet.nl/ +[pet]: https://nlnet.nl/PET/ -- 2.45.2