We have evaluated a matrix server as our new internal asynchronous communication medium. Currently we use the Slack with a free plan.
To understand the topic, while Slack is a finished product, Matrix is a protocol. So for matrix there are manifold clients and servers, from free and paid.
We choose to use the synapse server with the Element client. The Element client is probably the most popular client for matrix. Synapse is a server, written in python, that has been around for a while now.
The Arguments
Slack has been working great for us in the past. The free plan has very few limitations for a smaller software development company. Transitioning to Synapse a self-hosted solution increases maintenance load on the team.
Upsides
-
More control over our platform, since we are not subject to changes inside Slack whenever Salesforce decides to change things around.
-
Transparency on how our communication is handled, since every part involved is open source
-
Scaling to as far as our hardware takes us
-
Join servers with customers through federation (This is unlikely to be relevant, since the adoption of matrix is mostly in the government sector and private use)
-
Reduced target for hacking attacks, since our company is not as juicy of a target as Slack or Salesforce.
-
Easy development of tools that integrate with our asynchronous communication platform.
-
Improved data protection compliance, which helps to gain customers and comply with regulations. (Slack is our only not self-hosted tool)
Downsides
-
Slack has more features then our Synapse/Element setup. e.g. Threads is just beta on our setup
-
Dependency on our hardware to work (e.g. DDoS protection is likely much strong with Slack)