Hacker News new | past | comments | ask | show | jobs | submit login
A Year Using Matrix and Riot (itscode.red)
270 points by kasbah on May 9, 2018 | hide | past | web | favorite | 80 comments

Project lead for Matrix here. This is a pretty accurate post, and in terms of the negative points we are painfully aware that UX on Riot (and performance on Synapse) still has a way to go. The current stuff we have in flight to fix this are:

* Lazy-load all room members rather than push them proactively to clients. This should improve initial sync times and subsequent RAM usage by anywhere from 3x to 20x depending on how active your account is.

* Cross-sign E2E devices when you log in so nobody ever has to verify them again. This should kill the constant device verification (and key sharing) warnings.

* Refresh the whole UI/UX of Riot. We have an ex-Canonical/Ubuntu pro-designer working on a complete facelift of Riot/Web, coming in the next few months.

* Perf improvements across the board on Riot/Web - particularly optimising React when switching rooms, and switching from Draft to Slate in order to speed up and stabilise the message composer.

* Algorithmic improvements to Synapse to speed up the hottest paths (shifting from O(N) to roughly O(1) with the size of the room) - https://matrix.org/_matrix/media/v1/download/jki.re/ubNfLtrm...

* Algorithmic improvements to Synapse to avoid fragmentation of rooms by partitioning the DAG into 'chunks', avoiding stale/dead/orphaned chunks from contributing to the fragmentation of the overall room - https://docs.google.com/document/d/1E0cmEeMDwcQarFYxpZ0b9aoQ...

On the minus side, we've been badly slowed down by constant firefighting keeping the Matrix.org homeserver operational despite massive growth, as well having to do a lot of preparation for GDPR compliance - see https://matrix.org/blog/2018/05/08/gdpr-compliance-in-matrix....

On the plus side, we have a lot of new people joining during May to work fulltime on Synapse, Dendrite and Riot/Web - which once we get past the mythical man month stage should make a huge huge difference.

Fun times...

Thanks for the work you're doing here! I want to commend you on how well and consistently you communicate the priorities and progress of this project. Between the This Week in Matrix[0] blog posts, the Matrix Live chats for the Patreon patrons, and your presence here and on matrix/irc, I'm impressed at your organization and the results you've managed to produce!

I'm happily using Riot with my wife and our 60+ year old parents, as well as with my peers, and we all really like it. This project is really shaping up to be a gem of the open-source community, and I'm excited to see it grow!


I use Riot on a daily basis and I like the overall concept, we love federated where I communicate. So let me try to share some experiences that bugger me the most because I really hope you could imporve on those things. Imho those things are more important than UI. (form follows function, sorry guys ;D)

- Messages that can't be decrypted on only some of my devices. This for example forces me to use my phone while sitting in front of my riot desktop application. This becomes worse if ppl send me URLs. I have to forward them from my phone to my pc - using an empty channel with only me reading, having riot telling me that noone is listening :D. Im-/exporting all keys on all my devices only helps for a while and is impossible while not at home. This mostly - but not only - happens with linux.

- Searching the history doesn't work well at all. Shows zero results for a string, scrolling up proves that wrong.

- My phone doesn't stop to blink even tho I read the message on my pc.

- I really do not like electron and things relying on 100+mb google sandbox software. But well, I understand your need to use it... ;D

Have you used any of the Qt based client? I'm asking because I'm interested in Matrix, the idea and the protocol look great but there is no way I'm using an electron app...

I use both nheko (Qt/C++), Fractal (GTK+/Rust) and Quaternion (Qt/QML) on a regular basis, and they are all very usable albeit not as mature as Riot yet. Definitely worth a go though.

> - Searching the history doesn't work well at all. Shows zero results for a string, scrolling up proves that wrong.

This is because search doesn't work at all in encrypted rooms since it's implemented server-side.

We’re working on clientside search to fix this: https://github.com/matrix-org/matrix-search/tree/two-headed-...

From what I understand, Electron is a very temporary stopgap.

I would love to see a PWA.. In my experience those work (a lot) better than their native counterparts. Some good examples are mobile.twitter.com, instagram.com and maps.google.com

The problem is that in these cases, temporary stopgaps have a tendency of becoming permanent solutions.

Matrix/Riot have been what I've been wanting for a long time. My biggest issue at the moment is that communications is an intrinsically social thing. Getting friends and family to swap when there are all these minor polish issues means I'm sitting in a room all by myself. I refuse to give up.

The fact that you all are working so hard on performance and polish really gives me hope that soon I'll be able to pull some less technical people off of hangouts.

As others have said, thanks for everything. I am a Patreon supporter, I would highly encourage others to support Matrix/Riot as well. I have been able to transition the vast majority of my personal and professional communication to Riot.im on Android, iOS, and web. Voice, video, text, memes, all of it. I know it has its rough points, but even non technical family and friends have been able to use it, getting off of the proprietary, nonfree alternatives. Thank you very much.

Tangential shout out for a nice FOSS alternative to Patreon ... Liberapay.

Matrix has an account with them, you can support them there, and 100% of your money goes to Matrix.


I was a Patreon supporter until they received funding from that crypto currency company. I'm waiting to see how that pans out and don't think my money matters much now anyway.

Patreon does actually help very significantly - at the current rate it effectively funds one fulltime developer for the project. Or to think of it another way, it adds several months onto the total runway that the funding from Status gives us, and this is a massive boost given the scale and ambition of the project - we need all the time we can get. So: huge huge thanks both to everyone who supported us in the past (without whom it would have been impossible to justify raising larger funding from folks like Status) - and likewise to everyone who continues to support Matrix today, as it genuinely is helping us keep the lights on.

Is there any reason Dendrite hasn't gotten more attention than it has? I can understand why you wouldn't want to write a new homeserver to begin with, but I'd think you'd want to focus heavily on it once you made that decision.

Speaking of Dendrite, do you all have a general idea when it will be production-ready? I'm looking forward to being able to use it, even before it's hit full feature parity with Synapse. Just out of curiosity, how beefy is the server that the Matrix.org homeserver runs on? My VPS basically had a meltdown when I opened #matrix:matrix.org, and it wasn't even hosting the channel.

All in all, I'm pretty pleased with Matrix. It does pretty much everything I could ask, and seems very nice to develop against. The only problems I've had with it in my past few months of (admittedly, relatively light) use were related to misconfiguration on my end and Matrix.org being cripplingly overburdened.

The problem with Dendrite is that we've had no choice but to focus on keeping the current servers (i.e. Synapse) scaling and alive, especially the matrix.org server. The problem is compounded by the two devs who originally led Dendrite sadly leaving during the funding uncertainty we had last year.

However, we have new folks joining to work on Dendrite over the coming weeks, and we should be able to get it moving again. But it's now looking like a two-pronged attack; one to mature Synapse to being usable - and another to keep Dendrite headed in the right direction to be a good alternative (initially for AS traffic, then full CS traffic).

https://news.ycombinator.com/item?id=16940880 has a lot more info on this.

Thanks, that was a nice write-up.

I wanted to mention the issues surrounding Communities. Late last year I was really interested in the possibility of migrating a community I run from Discord to Matrix, but the featureset and UI for Communities was just not flexible enough for our needs. Things like community-internal roles/subgroups, subflairs, & subchannels are very important for any group larger than a dozen people. Plus in Riot the focus on global channels made the UI quite confusing. (I opened an issue for one of these points but it seemingly hasn't received much dev progress so far.)

(Admittedly, Matrix's focus on global chats rather than Communities makes for a pretty complicated model/system when Communities and subflairs and subchannels need to be implemented.)

I really hope Matrix and Riot will be able to catch up with the other players in this respect, because Communities is a major reason why Discord has grown as big as it has. Powerful group administration tools encourage people to start communities on a platform, invite more people to them, and advertise those communities. It's imo a major driver of growth, and I'd like to see Matrix gain lots of market share.

It'll be hard, but best of luck, we're cheering for you.

Is Discord built using Electron? I think I read something like this recently.

Is there a bunch of work going on from the team there in preparation for the Purism Librem 5, or is that mostly their efforts that happen to rely on your tech?

Sadly it’s ended up being the latter. We’d like to help them, but doing so would pull time away from the core Matrix stuff, which would require us to fund more people to cover the work. They haven’t been able to supply any funding, so we’re supporting them on a best effort basis instead.

That's concerning. One of the reasons I bought a Librem 5 is that I thought this would fund development of Matrix.

The Librem 5 page says “partnering with Matrix” but it now sounds like that has no meaning.

I guess it depends on your definition of 'partnering'. Right now I'm sitting in a Fractal / Librem5 workshop in Strasbourg with a bunch of GNOME and Purism folk, trying to advise on how GNOME can use Matrix well. We were also expecting to be funded to work on the Librem5 on a better than best effort basis, but it seems there wasn't enough $.

Gotcha. Thanks for your response.

I'm using Slack & Riot ... and from my point of view Slack has many of the same issues that riot has as well (performance, room switching, etc).

I agree the UX is not as intuitive as on slack, but I'm sure the get there.

One thing that I did not ever find out in the UX is how to change own presence and how to get the others presence (it's always offline).

Not sure if it's still true, but I read a while ago that the matrix homeserver has presence turned off due to load.

this is still true on the matrix.org server, sadly.

ok thanks for clarifying. I thought "matrix homeserver" people always refer the own synapse install.... but matrix homeserver is matrix.org ;-) so it makes sense. thanks

Another problem I've seen quite often in regards to Riot performance is that viewing large images in an E2E room results in massive lag within Firefox (on Linux at least).

Presumably it's because you're decrypting a 5MB image in JS, but it seems a little bit odd that the entire browser effectively locks up as long as the image is visible.

It's not the end of the world for me, but it is fairly frustrating (the people I talk to use the Android app and don't have this problem, leading).

Keep up the great work Arathorn (and the rest of the folks working on Matrix/Riot)! I've been donating quite a bit to the Matrix project ever since you started accepting funds, and I don't regret it one bit.

IIRC I think I remember him saying in a room that this bug had been fixed in the develop branch :)

Yup, it's already fixed on riot.im/develop - as per https://github.com/matrix-org/matrix-react-sdk/pull/1864

The only thing that holds back my personal slack groups from moving to Riot is Slacks under message reactions (especially the custom ones).

I did see there was an issue opened for it on github, but can't seem to find it now.

https://github.com/vector-im/riot-web/issues/1357 is the issue and we want to get it done asap, but performance and polish (as per the OP) has to take priority.

I'd like to help as well. Is there a way to contact you?

You can find me in #matrix:matrix.org or any of the public rooms about Matrix :)

Are chunks / hot path improvements going to help with the forward_extremities problem? https://github.com/matrix-org/synapse/issues/1760

Yup. The hot path speedups for state resolution should make things go faster when you do have a fragmented graph (ie lots of extremities) - in the best case O(1) rather than guaranteed O(N). And then the chunking should reduce the number of extremities which build up over time anyway.

Thank you for fighting the good fight!

Please initiate creation of a plugin for Pidgin... (it feels most of the issues would be easier to solve that way as well)

> once we get past the mythical man month stage

Oh dear.

> Another huge issue is how painfully slow the client is. Simple tasks like switching between groups takes up to a second

Guess the author hasn't used Slack lately...

I run both Slack (for work) and Riot (for personal, on the matrix.org server) and while I don't use Riot as much as Slack, I really love it. I think the UI is great. I am fairly used to IRC though, and I think that's where Riot gets a lot of its DNA from, so maybe I'm just used to that setup.

For the project being open source, and for the short time it has been alive, it has come so incredibly far. I can't wait to see what else they do.

> This has improved a lot since a year ago but there still needs to be a massive change in the UI design to make it comparable to the competition.

I agree whole-heartedly with this. I am not entirely sure who decided on Riot's garish green UI filled with circles and non-standard UI controls and wildly variable padding/spacing and communities bar that takes up space even when not joined to any communities, but it looks a mess.

If you look at Slack, Microsoft Teams etc, they are consistent, they are clean and they look like they have been designed by professionals. Riot doesn't - yet - and I can quite understand that putting people off, given that there aren't many other Matrix clients for the average user.

You're always welcome to change the garish green in settings, and likewise hide the communities bar (although we expect communities to be used more and more in future, just as they are in Slack and Discord etc).

Meanwhile, the upcoming redesign pretty much removes the green and the circles anyway :)

Where can one sneak a peak of the redesign?

We'll do a blogpost shortly to show where it's at and gather feedback :)

Can't wait to see the new redesign. Hopefully it takes some hints from the host platform - it'd be great to have Riot feeling more at home on macOS!

We don't have any plans to make a separate desktop app from Riot beyond the Electron one. Instead we're hoping that someone will write a proper native MacOS matrix client, which will be a much closer fit. https://matrix.org/docs/projects/client/matrixclient.html is the closest I know of there, but someone needs to pick it up and finish it off :)

Is this the position for all platforms?

Probably a "quick and easy" way to fix this would be to just rely on Google's Material Design resources and tools, which I think are generally liked by most people.

This may be an alternative:


please not another MD app! the amount of wasted space is ridiculous!

I agree with you. But! If screen real estate is a priority to you, you may want to use something compact like weechat-matrix anyway, and let those with spare space have their mostly empty UI. It's really refreshing to finally have an open protocol with free client choice.

Agreed. The negative space is nice looking, but efficient use of space wins in the long term.

After seeing a post on HN about Matrix a few weeks ago, I decided to see about setting up a home server on the headless Ubuntu box in my closet. All in all, it was pretty painless. The one thing I couldn't figure out was the built-in audio/video calling functionality, although the Jitsi videoconferencing widget did work (once my dad I managed to find all 20 of the volume knobs throughout the OS that need to be unmuted to have both the speakers and microphone working on both ends).

I Tried to use Riot.im with a friend of mine, who's also a hacker and we couldn't figure out how to create a room for us to chat. We're probably too dumb for this.

Bottom left; click the little person icon. A modal pops up asking you to enter the user ID of the person you wish to chat with.

There are valid complaints to be made about Riot's UI, but I really don't think that's one of them.

We did that many times, but nothing appeared on each other's screen, it seemed as if the IDs were being sent to /dev/null.

What confused me about Riot when I tried it was that when I picked a friend to chat, it created some kind of new room instead of.. not sure how to call it, a P2P chat? Like it's on slack or other services. For eg. I could remove messages but my friend couldn't which makes it weird (I'm an admin in a P2P conversation?)

It seems Matrix really blurs the lines between a direct chat and group chat, it's one of the things I would like to be clearer.

For example, when you start a direct chat, it's realy just a group chat with 2 people. If you invite another person (or even just an integration like giphy search!), the UI stops listing it under the other user as a direct chat and it seems indistinguishable from a chat room. Even removing the extra user seems to not get it classified again as a direct chat.

If Matrix people are reading this - it would be great to have better distinction between direct and group. And it would be nice if integrations could somehow not break that illusion. And perhaps a warning if adding an integration / user will irreversibly make a chat a group chat.

Yes! This is (one of the many things) addressed in the redesign. Also found it confusing, but don't worry, it will be fixed :)

Can't wait to share some of the new designs with everyone!

If anyone has other suggestions or frustrations, send them to me - contacts are in my description.

I'm the guy working on a major UI/UX redesign for Matrix/Riot that Matthew mentioned above.

the closer we could get to the realchat interface from 2003 / 2007 - I'd love to see it. ( http://weblog.globaladvancedmedia.com/2018/realchat-backend-... )

rooms, pms, all kinds of options, modern design in a layout that worked even at 1/4 monitor screen fine.

Of course it did not work on mobile - so it didn't have to think about how that would re-arrange and look. However it is clean and intuitive for many I think.

The backend options for changing colors and making / trading entire themes was decent as well.

This is the sole reason we're not using Matrix/Riot yet. https://github.com/vector-im/riot-web/issues/4488

One thing I discovered when introducing other people to Riot.im and that even confused myself was the sign-up procedure. You think you are signing up but instead you are trying to sign in.

Other than that I am happy with Riot.im.

Is multi-account support being actively worked on for Riot? So (as a use case) I can be signed in to my personal matrix.org account and my (work) private HS account at the same time?

If not I was planning on taking a look at it myself despite my JS being rusty and have never done anything with Electron before but I haven't had time to go through the code and see how much of it is designed being built around just a single user account. I remember the old Matrix Console app for Android had multiple account support.

It's not actively happening right now but it's on the roadmap.

What’s wrong with multiple tabs in a browser?

Even more resource usage and doesn't work on mobile.

Being in a browser.

I would've liked a better segregation of how it was a year ago and how it is now, along with some kind of bullet list showing the salient points that the author wants to highlight.

I've tried Riot briefly, and am very much interested to see such a decentralized solution becoming mature. I really can't wait for it to become something that can be "sold" to people who aren't into technology but care about the user experience and ease of use.

For 1-to-1 chat, XMPP seems way better suited. However, Matrix feels like a really nice IRC successor. I hope both can live in a somewhat symbiotic relationship.

Yeah, that's their plan, I think. Bridges to other services instead of 'walled gardens' https://fosdem.org/2018/schedule/event/matrix/

What makes XMPP "better suited" for 1-on-1 chats? I use both XMPP and Matrix for both 1-on-1 and group chats and found neither lacking in any case.

What I meant is rather "chatting with friends and family, Facebook style", as opposed to "chatting in organized teams and groups, Slack style".

What Matrix offers differently from Jabber?

- Jabber has definable custom xml schemas where you can also define your own protocol on top of it for media exchange, voip and etc.

- Also, it is pretty decentralized.

In the current incantation jabber also has performance advantages, having a server implemented in low level language and all the existing jabber clients around.

EDIT: Keep in mind I am not criticizing Matrix, I just found it to have a staggering amount of features similar to Jabber, which is "kinda" used but sadly didn't quite fly like other not-foss alternatives like Telegram/Whatsapp. We all really need a good decentralized and open IM protocol.

One thing I noticed when I tried it out a year or so ago was the high data usage on mobile devices even when messages weren't being sent or received.

I had set up our own Synapse server but the high data usage, quirky 1-1 vs rooms chats, etc. made it tough for me to adopt fully.

I do hope to use it in the future though as I really like the concept but it wasn't quite there for me yet.

really excited about this. Just need a way to give some users moderator powers to click to see ip addys of other users when issues arise - and the power to ban them by ip, subnet, as, cidr, hostname. (and any other options)

One troll with a couple of VPNs and wow, the damage that can be done is something else.

Would hooking https://access.watch/ into a home server or something like it make any sense / make it easier / faster to roll something like this out?

Can't wait to get into this more, so many possibilities.

I am right in thinking that having a home server that does not connect to the main rooms on the main matrix server would save 80% of the ram and much of the lag?

Off topic, but I love the simple & clean design of this site/blog. I think I'll borrow it for my personal blog.

Did some homework, looks like it was built using Hugo: https://gohugo.io

Is there interop with existing chat server protocols? I would think this is hard to achieve but I figured it would be worth the question

Yep, you can bridge Matrix with a lot of stuff.


Applications are open for YC Summer 2020

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact