News for hackers. Stuff that matters.
Re:Shutting down the Matrix bridge to Libera chat by immibis on Wednesday November 29, 2023 @08:13AM (#38458919)
Matrix, at this point, is effectively proprietary. It's fully controlled by one for-profit company (Element) and the blockchain protocol (yes, it uses a blockchain) is complicated enough to prevent independent reimplementations. And it doesn't even work that well.
Re:Shutting down the Matrix bridge to Libera chat by camgunz on Wednesday November 29, 2023 @09:00AM (#38459399)
Sorry I don't think anything you've written here is true:

> Matrix, at this point, is effectively proprietary.

Matrix is fully open [0] and fully spec'd by the MSCs [1], and stewarded by the Matrix Foundation [2].

> It's fully controlled by one for-profit company (Element).

2/5 people on the board work for Element [2].

> and the blockchain protocol (yes, it uses a blockchain)

It does not use a blockchain (there is no proof-of-anything). You might be confusing blockchains with Merkle Trees, but in that case you'd also have to think git is a blockchain.

> is complicated enough to prevent independent reimplementations

There are several independent client [3] and server [4] implementations.

> And it doesn't even work that well.

Maybe not, but it has pretty good adoption [5]

[0]: https://github.com/matrix-org

[1]: https://spec.matrix.org/

[2]: https://matrix.org/about/

[3]: https://en.wikipedia.org/wiki/Matrix_(protocol)#Clients

[4]: https://en.wikipedia.org/wiki/Matrix_(protocol)#Servers

[5]: https://en.wikipedia.org/wiki/Matrix_(protocol)#Adoption

Re:Shutting down the Matrix bridge to Libera chat by vilunov on Wednesday November 29, 2023 @07:28PM (#38467523)
> Matrix is fully open [0] and fully spec'd by the MSCs [1], and stewarded by the Matrix Foundation [2].

Technically correct, but in practice the spec is complex enough that there are only 2 more or less working server implementations, both of them developed by the same org. I tried to implement it myself, but in comparison to IRC and XMPP it's just too complex. That's what "effectively" means.

> There are several independent client [3] and server [4] implementations.

Only one non-Element server is there is "Production ready", and it's dead. The website is down and the last commit is from 2021. There were many spec changes since then, including the infamous "sliding window sync", which is necessary for the next gen clients.

> It does not use a blockchain (there is no proof-of-anything). You might be confusing blockchains with Merkle Trees, but in that case you'd also have to think git is a blockchain.

They probably mean the DAG-like structure of rooms, which is a horror to implement, and even more horrifying to implement efficiently. It's a blockchain of sorts, with room events being linked to parent events.

> there is no proof-of-anything

It does not need to be "proof-of-anything" to be a blockchain, that's not why there are words "block" and "chain" are there. There is a consensus protocol between home servers, and it fails terribly, leading to room resets.

Re:Shutting down the Matrix bridge to Libera chat by camgunz on Thursday November 30, 2023 @05:29AM (#38471872)
> That's what "effectively" means.

Sometimes hard things are hard, and it turns out a distributed E2E messaging system is one of those things. Same goes for writing a fit-for-purpose C compiler. Doesn't make GCC or the C standard any less open.

> Only one non-Element server is there is "Production ready", and it's dead.

Yeah I think reasonably you're looking at Synapse, Dendrite, and Conduit -- all Element-written. I think the argument was "it's too hard to implement", but someone's done it three times, so it still seems like that's wrong.

> They probably mean the DAG-like structure of rooms, which is a horror to implement, and even more horrifying to implement efficiently.

Op used "blockchain" as a pejorative, which is why I was responding "if you think Merkle trees are blockchains (and I would argue you shouldn't), you think a lot of perfectly fine software is a blockchain." If the argument is that implementing a distributed database is hard, well yeah, it is.

> It does not need to be "proof-of-anything" to be a blockchain

Not strictly, but you need a way to suppress fraudulent chains. Blockchains are Merkle trees with the requirement that the deepest tree is authoritative. They attempt to ensure this by requiring proof-of-*, which makes the creation of a fraudulent tree very computationally intensive, and therefore unlikely to ever catch up to the "real" tree. Matrix has nothing like this.

> There is a consensus protocol between home servers, and it fails terribly, leading to room resets.

Yeah, I think probably a lot of this goes away w/ the switch to MLS. But not all of it, they chose AP out of CAP (correct IMO) so this is just gonna be the way it goes. Your other options are deal with the service being down while it becomes consistent--which would happen constantly--or welcome back IRCs netsplits.

Re:Shutting down the Matrix bridge to Libera chat by vilunov on Thursday November 30, 2023 @06:35AM (#38472266)
> distributed E2E messaging system

The thing is, customers don't necessarily want a distributed messaging system, they might be perfectly fine with a decentralized one if it supports E2EE. Matrix went the way they did and it's far from obvious whether it was a good choice. I'm leaning towards no.

> but someone's done it three times

You can do it however times you want and it will be easy to do if you have access to one of the few domain experts of the protocol. It can be considered easy to implement once someone else successfully implements it and continues to support it for a significant period of time. Rewriting one thing three times inside a single org is not something of interest.

> Blockchains are Merkle trees

This is getting offtopic, but anyway. Blockchains are DAGs, they are not necessarily trees. The canonical chain and candidate blocks have only one genesis block, and non-genesis blocks could have multiple parents (e.g. one main parent and orphaned uncles), which by traverse still converge to the same genesis block.

Although Merkle trees are used in the underlying block data structure, this is orthogonal to the blockchain concept and any data structure could be stored there.

> MLS

Unless I'm missing something about MLS, you're mixing unrelated stuff here.

Re:Shutting down the Matrix bridge to Libera chat by camgunz on Thursday November 30, 2023 @02:53PM (#38478245)
> The thing is, customers don't necessarily want a distributed messaging system, they might be perfectly fine with a decentralized one if it supports E2EE.

Maybe! You could argue that basically all the successful messaging systems except for email and IRC (if IRC still counts as successful) are centralized, so there's that.

> You can do it however times you want and it will be easy to do if you have access to one of the few domain experts of the protocol.

In fairness, I don't know how you implement a client/server for a protocol w/o being a domain expert in it. Try building an IRC server, an IMAP server, an ActivityPub server, etc. and remaining ignorant about the details about IRC, IMAP, ActivityPub, etc. This has felt like an odd benchmark to me this whole thread.

> Blockchains are DAGs, they are not necessarily trees.

Eh, I really think they're trees because they're Merkle trees. Each block contains the hash of the previous block, not some random other block as it would be if it were a graph. Even with uncle/orphan blocks, it's still a tree.

> Although Merkle trees are used in the underlying block data structure, this is orthogonal to the blockchain concept and any data structure could be stored there.

Definitely not, because the hashes prove the tree's correctness. You can verify any branch, which you want to do to ensure you're not getting scammed. The Merkle tree concept is essential to the verifiability of blockchains.

> Unless I'm missing something about MLS, you're mixing unrelated stuff here.

Sorry I was a little opaque. Matrix' handling of rooms is suboptimal for lots of reasons, but one is what you pointed out: they don't have great performance and thus desync a lot. MLS has a cool tree-based Ologn algorithm for fixing this. It's a process to get there [0], but I'm excited for when it happens.

[0]: https://arewemlsyet.com/

Re:Shutting down the Matrix bridge to Libera chat by jesopo on Wednesday November 29, 2023 @12:25PM (#38462212)
there's a lot of critiques to make of matrix's state synchronisation model but "blockchain!!!" is beyond facile
Re:Shutting down the Matrix bridge to Libera chat by immibis on Wednesday November 29, 2023 @12:27PM (#38462234)
If you actually read my comment, you'd know that I did make a critique, and your ""blockchain!!!"!!!" reply is beyond facile.
Re:Shutting down the Matrix bridge to Libera chat by joshsimmons on Wednesday November 29, 2023 @01:59PM (#38463602)
As the Managing Director of the Matrix.org Foundation it is expected that I conduct myself with some level of decorum.

So, exercising all due restraint, I say this: your statement is unmoored from reality. I thank @camgunz for chiming in and citing sources.

Re:Shutting down the Matrix bridge to Libera chat by Zetobal on Thursday November 30, 2023 @01:43AM (#38470450)
Ridiculous. You joined a mere 6 months ago you didn't have any say in the decisions you are trying to defend now. You aren't even defending them you are just babbling and more emberassing playing personal attacked while deflecting. Matrix is dying and element killed it. Good riddance. I knew the stories were too good to be true but turns out you are just as corp as every other hired gun. There is a reason why they put a community manager in charge of matrix.

Tell us why your spec trails your implementation for months so you basically make sure no one can develop competing server/clients.

Re:Shutting down the Matrix bridge to Libera chat by Arathorn on Thursday November 30, 2023 @04:51AM (#38471619)
I think your vitriol is better directed at me (as Matrix project lead & founder) rather than Josh, whose role as MD for the Foundation is to ensure it gathers $ and distributes it as effectively as possible to support Matrix. The original post here is written by Josh because he took over diplomatics with Libera to give it a fresh start as an independent, given the breakdown in trust on both sides.

In terms of Matrix dying, killed by Element: I’m afraid rumours of Matrix's death are highly exaggerated. And Element spends its life helping Matrix come to life rather than death, for better or worse.

The reason the spec trails the implementation for months is precisely the same reason that the formal HTML5 spec trails the implementations for years. It's not some grand conspiracy that Mozilla ships CSS Flexbox behind a vendor prefix for years (decades?) ahead of the feature being finalised in the spec. Instead: the point is that you get to play with the spec change in the wild, prove that it works, iterate on the design, and then eventually propose it for merge into the spec itself.

Personally, I think this is one of the bits of Matrix that we've got right. The spec process doesn't evolve as fast as it could, but that might well be a feature (just like it's a feature that HTML5 moves slowly too, but doesn't stop folks experimenting all over the place on it). https://spec.matrix.org/proposals/ explains the full process and the workflow, in case you want to understand it.

Re:Shutting down the Matrix bridge to Libera chat by Zetobal on Thursday November 30, 2023 @06:39AM (#38472296)
If your intention was to suffocate competition you got it right.
Re:Shutting down the Matrix bridge to Libera chat by Arathorn on Friday December 01, 2023 @02:45AM (#38484222)
If you're talking about Element switching its contributions to Synapse from Apache to AGPL, the rationale is that folks who want to commercialise Synapse will either have to a) opensource their changes, b) pay for an AGPL exception from Element, c) use a different server (e.g. Apache-licensed Conduit from https://conduit.rs) or d) write their own server.

This hardly feels like suffocating competition.