Title: Page 43 – Alex Kirk

---

 * March 30, 2023
 * @nathan@wpbuilds.social Maybe Mona? [@MonaApp](https://mastodon.social/@MonaApp)
 * [Web](https://alex.kirk.at/category/web/)
 * 
   ## 󠀁[What is Matrix?](https://alex.kirk.at/2023/02/02/what-is-matrix/)󠁿
   
 * February 2, 2023
 * I am working on [bringing Matrix to the WordPress community](https://make.wordpress.org/meta/2023/01/25/a-meta-subproject-for-evaluating-matrix/)(
   see also the [WP Tavern post](https://wptavern.com/wordpress-project-to-evaluate-replacing-slack-with-matrix-open-source-chat))
   and part of this is also to explain what [Matrix](https://matrix.org/) actually
   is, so I wrote up a few paragraphs that I’d like to share here:
 * Matrix is an internet-based chat system like [Slack](https://slack.com/) or [Microsoft Teams](https://www.microsoft.com/microsoft-teams/)
   with a few key differences:
 * 
   #### Open Source
   
 * It is open source (Apache License 2.0). Thus it includes the four freedoms (run
   it for any purpose, modify it, distribute it or a modified version).
 * 
   #### Federated
   
 * There is no centrally controlled server, similar to e-mail (or [ActivityPub](https://www.w3.org/TR/activitypub/)):
   to send and receive e-mail, you need to have an account on a mail server. In 
   Matrix, these servers are called [homeservers](https://matrix.org/docs/guides/introduction).
 * When you send messages, these messages are first sent from your client (computer
   or phone) to the server, from the server to the recipients’ servers (in e-mail,
   you manually list them, in Matrix, these are all other people in the room), and
   then the messages are delivered to the individual participant’s clients. The 
   benefit of this is that the client (like a mobile phone app) doesn’t need to 
   be connected when the server receives the message and can catch up when it comes
   back online. 
 * For this reason, Matrix account addresses look similar to e-mail (or Mastodon)
   addresses but they have the format [@username:server.tld](https://spec.matrix.org/latest/#users).
   Starting when a member of a homeserver joins a room, their homeserver will maintain
   a full, up-to-date copy of the chat room. Any message sent by others in the room
   will be sent to every participating homeserver. For this reason, joining a room
   can take a while because the server needs to (partially) populate its local copy
   from other homeservers. Because of the real-time nature of chat, the messages
   are exchanged very quickly between the homeservers as soon as that connection
   has been established.
 * A Matrix server can also be run in unfederated mode where it will not communicate
   with other servers on the internet, thus enabling a closed community. This decision
   can also be made on a room-by-room basis.
 * 
   #### Encryption
   
 * Matrix rooms can be either unencrypted and openly discoverable, or end-to-end
   encrypted and invite-only. Because the server has no knowledge of contents or
   encryption keys, the latter need to be shared between the individual client software
   of a user. This is established through a verification step in which you use your
   other/old client to establish trust with the new one. Until this has happened,
   any encrypted communication is inaccessible.
 * 
   #### Open Protocol
   
 * The [Matrix protocol](https://spec.matrix.org/latest/) (and all of its [updates, called MSC](https://spec.matrix.org/proposals/))
   is publicly available and can be implemented by any software. There are [a couple of server implementations](https://matrix.org/faq/#can-i-write-a-matrix-homeserver%3F)
   with best known ones by Element themselves, called [Synapse](https://github.com/matrix-org/synapse)(
   Python based) and [Dendrite](https://github.com/matrix-org/dendrite) (Go based).
   Clients are easier to implement through [Matrix provided SDKs](https://matrix.org/faq/#how-do-i-matrix-enable-my-existing-app%3F)
   that do the heavy lifting of encryption and protocol communication.
 * 
   #### Free Choice of Clients
   
 * For the above reason, there is [a wide selection of clients](https://matrix.org/clients/)
   for mobile and desktop, different operating systems, text based, etc. We have
   developed a WordPress plugin called [Chatrix](https://github.com/Automattic/chatrix)
   that allows embedding Matrix inside a WordPress post or page which allows something
   like we demonstrated in this GIF:
 * ![](https://alex.kirk.at/wp-content/uploads/sites/2/2023/02/chatrix.gif)
 * [Matrix](https://alex.kirk.at/category/matrix/)

 [Previous Page](https://alex.kirk.at/page/42/?output_format=md&term_id=44051) [Next Page](https://alex.kirk.at/page/44/?output_format=md&term_id=44051)