New post: a minimal matrix cli client
authorTom Marble <tmarble@info9.net>
Thu, 2 Jan 2020 04:46:32 +0000 (22:46 -0600)
committerTom Marble <tmarble@info9.net>
Thu, 2 Jan 2020 04:46:32 +0000 (22:46 -0600)
Signed-off-by: Tom Marble <tmarble@info9.net>
tmarble/posts/a_minimal_matrix_cli_client.mdwn [new file with mode: 0644]

diff --git a/tmarble/posts/a_minimal_matrix_cli_client.mdwn b/tmarble/posts/a_minimal_matrix_cli_client.mdwn
new file mode 100644 (file)
index 0000000..f924e3d
--- /dev/null
@@ -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.
+
+<br/>
+<a href="https://betrusted.io/">
+<img src="http://info9.net/images/betrusted/betrusted.gif" alt="Betrusted Simulation in renode"/>
+ <br/>
+<img src="http://info9.net/images/betrusted/keyboard-v4-azerty3-cropped.png" alt="Betrusted Azerty Keyboard"/>
+</a>
+<br/>
+
+_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/