Edit: As some comments note, I previously wrote decentralized while meaning peer-to-peer.
Edit: As some comments note, I previously wrote decentralized while meaning peer-to-peer.
From the technology perspective I am quite happy with modern XMPP. There are just too few good (up-to-date) clients :-/
For the most part I use 'conversations' and while it is quite a good client for messages, it has no support for calls.
An instance running on a NAS or similar device at home to provide that backlog capability should do the job, no? I don't know if ring supports that, but the concept is simple and at least as old as bouncers for IRC.
XMPP also knows how to do P2P connections (that is what 'jingle' is actually about, not just calls), but I think that the problems of P2P are actually the reason why there are still so many problems with XMPP calls. I mean if you want to build P2P that 'just-works' you will need STUN/TURN servers and while XMPP servers like ejabberd bring them with a standard installation, TURN servers require a lot of ressources (bandwith). At the same time the others parts of a XMPP server are very lightweight so that the TURN server causes scaling issues.
For anyone interessted in the matter I highly recommend taking a look at the 'conversations' website (https://conversations.im/#optimizations).
Do you really think 99% people care enough to do this?
It could use some streamlining, e.g. get it into package managers for whatever distro is running on it, automatic pairing (multicast on the local network), maybe detection of compatible devices.
UX is basically a separate set of problems you have to solve on top of making it work technically.
- "Peer-to-peer" (Ring, Bleep/BittorentChat) and
- "Federated" (Email, Matrix, XMPP/Jabber)
...would be a better way to convey that distinction.
> Secure Connection Failed
> The connection to the server was reset while the page was loading.
> The page you are trying to view cannot be shown because the authenticity of the received data could not be verified.
Communication platforms provide more value when they have more users, while centralized synchronization services don't provide more value because they have more users. So it's fine for synchronization services to be centralized, while it's not fine for communication platforms to be centralized.
With a p2p model you have to tell every contact's client that you're away and provide any metadata that goes with that information to each individual contact.
To reiterate the away state is just an example off the top of my head, I don't know if this service supports status updates.
Most Matrix users use the matrix.org Synapse installation. If the people running matrix.org decided to stop working with other homeservers, the result would be much the same as what happened when Google and Facebook became less friendly to other XMPP servers and stopped interoperating with them. This is not an issue with Ring.
Meanwhile we're also working on supporting decentralised accounts in Matrix, so users can pick which set of servers they can use as a homeserver. This then gives the best of both worlds: a simple thinclient protocol that anyone can implement, and knowledge of precisely which servers and devices host your data.
Basically, Ring and Matrix have totally different architectures, and which you use probably depends on what you are optimising for :)
Is Ring the latter? The 'Discover' and 'FAQ' sections of the website don't seem to answer that question.
In practice, even DNS-based aliases are a better idea, given the tradeoffs.