Especially interesting as they intend to support a matrix bridge: https://revolt.chat/roadmap#checkbox40. It seems like it would be easier to just use Matrix "natively" and then you also have a mostly-working Discord bridge for free.
Plus the likely value here is largely the client, so you can consider reusing, or at least building on top of an existing matrix server.
On the other hand, matrix was explicity designed with bridging in mind, and if this is designed to have a good matrix bridge natively, it'll probably work pretty well without having to stay up to date and without having to implement the full matrix spec.
But the point is: why? Why yet-another messaging protocol? If they wanted to have a different client (which I totally understand, given that Element client is currently just a poor mix of all of Slack and Whatsapp and Discord), they could just focus on the client.
> easier (...) to implement quite a large existing spec
They don't have to implement all of the spec themselves. Nothing stopping them to leverage the existing base libraries and SDKs to build the functionality for the client.
> or they just wanted to.
Well, ok, but when I see such a strong manifestation of NIH syndrome it really reflects poorly on the project.
I disagree, the use of MongoDB reflects poorly on the future of the project. In my opinion, a custom protocol does not. They intend for the app to be an alternative to a giant like Discord, so the protocol being custom leaves them with the freedom to introduce features Matrix didn't consider.
In opposition of NIH syndrome, using others work often locks you into the framework of their thinking, which can often be flawed. So to make improvements within the framework, you must think outside of it. Matrix might not be flawed, but it is purpose built for a specific task, a task that likely won't capture all possible use cases of this project. Perhaps it would be the right move to use in the beginning, but once the project matures it may become a limitation.
the specific task that matrix was built for is super generic: syncing encrypted blobs of json in realtime across a decentralised network. you can build pretty much any comms system on top of that; the question is more whether you want to write your own thing from top to bottom or build on an existing protocol. If you want decentralisation or e2ee for free, then Matrix is a nice way to get it. It doesn’t stop you layering other features on top - you just have to know what you’re building on.
Plus the likely value here is largely the client, so you can consider reusing, or at least building on top of an existing matrix server.