a minimal matrix cli client

In building the software for Betrusted our goal is to start with a minimal 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 operating system.


Betrusted Simulation in renode
Betrusted Azerty Keyboard

Shown: very early Betrusted simulation running in 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 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 and matrixcli.

A very promising, even if "work in progress", client is ruma-client as it is written in Rust and designed to be minimal. Another potential source of inspiration is 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.

However, Betrusted is very intentionally not a web browser. In fact the display is very simple: 336 × 536 pixels, 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 project is made possible with financial support from NLnet and the ING10 Privacy & Trust Enhancing Technologies Fund.