negative zero

FluffyChat: Finally a Good Matrix Client!

2021 March 29

[matrix] [messaging] [review] [tech]


What is Matrix?

Matrix is a federated, room-based chat protocol. which supports encryption based on Signal's Double Ratchet Algorithm.

Matrix is cool and is often treated as a more modern version of what XMPP is. Unfortunately, Matrix software has pretty consistently been either subpar or incomplete. On the server side, Synapse is the primary option. Synapse is horribly inefficient. On my (currently single-user) Synapse Matrix server, if I simply join the large #matrix:matrix.org room, it takes under 10 minutes for Synapse to eat up around 4GB of RAM and lock up my server. Dendrite, a "second-generation Matrix homeserver", intends to be more efficient. Until recently, Dendrite was lacking essential features, such as support for encrypted rooms. It is currently in beta.

As for clients, we have a plethora under development... but most of the graphical ones are still lacking essential features and are not yet ready for use. The primary client is Element. On desktop, Element is an Electron app. (I've been begrudgingly using it despite this.) On iOS, Element does not have adjustable text size, which is a major accessibility issue that has been raised multiple times, starting as far back as 2016. I've been looking for a good iOS chat app for a long time, and this has been the blocking issue for Element.


Introducing FluffyChat

Now, finally, we have a good, usable Matrix client called FluffyChat! FluffyChat is an AGPLv3-licensed Matrix client written with Flutter and Dart, which enables it to compile to native applications on multiple platforms. It can be run as a JavaScript webapp, but it can also be used as a native (not Electron) app on desktop GNU/Linux, Android, iOS, and Ubuntu Touch.

I should add a caveat that I know very little about Flutter. It's a Google project licensed under the 3-clause BSD license (a free software license). Here's a post about Flutter by someone who knows more than I do.

I first used FluffyChat today, so the following may leave out features or issues I haven't noticed yet.


The Good

FluffyChat is super cute! It has a nice, friendly UI (including a black-based dark theme) that seems pretty intuitive to me. It supports Matrix's Megolm/Olm encryption, and from my experience so far, it works well.

FluffyChat is available on multiple platforms, and it can be installed on Android through its own F-Droid repository for users who wish to avoid Google Play.

FluffyChat is free software (with exception of push notifications - see below), licensed under a strong copyleft software license.


The Bad

FluffyChat is probably not available through your package manager at this time. (There is an AUR package, btw.) It uses Google's Firebase Cloud Messaging service for push notifications (on both Android and iOS), which is why it's not in the main F-Droid repository (caution: link requires JavaScript). There are plans to add a non-Google version of FluffyChat to F-Droid (caution: link requires JavaScript).

I (using the Flatpak version on desktop GNU/Linux) tested FluffyChat out with a contact (using FluffyChat on iOS), and we had trouble with device verification, requiring several tries to perform the verification. I believe this was caused by user error, but I am including it for completeness.

FluffyChat is clearly designed as a mobile app first and foremost, which can also run as a desktop program. I've found from using it on desktop that it has some strange quirks due to its mobile-oriented model. For example, I can't use Ctrl+Backspace or Ctrl+Delete to delete a whole word; these commands do nothing. Holding Ctrl or Shift when I press Enter doesn't cause the message entry box to go to the next line; it ignores the Ctrl/Shift and sends the message. There are no scroll bars; scrolling follows a mobile/touchscreen dragging paradigm.

For some reason, FluffyChat seems to need a lot of GPU resources. I usually set nouveau.noaccel=1 because of a Nouveau bug that causes random X crashes or lock-ups, so this translates into FluffyChat using an unreasonable amount of CPU power for a text chat app. This matter requires more investigation.


Conclusion

I'm really excited about FluffyChat! FluffyChat makes me actually want to use Matrix, not just tolerate it, and it makes it so that I can finally recommend encrypted, federated chat to iOS users. I hope it will soon be available in popular GNU/Linux distros through their package managers, as well as in F-Droid.

Unfortunately, I'm having some issues on my system due to FluffyChat's apparent graphics needs, so I may need to stick with Element for now.

Go check out FluffyChat!