Ask HN: Preferred chat program compromise between security and UX?

3 points by asdkhadsj ↗ HN
Recently I've been needing to switch from iMessage to something supporting Linux. My wife and I previously used Telegram, however I've never been sold on their security model. However, they do have one of the better UXs. I've wanted to try something like Matrix, but not heard great things on its performance.

So I'm curious to hear what you use HN. What do you use, what platform are you on, and what do you like/dislike about it?

Appreciate any replies.

6 comments

[ 1.5 ms ] story [ 29.2 ms ] thread
personally, i’m using matrix & riot with my family (including non-technical people), some friends and coworkers. i chose it for 5 main reasons:

1. it is an open standard based on free software

2. it is based on history synchronization between servers instead of message transmission between clients, so you can send messages seamlessly from any device and have access to your conversation history (think git vs sms)

3. you can use your own server to host your conversations (the conversation history is replicated on the server of each participant)

4. it has end-to-end encryption

5. there is only one type of conversation, so the are no differences between a one-to-one chat and group chat: a one-to-one chat is simply a group chat with only two participants

i have my own personal server (old laptop at home), and the rest of my family uses another dedicated server (other old laptop at my cousin’s home). friends and coworkers use the matrix.org homeserver. the matrix.org homeserver can be slow sometimes (because it hosts many rooms and has many connected users), but messaging between our own servers is instant.

sure, it’s not (yet) as polished as mainstream apps. for example, currently, with end-to-end encryption, one need to verify each device of each other person on each of their own devices, which is not very user friendly (but this is being worked on, so only one verification per person will be needed in the future).

this said, it has nevertheless the most needed features. it has even some features that mainstream apps lack. for example, if you’re a little technical you can start using bridges. this allows to receive and send messages from/to other messaging systems (irc, xmpp, slack, telegram, discord, sms,…) all from within your matrix client.

Matrix project lead here; we've been making steady progress on performance issues, and since we exited beta a few weeks ago (https://matrix.org/blog/2019/06/11/introducing-matrix-1-0-an...) we now have much more bandwidth to improve it. We were consciously following a "make it work, make it work right, make it work fast" philosophy.

For instance, as of a few days ago we have a tentative fix for one of the biggest causes of high RAM usage in Synapse (the reference server implementation): https://github.com/matrix-org/synapse/pull/5480. If this tests out okay in the wild it should land in the next release.

Meanwhile, my personal server idles at around 600MB of RAM (across a few hundred conversations, some in quite large rooms), although there's room for us to reduce that by at least a factor of 10.

It's important to understand that Matrix is effectively a system for replicating chat history - it's more like USENET or Git than (say) XMPP or IRC. As a result, the resource utilisation depends entirely on the complexity/size of the rooms you participate in. A single person server where that user joins thousands of public chatrooms with hundreds of thousands of users is going to use a lot more RAM than a 10,000 person server where everyone is in small private chats.

Finally, a lot of Matrix's reputation for bad performance comes from the fact that the default sqlite database is not remotely optimised at all, and performs horrifically badly as soon as you start federating with the rest of Matrix. You have to use Postgres these days. Also, if you do end up with a heavily used server, you have to manually increase the cache sizing in the config; it doesn't autotune the caches yet.

So to conclude:

* Run Python3

* Run PostgreSQL

* If your users are joining lots of large rooms, you'll need to manually increase the cache factor to avoid hammering the DB. Alternatively, you can now cap the size of rooms your server is allowed to participate in (https://github.com/matrix-org/synapse/issues/5069)

...and you should be relatively fine.

Appreciate the info! Matrix does seem like the most likely for us.

Sidenote, has Matrix discussed priced offerings? Eg, I'm always concerned about OSS projects funding. I'd love if Matrix offered a, for example, purchasable hosted option that gave them a funding model beyond donations (which are problematic for obvious reasons). I know this is less of an issue for self hosted FOSS, but still.

edit: Interesting, the Riot.im page has a link to Modular.im. I see it's "from the creators of Matrix", does that fund Matrix too? /me continues to dig

So while Matrix itself is an open source project backed by a non-profit foundation (https://matrix.org/foundation), the team who started Matrix created a startup (New Vector; https://vector.im) in 2017 in order to hire the core developers and ensure we could keep working on it fulltime (and also to dogfood the protocol and ensure that you can build apps on it that people consider useful enough to pay for). The Riot app (https://riot.im) is made by New Vector, and Modular (https://modular.im) is the hosting service New Vector provides as a paid Matrix hosting offering (using Riot as the default client). The proceeds from Modular go directly to paying the Matrix core devs employed by New Vector, and so massively benefit the project. Sorry it's a bit complicated; turns out that funding opensource is not trivial...
> Sorry it's a bit complicated; turns out that funding opensource is not trivial...

You explained it well, and you're definitely correct. Appreciate your time! I look forward to being able to buy a tiny (ie 2 or 3 person) slice of Modular.im :)

Small (<5 people) deployments are coming in the next few weeks. I'm using mine already (and it's only using 190MB of RAM...)