Matrix – An open network for secure, decentralized communication
matrix.org
matrix.org
Some of the stuff I’m personally most excited about right now is Hydrogen (https://github.com/vector-im/hydrogen-web): a super lightweight web client which heavily leans on indexeddb for storage and so minimises RAM. My primary account has 3000 rooms and about 450K visible users - on element-web this uses 1.1GB of RAM, but on hydrogen it uses 14MB :) We’re also looking at glueing E2EE into Hydrogen via the crypto layer of matrix-rust-sdk, which could be a massive win in terms of reusing and auditing a robust safe implementation for the Hard problem of encryption, rather than implementing it from scratch every time in every new client.
Dendrite (go server impl) progress is also very promising - we’ve been focusing on it (at last!) since the beginning of the year, and going to enter beta in the next few weeks. A typical small/medium live server is currently using 57MB of RAM (rather than synapse’s ~500MB). We haven’t started optimising yet :)
Synapse has also finally come of age - the whole codebase has almost been switched to twisted/asyncio rather than twisted deferreds, which both speeds things up a bit but also gives us way better visibility on profiling for future perf work. Almost all bits now scale horizontally (apart from the master dispatcher process). Synapse isn’t going away - we see Synapse and Dendrite coexisting much as Apache and nginx coexist today.
Conduit is also super exciting as an entirely community developed Rust homeserver, which currently runs ~10x faster than either Synapse or Dendrite (but doesn’t federate yet, or scale horizontally). It’s really fun to see an indie FOSS server implementation properly take off :)
Finally, P2P Matrix is coming together well - compiling Dendrite to WASM and running it clientside, using Yggdrasil currently as an overlay network to tunnel through to other P2P nodes.
In short: the Matrix ecosystem is in a fairly healthy place right now - the next gen of clients and servers should be incredible :)
On dendrite: What's your impression of friction needed to migrate an existing synapse home server to dendrite? Would bridges like the mautrix family be API compatible or would they have to add additional support for dendrite? And how far away would you say you feel it is until dendrite is stable and ready for individuals as personal production server?
Not looking for dates, just a feeling for how worth it is to invest getting deeper into synapse if one intends to migrate to dendrite eventually.
So example.com could be synapse and elsewhere.com could be dendrite, and she would automagically replicate her account over between the two. If she turned off example.com, she’d have migrated over.
This is scifi right now, but it’s getting closer, as P2P isn’t very usable if you can’t sync your account across multiple devices/nodes.
Alternatively someone could write a script to migrate synapse’s db into dendrite’s schema (or dendrite’s kafka logs), but it’s be pretty fragile given how rapidly both synapse and dendrite evolve.
tl;dr: jump in with Synapse today - the water’s great (even if others have been scalded in the past). Migration to Dendrite or Conduit or whatever in future should be transparent, one way or another.
I want to run my own homeserver, but I've already got an account on matrix.org and would rather avoid losing my contacts + rooms if possible.
Many thanks, both for this and for your work on Matrix.
There's a comprehensive tutorial[1] on how to connect to Freenode via Matrix. Gitter ⇔ Matrix bridge is pretty good too, since Gitter is pretty horrendous on web and especially mobile.
[0] https://matrix.org/bridges/
[1] https://github.com/matrix-org/matrix-appservice-irc/wiki/Gui...
Matrix 1.0 and the Matrix.org Foundation https://news.ycombinator.com/item?id=20157809
Matrix 1.0 – Are We Ready Yet? https://news.ycombinator.com/item?id=19416678
Synchronous Messaging at Mozilla: The Decision https://news.ycombinator.com/item?id=21835749
Automattic invests in Matrix https://news.ycombinator.com/item?id=23256050
Cross-signing and end-to-end encryption by default https://news.ycombinator.com/item?id=23107564
Running your own secure communication service with Matrix and Jitsi https://news.ycombinator.com/item?id=22802645
We’ve decided to rename Riot https://news.ycombinator.com/item?id=23611863
[0] I don't think it's an efficient, non-distracting or just desirable means of communication.
[1] https://briar.app.
And Linux, as well--including the Librem 5 phone[0].
>no media
The media attachments feature was in alpha nine months ago[1]. I guess they are still working on it.
[0]: https://nico.dorfbrunnen.eu/posts/2020/briar-alpha/.
[1]: https://code.briarproject.org/briar/briar/-/issues/1669.
I think the point is more that in e.g. the US, nearly half the population has an iPhone [1], so a chat service that is only available on Android and Linux can't spread as much.
[1]: https://www.counterpointresearch.com/us-market-smartphone-sh...
Oh, no, I was absolutely aware that he was referring to the Android-iPhone pairing, as in "it's Android-only as opposed to available on both Android and iOS, as every major messaging app"; I just wanted to specify that it is not only available on Android, but also on Linux (PC and phones--I guess you can use it on the Pinephone, too, besides the Librem 5).
I acknowledge that this isn't an option for everyone but for the HN crowd, it's fairly easy to run your own homeserver. You just need to install Synapse [0] (which has a convenient Docker image [1]) and give your server a domain name.
If you do this, your metadata will only be accessible to yourself and the homeservers of your contacts (who could share your server or run their own).
Message contents are usually e2e encrypted, so the homeserver you use is irrelevant.
I should be able to spin up a client or server in python, JavaScript, rust, c, etc with minimal effort.
https://matrix.org/sdks/ https://github.com/ara4n/random/blob/master/bashtrix.sh
I can spin up a web server in python, Ruby, JavaScript, etc in a couple lines of code. With matrix I need to install java and then do a whole bunch of config.
My belief is that as long as that hurdle remains, it won’t hit widespread adoption, even if the technology is great.
Personally, I really like it, and have used Riot For a couple years now. I’d love to use it for our company, but it’s not yet there for ease of use on the server side.
I think it will get there, it’s just not there now.
As of a few months ago, the list is: Element Web (via matrix-js-sdk), Element iOS (via matrix-ios-sdk), Element Android (via matrix-android-sdk2), the old Riot Android app (via matrix-android-sdk), weechat-matrix (via matrix-nio), weechat-matrix-rs (via matrix-rust-sdk), Mirage (via matrix-nio), Nheko (via mtx-client), gomuks (via mautrix), Seaglass (via matrix-ios-sdk), OCRCC Chatbox (via matrix-js-sdk), FluffyChat Flutter, Daydream via matrix-rust-sdk, etc.
There’s also pantalaimon (built on matrix-nio, and in future matrix-rust-sdk), which lets any Matrix client talk e2ee.
Hydrogen (github.com/vector-im/element-web) is also about to sprout e2ee via matrix-rust-sdk.
I find this accusation quite offensive. I was under the impression that the standard here was to assume good faith. Please retract this statement.
> Element Web (via matrix-js-sdk), Element iOS (via matrix-ios-sdk), Element Android (via matrix-android-sdk2), the old Riot Android app (via matrix-android-sdk)
If anything counting all of these as separate implementations is the disingenuous thing here.
Admittedly though it seems that my knowledge on the topic was quite outdated. Glad to see that it improved in that front.
I would expect at least the project lead to follow it. Kinda sad to see the state of the Matrix community regarding hostility and hypocrisy.
How many of the apps you listed in second paragraph spawn E2EE chat by default?
How many of the apps warn about E2EE not being enabled when joining a room?
How many of the apps warn when E2EE is broken by e.g. IRC-bridge-bots?
I haven’t checked to see which of those apps spawns E2EE chat by default. Element does, and I’d assume the other client devs are following suit; there’s no reason not to. Likewise, i haven’t surveyed to see what UI they use to warn for unencrypted rooms.
We’re currently working on an MSC to better advertise what bots/bridges exist in a room so you can track whether any is likely to be leaking your conversation to an unencrypted system. This is inevitably going to be on a best effort basis though.
But does not warn regarding unverified seasons and will gladly send messages to them by default.
weechat-matrix: https://github.com/poljar/weechat-matrix/issues/188 (doesn't support cross-signing)
weechat-matrix-rs: https://github.com/poljar/weechat-matrix-rs/tree/9c249f14038... (build failing, would be surprised if it supported cross-signing)
Mirage: https://github.com/mirukana/mirage/issues/32 (no support for cross-signing)
Nheko: https://github.com/Nheko-Reborn/nheko/issues/70 (automatically accepts keys as far as I understand)
gomuks: https://github.com/tulir/gomuks/pull/154 (seems to be the only mention of encryption, I don't see verification of keys or cross-signing)
Seaglass: https://github.com/neilalexander/seaglass/tree/dc97893343407... (seems to support e2e, but unfortunately macOS only)
OCRCC Chatbox: https://github.com/nomadic-labs/ocrcc-chatbox (404, couldn't find it)
FluffyChat Flutter: https://gitlab.com/ChristianPauly/fluffychat-flutter/-/tree/... (might support cross-signing, first client that I could actually use) Daydream: https://github.com/daydream-mx/Daydream/issues/11 (sounds to me like there's still some way to go)
Can you please not say that it's "completely untrue and disingenuous"? To me, working end-to-end encryption means that I can verify my own and other devices. Out of these, maybe Seaglass (macOS only) and FluffyChat Flutter support end-to-encryption in a way that I would use them. That's not "loads of Matrix implementations".
Can you recommend a non-official client with end-to-end support including cross-signing and device verification?
XMPP is a message passing protocol at its core, more like SMTP. MUCs have a single logical focal point of control.
Everything at Uber was HTTP and JSON and all it did was slow things down and cause more bug surface area.
However, Matrix isn’t tied to any single transport - you are encouraged to use more efficient or exotic ones, eg https://matrix.org/blog/2019/03/12/breaking-the-100-bps-barr...
Step 2: Create account
Step 3: Enter username, password and email address
Step 4: Click confirmation email
Step 5: Log in
Step 6: Share your username with others
What aspect of this is hard to use?
There's also another pair of decentralized systems you might be familiar with: email and the world-wide web. Do you think these are hard to use?
As for your final quip. Gmail and Facebook flourish because those protocols are hard to use. No I don’t find them hard to use, email was my last job, web dev is my current job. It isn’t everyone’s skill set though.
I appreciate the attempt to make me out as a simpleton but mate, a chat system isn’t worth the servers it runs on if there’s nobody to talk to
As a bonus, it helps to support the devs too.
I totally agree that more people should look into managed hosting, though.
In other words, it’s critical that folks use the managed hosting in order to be sustainable, otherwise we’re just burning fossil fuel, as it were.
In any case, I would be surprised that Element relies on getting significant part of their revenue from the SaaS. Isn't p2p-matrix going to cannibalize that market? I could swear that the strategy for you would be to chase the enterprise/government market and let p2p-matrix as an alternative for network effects and/or those who don't want to pay and prefer to manage things themselves.
So we expect revenue from SaaS, where plain TCO says it’s cheaper to get us to host your data than pay in-house people to sysadmin it for you. It’s still your DNS and your keys, and we provide db snapshots if you want, so it really is just outsourced hosting. There is definitely a market for this, as well as separately providing support for massive on premise deployments.
P2P then drives both by network effects. It effectively becomes the default free-for-all platform - but anyone who actually wants a serious home for their data (e.g. any business) will want to find a server, whether that’s selfhost or SaaS.
I'm especially curious about the effects individually and in aggregate; I.E. if everyone did what I do.
Donations go to the Matrix.org Foundation and help pay for core team dev, but also are really useful for pointing bigger donors at to say “look, we get $4K/month on Patreon + Liberapay etc; this shows we are a good project to back; how about you match it?”
Buying hosting from Element however also funnels back to fund core Matrix dev - because almost all of Element’s work is donated (unilaterally, in an asset lock) to the Matrix.org Foundation. In other words, anything an Element employee commits into https://github.com/matrix-org automatically becomes the copyright assigned to the Foundation. This also has the separate multiplying factor that the more evidence there is to run a sustainable SaaS business on Matrix, the easier it is for Element to raise funds and keep going - and thus continue to support the core Matrix dev.
Sorry it’s so complicated, but funding FOSS is fiddly (as Mozilla demonstrates...)
P.S. thank you for donating!!
If the development of Matrix is somewhat secured and if Matthew and the team has already been compensated for their work, I'd rather support other players than concentrating it further on Matthew's hands.
That said, folks should absolutely donate to non-core-team Matrix projects like Conduit or Nheko or Dimension etc too, to support the hetrogenity of the ecosystem and keep it healthy and balanced. And once Element is sustainable (and by extension the Matrix.org Foundation funding is stable), the balance should shift even further towards ensuring the rest of the ecosystem is successful.
(Dendrite is also not inherently multiprocess - you can run it either in monolith or polylith mode).
I think it is fair to say that Synapse is more than production ready. Admittedly it can be hard to admin out of the box for smaller scale instances and we intend to improve on that experience over the coming months. Alternatively, hosting options are available[3].
After a hiatus, Dendrite is under active development and making rapid progress. It is an alpha release at the moment and not yet ready for production settings, but a beta release is coming soon.
[1] https://matrix.org/blog/2018/04/26/matrix-and-riot-confirmed... [2] https://sifted.eu/articles/element-germany-deal/ [3] https://matrix.org/hosting/
But i dont need to federate and use it more as Slack and it just keeps getting better.
I strongly suspect you’re thinking of a separate issue: the need to automatically expire old history and reclaim disk space in general, which was fixed a while back, as per https://github.com/matrix-org/synapse/blob/master/docs/messa...
I used to have more complaints about matrix clients, especially on Android, but things got much better recently.
Describing their practices as sophomoric may be giving them too much credit.
It's very embarrassing for sure, but tons of huge private corporations have been breached through worse mistakes than this. Making their Jenkins public was probably the worst decision. They explain why they did it, and it's not unreasonable (radical openness and transparency, basically), but they should've thought it through more.
In any case, this kind of posts is a reminder to stay alert and think critically; otherwise, we would believe many instances of misinformation without giving them a second thought. And we cannot expect others to downvote comments to oblivion or moderate them: it's something we ourselves have to be responsible for.
However, we have no reason to believe there was a link to the April incident.
However, the matrix.org security breach in Apr 2019 was unrelated to him, as far as we know.