Hacker News new | past | comments | ask | show | jobs | submit login
A Quick Overview of Matrix (juliette.page)
44 points by julietteeb on July 3, 2023 | hide | past | favorite | 46 comments

I recommend to have a look at the "Matrix 2.0" presentation that happened at FOSDEM 2023 in February: https://fosdem.org/2023/schedule/event/matrix20/

Does anyone else find it funny that the flagship SDK (JS) is largely undocumented? And that the UX of all clients in existence leaves a lot to be desired (yes, Element X is the best one but it lacks features for now)?

Matrix is annoyingly hard to get into, IMO. It has gotten better in the last years, but it isn't exactly good yet. It hurts because I want it to be good so that everyone can switch.

I plan to talk about this with the Element developers at CCCamp.

It's probably fair to say that matrix-rust-sdk is the flagship now, not matrix-js-sdk. Yes, js-sdk's doc isn't exhaustive, but http://matrix-org.github.io/matrix-js-sdk/stable/ and guides like https://matrix.org/docs/legacy/usage-of-the-matrix-js-sdk/ tend to be pretty good.

In terms of "Matrix sucks because not all clients have good UX" - you could say the same about the Web. Meanwhile Element X kicks ass, and is rapidly coming up to feature parity - to the extent that we're going to soft-launch it on the App Store tomorrow.

> I plan to talk about this with the Element developers at CCCamp.

No need; we have the message loud and clear... :|

> No need; we have the message loud and clear... :|

Almost all communications suggest that you don't, including this message. For years, whenever I'd mention the UX issues I encountered I'd get responses along the lines of "yeah but we're working on XY which will be amazing". Ever since the Riot days the Element (web) client has barely improved its core UX (I'm excited for the 10 year anniversary of the multi-account issue).

> "Matrix sucks because not all clients have good UX"

You may have misunderstood; I'm saying "not a single client has good UX". This is a very personal thing of course, but for me it means that Matrix is barely usable (my favourites are Element X and Hydrogen, but neither is feature complete).

The Matrix 2.0 talk & accompanying efforts are very exciting to me, though. Element X is phenomenal (the first client I actually enjoy using) and the main thing that got me back into caring about Matrix.

The whole reason I'm back here complaining is that I have hope again that one day Matrix can be pleasant to use and I want to help making it happen. I want Matrix to be amazing so that I can tell people to use it without getting laughed at.

> It's probably fair to say that matrix-rust-sdk is the flagship now, not matrix-js-sdk.

I have heard about this (great technical choice, btw!) from side-channels like conference talks, but the official matrix website still shows it as one of multiple libraries in beta and the JS SDK as stable. Using it on the web seems unsupported (the WASM bindings are only for the crypto module). On a Matrix live episode I had (I think) heard hints at the JS SDK eventually becoming a front for the Rust one, so I figured I'd go with that.

Well, as a sibling comment points out, the documentation page very prominently states that it shouldn't be used. And where does the link to the updated documentation go? Of course, a tutorial for registering a Matrix account.

The reason I'm (hopefully productively!) complaining is that I'm emotionally invested again. I want Matrix to be good and I'd like to somehow help making it happen. For now this probably means getting together with interested people at Camp.

> JS SDK as stable

To play Devil's advocate, the documentation for the JS SDK was exponentially worse quite a while back. So much so that, in some cases, you'd have to view the actual implementation code to understand how to use it.

This was made even worse by incomplete TSDoc which didn't cover the entire API surface, meaning using the SDK in TypeScript was a matter of casting the client to `any`, checking the implementation to see what a certain method required, understanding how the method worked with no documentation whatsoever, and using it without any editor suggestions etc. to help you. (yep, long sentence)

Not sure if it's still as bad but wow, that was one of the worst JS libs I've come across in a while. Despite its shortcomings as a platform, the Discord ones were a lot more comfortable to use (Eris, Discord.js), as they had actual documentation.

I'll finish up by saying I hope they've learned that developer experience is very important for such a platform. Look at Discord; bots were one of the things that put them where they are today. Being able to programmatically integrate into a platform is crucial to its success as, without it, you have something nobody knows how to actually use and integrate with.

The 2nd link you posted has a large red disclaimer stating the documentation is outdated. Does this mean it shouldn't be used ...? If so, why did you link it here?

That's better, definitely -- though personally I would feel a bit discouraged if I'm looking at a library and the documentation calls itself outdated :-P

This comment could be read as "Element X solves the major UX issues and we're on top of things", in which case no, the message did not get through.

Pull requests welcome.

We have a few pending already (some for a couple of years since last follow-up) and Arathorn saying "don't come talk to us about it" doesn't inspire confidence _at all_.

I'm not going to be at CCCamp. I'm sure the folks who do make it would love to discuss your PRs; I'm sorry if they've ended up getting stuck in review.

The point I was making earlier that I am not in a huge rush to talk to someone who is focused on enumerating a whole bunch of complaints at me, issues which I am PAINFULLY aware of already. Managing a FOSS project is miserable at the best of times, and I'd rather focus on fixing the issues (e.g. solving UX hell by shipping Element X) than being berated about how shit we are and how much better we could be.

I think both Matrix protocol and Element are some of my favourite pieces of software of all time. Use both every day and love every moment.

As with anything software-related, yes, it can always be better, but neither Matrix nor Element are shit. Fucking love them.

> Managing a FOSS project is miserable at the best of times, and I'd rather focus on fixing the issues (e.g. solving UX hell by shipping Element X) than being berated about how shit we are and how much better we could be.

This is not what I mean to do at all. I am sorry if/that it feels like that. I don't want to berate you, I want to contribute to Matrix. We are of course better off with it than without it - that's the whole reason people care to invest the energy to complain. If it wasn't a project worth caring about, they'd just direct their energy somewhere else.

I really want to help out. My hope voicing my pain points was (besides trying to get them prioritized up) to get information on how to work around and help fix them. Maybe I will be more successful in #matrix.

> I am not in a huge rush to talk to someone who is focused on enumerating a whole bunch of complaints at me

Please consider talking to someone who is bursting with excitement to dedicate time and energy to Matrix.

Thank you for staying engaged. Matrix 2.0!

+1 on all of the above.

I'll be at camp as well and happy to meet up. Contact link in bio.

Man it's the worst to get into. I've been reading about it for at least a few years now and Ive wanted in, have tried to get in a few times...but where the hell are the simple tutes to do so? Where's the paid youtubers holding my hand through this? Don't get me wrong I want decentralised self controlled Comms. But I don't want another degree to set it up or manage it or get my friends hosting it, I already did that for mikrotik n routing.

Matrix has been a train wreck of a protocol deployment from a pleb consumer pov.

One of the really nice features of Matrix is the IRC bridge to Libera Chat. Libera Chat is the current home of open source projects' community and support channels.

Earlier it was necessary to set up an IRC bouncer if you needed a persistent connection to the IRC server. But now you can just create an account on Matrix and join a Libera IRC channel from Matrix. The Matrix bridge functions like an IRC gateway on Matrix. It's a great way to stay logged into the IRC channels and ensure that you don't miss any messages when you are away.

Sadly, I think Matrix's bridge onto Libera might soon be curtailed - they've not been good neighbors for some time and it's eroding the usability of IRC for IRC natives. https://libera.chat/news/matrix-irc-bridge-updates

On the Matrix side, we've put a lot of effort into being good neighbours, fwiw - e.g. recently this massive refactor at https://github.com/matrix-org/matrix-appservice-irc/pull/166... to allow the matrix<->irc bridge to be restarted without reconnecting all its IRC users (the single biggest complaint we ever had about the bridge in terms of eroding usability of IRC for IRC natives).

Sadly it looks like it wasn't considered sufficient, based on https://libera.chat/news/matrix-deportalling.

I'm not sure how many years you have been bridging in but with recent developments like Matrix logging all chats (including a second bot after the first one was banned) it sounds like too little too late.

Matrix does not "log all chats". There were some IRC channels which had been explicitly configured by their chanops in the past to be "world readable" in Matrix parlance (i.e. opting into being publicly viewable), which meant that they showed up on archive.matrix.org.

It seems this caused concern because archive.matrix.org didn't have UI to explain why a given channel was visible (i.e. "chanop Bob explicitly set this channel to be world-readable on the Matrix bridge on Jan 1 2017") - and so after we got complaints from ircops last weekend we immediately took the service down to double-check and add the UI to spell out what's going on (and give the IRC channels & networks in question a chance to mark themselves as non-world-readable if that's what they want).

As I said, we're trying to be good neighbours, but there's a lot of ill will flying around.

For the sake of completeness, https://matrix.org/blog/2023/07/what-happened-with-the-archi... writes up the confusion over archive.matrix.org.

Sounds like an overkill bouncer. I use the one of SourceHut, it just works.

All my server back-ends send me alerts and logs via matrix, which I can check easily from any device, including my phone :)


I'm like you @aaviator42! :-)

I've been using matrix for chat since it first came out...and then stumbled upon using it as my system notifications tool...it was one of those "duh!" use-case moments for me. So by using matrix, there's one less app/client i have to use for notifications; all human-to-human chats go into relevant rooms, and system notifications go into dedicated "notifications" room(s). Matrix is truly so versatile!

Now that i see that yours uses PHP, i can share with friends and colleagues who have the same idea as you and I, but prefer leveraging PHP on their infrastructure. My code happens to use python [0]...but the beauty of all of this is that - with open source - users get to choose their preference! Kudos to you!

[0] = https://github.com/mxuribe/howler

Hi! Nice to meet my counterpart from another universe! So many similarities between our READMEs! :)

I agree, FOSS is such a beautiful concept, that allows us to do cool stuff like this. :D

Kudos to you as well!

Likewise on all points!! :-D

Also, i hope you don't mind, i was so impressed with your app, that i am now pointing to it from my repo: https://github.com/mxuribe/howler#q-im-not-a-fan-of-python-a...

This is almost completely broken on non-GCF (Google Services) phones. I've seen message notifications arriving 12 hours (!!!) later.

For those users it's recommended to use Matrix clients alongside something like https://ntfy.sh/ , which sends push messages to your phone. However, one could then also ask: What is the need for Matrix in that case? I suppose end-to-end encryption would be one argument, but you could also encrypt message (contents) client side with something like GPG. So, I'm left wondering what really is the benefit of Matrix for those users.

The need is convenience, of course.

Are you really going to encrypt alerts your servers are sending you with GPG?

Super sensitive ones, yes. It's usually just a matter of copy and pasting the ciphertext into a GPG app and then see it get decrypted.

Other common and non-sensitive notifications (like "Hey there's an SSH login on this machine!") I don't encrypt since I see no reason to having them encrypted in the first place.

The "bridges" really work well if you can host your own and "puppeteer" your account. I only use Element on my phone now and all whatsapp messages come through without issues.

I am also spending some time hacking around some terminal matrix client. I don't have to worry about some corporation pulling the rug.

Does that mean I could set a bot to login to my account and post as me, all from the comfort of an IRC client? Any more deets?

I don't know if you can "puppeteer" a matrix account (that puppeteers a whatsapp account) from an IRC account/client.

The matrix TUI client I am using is iamb[1]. It's still early WIP, but usable.

[1]: https://github.com/ulyssa/iamb

I used IRC for 15 years, and then was quite into Matrix (and their bridging) for a while. I used Matrix for 2 years, until I realised that almost all of the channels I used were on IRC.

Moving back to IRC, I realised how heavy Matrix seems to be.

I understand IRC is very old and lacking a few features, but Matrix seems like a completely overkill solution. It seems so complex that the only way to write a third-party client is by using the official libs, and even that seems so hard that they keep suggesting that Element is the only good alternative (while acknowledging that it still has pretty big UX issues, after all those years).

Also I remember reading from one of the leads that performance was not their main concern. They would rather work on academic features than make sure the protocol is very efficient. That's a problem for me.

At this point I am not sure if Matrix can succeed...

I still wonder if I’m doing thing wrong, if so, please tell me.

For me, IRC just doesn’t work. I can’t receive messages when I’m offline. I can’t read what other wrote while i was offline. These for me are just plain red flags.

I also can’t search if somebody else asked the same question before.

There is no good mobile (iOS) app. I tried Palaver, it’s ok but every other chat app is much better.

Lastly, IRC is really hard to set up and log into. And I would call myself pretty tech savvy. This just eliminates it from ever becoming mainstream.

If the networks you are connecting to don't support persistence / chat history (most don't, because of the technical and legal complications), then you need to either setup a bouncer (pounce, Soju, ZNC), pay someone to host it for you (chat.sr.ht, IRCCloud), or find a free host you feel you can trust (plenty of results when googling "free IRC bouncer")

If you restrict yourself to features that IRC has, then there are lots of clients that are fine.

Also, Matrix Client-Server API is just HTTP calls, it isn't really that hard.

But using the SDK gives you things like encryption and other features.

I got Element on my desktop, Schildichat on my phone. Bridged to all other messengers I used. IRC is handled with Heisenbridge. Before this I used weechat+bitlbee. Matrix is better, more capable, but way heavier, on both the server side and client side. I even dabbled in XMPP but in the end just bridged it into Matrix as it's not much better by itself (though it also supports extensions and can connect to many IM networks). The clients are buggy, especially on Android, they overheat the phone for no reason (when in use. Notifications are handled via push so background usage is great). But XMPP wasn't better in any other way so Matrix remains my go-to solution.

I'm beginning to doubt whether Matrix can actually succeed. It's a great idea, and there are great people involved, but there's just so many different problems/features that it's still lacking. And the progress is painstakingly slow. I really want them to succeed and I still try to get everyone on board and evangelize all my clients to join Matrix – but the truth is, I'm loosing hope.

Example: About a year ago, "Threads" went out of Beta and the feature is pretty much still unusable, because Notifications get stuck all the time. Even though there was a lot of progress to fix this – it's still not up to par with other Messengers.

This is roughly my feeling too.

I've been running my own home server for a while now, and talked a friend or two into doing the same. We use it daily and it is "good enough" for us, but I'd never try to sell it to somebody that isn't already interested.

Notifications seem get a little better, then get a little worse again, and then the cycle repeats. Unless I've watched the system notification come in, I just ignore it. Definitely not perfect. I've also managed to get into a state where it'll notify me about messages from days ago that are marked as read, and never clear without a logout.

I was really excited about the possibility of third party clients, but in general, they all have some big missing features and/or show stopping bugs.

Agreed that the stuck notification problems with threads is a real embarrassment. However, I wouldn't give up on the whole project over one nasty class of bugs (which i am very hopeful we're close to nailing...)

Why not? One nasty class of bugs can make any project entirely unusable. In business it's all it takes to make me use your competitor over you.

As a dev you need to not fall into the trap of lumping users problems and faults off onto your own scale of what is or isn't important. This will ruin your business. You as the dev/on the inner circle have bias to what you think is or isn't important. If you disregard something as small but your users are like yea it's small but it's a major problem that makes the platform unusable your gonna drop users quicker than you can blink all the while asking yourself why?

Dangerous position, be wary of judging your clients problems importance on your own scale. Matrix will fail with that attitude. You won't focus on what your consumers want.

As I said, we're close to nailing the problem, and the element web team has literally been working on nothing else for weeks.

I have no clue why you think we're disregarding it; it drives me nuts too.

What about beeper.com?

Very quick.

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