Drawbacks of P2P and a defense of Signal
This is all a bit depressing, speaking as the project lead for Matrix.<p>1. It&#x27;s true that Synapse can use a lot of RAM.<p>- The biggest cause of this is due to spikes in RAM during state resolution (the merge resolution algorithm used to converge your server&#x27;s view of a room with the other servers in a room), which Python doesn&#x27;t always recover nicely.  We fixed the main cause of this in Synapse 1.26, which was released on Wednesday: <a href="https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;synapse&#x2F;issues&#x2F;8622" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;synapse&#x2F;issues&#x2F;8622</a> is interesting reading on the details.<p>- Another cause is that by default we cache a lot of data in RAM in order to avoid hammering the DB.  Currently you have to manually tune the size of that cache, which should be done automatically - we&#x27;re hoping to get to this shortly.<p>- The other main cause is that the resource requirements depends on the complexity of the rooms its users participate in, <i>not</i> the number of users on the server.  So a single user server can use serious RAM if that one user goes and joins a bunch of busy rooms with hundreds of thousands of users in them.  This can be surprising to sysadmins, and we haven&#x27;t figured out a good way of solving it other than just keeping making Synapse go faster.<p>- Finally, even though we&#x27;re continuing to polish Synapse hard, we&#x27;re also working on Dendrite, which uses roughly 5x less RAM than Synapse (thanks to relying on the DB for caching, using a smarter DB schema; passing all strings around as enums called NIDs, and Go&#x27;s GC being smarter than Python&#x27;s).  For instance, dendrite.matrix.org uses a relatively stable 480MB of RAM, despite being in thousands of rooms spanning tens of thousands of users.  It&#x27;s still beta, but progressing fast.<p>2. In terms of choosing a Matrix server: &quot;Well, you could just tell a person to use matrix.org. But then it spent a good portion of last year unable to federate with other popular nodes due to Synapse limitations.&quot; - yes, at the beginning of 2020 we hit a performance ceiling on Synapse on matrix.org which caused federation to fall behind during heavy traffic.  *So we fixed it*.  <a href="https:&#x2F;&#x2F;matrix.org&#x2F;blog&#x2F;2020&#x2F;11&#x2F;03&#x2F;how-we-fixed-synapses-scalability&#x2F;" rel="nofollow">https:&#x2F;&#x2F;matrix.org&#x2F;blog&#x2F;2020&#x2F;11&#x2F;03&#x2F;how-we-fixed-synapses-sca...</a> has the details.  Meanwhile, more and more other folks are spinning up reliable Matrix providing services.<p>3. In terms of &quot;Voice and video calling are not there yet in Matrix&quot;, again: we&#x27;ve been working our asses off to fix this. Since September we&#x27;ve had a dedicated fulltime VoIP team going through reworking 1:1 VoIP, implementing the work at <a href="https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-doc&#x2F;blob&#x2F;dbkr&#x2F;msc2746&#x2F;proposals&#x2F;2746-reliable-voip.md" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-doc&#x2F;blob&#x2F;dbkr&#x2F;msc2746&#x2F;p...</a>.  This has been landing over the last few weeks (although there&#x27;s still some stuff left), but it should already be noticeably more robust. Meanwhile, integration to Jitsi for video conferencing has also improved a bunch - we&#x27;re counting on it for running FOSDEM next weekend, after all.  In terms of NAT: yes, you have to correctly set up a TURN server.  We&#x27;re building <a href="https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;voip-tester" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;voip-tester</a> to help folks test that they&#x27;ve got it right.<p>4. &quot;Matrix is so hard to set up on a server that there is matrix-docker-ansible-deploy&quot;.  This is bogus, imo.  The ansible project is useful if you want to quickly run tonnes of bridges without understanding how to admin them, but for a typical Matrix server you should be able to `pip install matrix-synapse` and off you go.  It&#x27;s a fair point that Synapse doesn&#x27;t yet ship with an admin tool, just an admin API, but there are folks filling this gap (<a href="https:&#x2F;&#x2F;github.com&#x2F;Awesome-Technologies&#x2F;synapse-admin" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;Awesome-Technologies&#x2F;synapse-admin</a> is good).<p>5. &quot;Encryption isn’t mandatory in Matrix&quot;.  This is because, unlike Signal, Matrix supports public chatrooms.  It makes *NO* sense to end-to-end encrypt a public chatroom which by definition is intended to be indexed and visible and smeared all over the wider world.  All it would do is waste significant CPU on the clients, and hit up against resource limits given how large public chatrooms can get.  Meanwhile, all private conversations are E2EE by default, assuming your client supports E2EE.<p>TL;DR: It feels like we&#x27;re being judged on Matrix as it was in early 2020, ignoring all the sprinting we&#x27;ve been doing throughout the last year to address these criticisms, so it&#x27;s all rather frustrating.