f924e3d4147a020c8a53845f469469f2722a4d57
[wiki.git] / tmarble / posts / a_minimal_matrix_cli_client.mdwn
1 # a minimal matrix cli client
2
3 In [building the software][betrusted-initial] for Betrusted our goal is to
4 start with a minimal [Matrix][matrix] client: specifically one built
5 intentionally for the command line with no extras to
6 keep the memory footprint as low as possible.
7
8 This will prepare us for the secure client on the actual device we
9 will be running in a highly constrained user interface environment,
10 with application code written in Rust on top of the [Xous][xous]
11 operating system.
12
13 <br/>
14 <a href="https://betrusted.io/">
15 <img src="http://info9.net/images/betrusted/betrusted.gif" alt="Betrusted Simulation in renode"/>
16  <br/>
17 <img src="http://info9.net/images/betrusted/keyboard-v4-azerty3-cropped.png" alt="Betrusted Azerty Keyboard"/>
18 </a>
19 <br/>
20
21 _Shown: very early Betrusted simulation running in [renode][renode]_
22
23 The rationale for choosing the Matrix protocol for the first chat
24 application is that it: 1) is an open protocol, 2) supports federated
25 (decentralized) organization, 3) has multiple, independent, open source
26 implementations, and 4) supports multiple interoperability bridges.
27
28 ## Choosing a Matrix reference client
29
30 Looking for inspiration from existing [Matrix clients][matrix-clients]
31 we find Fractal is written in Rust, but is a very complex GUI application
32 and it does not have encryption support. The Weechat client is actually
33 a plugin for Weechat, is written in Python, and further from being
34 a stand alone application. Gomucks is a more minimal client, but it
35 is written in Go, has many "missing features", and fails to build.
36 There are very old and unmaintained projects [matrix-cli][matrixcli]
37 and [matrixcli][matrixcli].
38
39 A very promising, even if "work in progress", client is [ruma-client][ruma-client]
40 as it is written in Rust and designed to be minimal. Another potential source
41 of inspiration is [Matrix IRCd][matrix-ircd] as it is written in Rust
42 and curated by the Matrix foundation. So stay tuned for the initial
43 Betrusted Matrix command line client which will benefit from these
44 prior works.
45
46 ## Web Content Accessibility Guidelines
47
48 We are developing for an international and diverse set of users
49 and want to take into consideration guidance established for the
50 web from the [Web Content Accessibility Guidelines][wcag].
51
52 However, Betrusted is very intentionally _not_ a web browser.
53 In fact the display is very simple: 336 × 536 pixel, black-and-white,
54 200 ppi resolution LCD.
55
56 Here are things we will keep in mind while considering accessibility
57 (based on the WCAG checks):
58
59 * Page Title
60   We can show "titles", but there will not be "windows", _per se_
61   Betrusted (at least initially) will not have a screen reader.
62 * Image Text Alternatives
63   In the context of the chat application the first "images" to be used
64   will be for emojis. We may provide an alternative, textual
65   representation for these images, e.g. **:smiley:** for :)
66 * Text
67   ** Headings
68      Betrusted will not have heading structure (like a web browser)
69   ** Contrast ratio
70      This is easy: Betrusted _only_ works at maximal contrast: black-and-white
71   ** Resize text
72      Betrusted should allow users to resize text (insomuch as rendering
73      different font sizes does not consume memory exorbitantly)
74 * Interaction
75   ** Keyboard access and visual focus
76      Betrusted (at least initially) will not have assistive technologies.
77   ** Forms, labels and errors
78      Following the guideline "Labels, keyboard access, clear instructions, and effective error handling are important for forms accessibility." is appropriate for Betrusted
79 * General
80   ** Moving, Flashing or Blinking Content
81      For the chat application we do not expect blinking content.
82   ** Multimedia alternatives
83      For the chat application we do not expect multimedia (at least initially).
84   ** Basic Structure Check
85      The goal of "linearization of content" will likely not be an issue
86      for Betrusted as the screen is so small it will be impractical to
87      have more than one column in any given presentation.
88
89 Thus evaluating Bestrusted for Accessibility will require certain
90 adaptations.
91
92 ## Acknowledgment
93
94 The [Betrusted Software][betrusted-software] project is made possible with
95 financial support  from [NLnet][nlnet] and the
96 [ING10 Privacy & Trust Enhancing Technologies Fund][pet].
97
98
99 [[!tag betrusted software risc-v matrix rust]]
100
101 [betrusted-initial]: http://info9.net/wiki/tmarble/posts/Betrusted_Software/
102 [xous]: https://xobs.io/p/8e333298-72aa-4815-b3d8-2b7080578c2a/
103 [matrix]: https://en.wikipedia.org/wiki/Matrix_(protocol)
104 [matrix-clients]: https://matrix.org/clients/
105 [matrix-cli]: https://github.com/koenw/matrix-cli
106 [matrixcli]: https://github.com/saadnpq/matrixcli
107 [ruma-client]: https://github.com/ruma/ruma-client
108 [matrix-ircd]: https://github.com/matrix-org/matrix-ircd
109 [renode][renode]: https://renode.io/
110 [wcag]: https://www.w3.org/WAI/test-evaluate/preliminary/
111 [betrusted-software]: https://nlnet.nl/project/BetrustedSoftware/
112 [nlnet]: https://nlnet.nl/
113 [pet]: https://nlnet.nl/PET/