I look after Matrix, and @Kensie invited me to chip in with the pros and cons as we see them:
Matrix pros:
- Matrix is entirely 100% FOSS (Apache License 2), both servers, clients, client sdks and gateways.
- You can run your own matrix servers entirely for free.
- Matrix is more than just an IRC client; it’s actually a new open standard HTTP API for decentralised comms. The big differences with IRC are:
- Conversation history (scrollback) is a first class citizen, with infinite scrollback/logging available for free on every room
- Open federation (like email or xmpp); if folks on remote Matrix servers join a room, the history is replicated over both servers such that no single server controls the conversation (signed with a git-like scheme for cryptographic integrity over a directed acyclic graph). Obviously you can also have closed-federation rooms too.
- End-to-end encryption. We use a variant of the Axolotl cryptographic ratchet to optionally provide better-than-OTR end-to-end crypto as part of the spec.
- Open standard HTTP API, making it trivial to write clients, bots or slack-style integrations.
- Support for storing any JSON data in a room; not just text messages, but images, videos, files, etc.
- Support for WebRTC-based VoIP/video calling (with multiway coming real soon now)
- Presence, typing notifications, read reports, server-side configurable push notifications, etc.
- Mobile clients (iOS and Android) as first class citizens.
- Extensible gateways to other networks - we already have SMS, SIP and so PSTN gateways; meanwhile XMPP, Slack, Lync and other ones are in development. Building a bridge for something like Discourse into Matrix would be really easy and fun, for instance.
- That said, you can use Matrix as a glorified IRC bouncer if you like. Matrix’s name comes from the fact that it matrixes together different existing communication networks, and for folks like Mozilla (and my workplace as it happens) which live and breathe from IRC driven, the bridging works great.
- Clientwise there’s a range of clients that talk Matrix - Matrix.org - Try Matrix has the list. The most advanced one is http://vector.im, which is converging on slack-style UI/UX. However, all of these are FOSS and Vector in particular is very easily customised and branded via the matrix-react-sdk. So, if Mozilla wanted to use a Moz-branded version of Vector which skinned things to smell and look more like IRC rather than ‘pure’ Matrix, that’s absolutely trivial (a few hour’s work) to do. Meanwhile IRC diehards can still connect to IRC itself.
- Clientwise we also provide a large range of SDKs, both for wrapping the HTTP APIs and providing reusable UI components. Includes Python, Perl, Android, iOS. The community’s written a bunch of others too (Erlang, Ruby, Lisp, etc).
Matrix cons:
- It’s still beta. We’ve been dogfooding it since we launched in September 2014 and it’s very usable, but we’re still polishing the specs, the server and the clients.
- The reference server is written for experimenting with the APIs rather than performance. It’s written in Python/Twisted, and as such is basically single-threaded and doesn’t horizontally scale yet. On the matrix.org server we currently have 25,000 accounts and a few thousand rooms and a few hundred simultaneous users and things work fine, but there’s a lot of HA and performance work we’re doing currently in order to exit beta.
- There are some thinkos in the v1 API that we’re fixing currently with an upgrade to v2. Specifically, messages can rarely get out of order on bad connections; invitations to join a room don’t give enough info about what you’re being invited to and can’t be rejected; clients can take a while to sync on launch for powerusers; etc. We’re working through these quite aggressively though.
Hopefully this gives a bit more context about what we’re up to. If you want to give it a go, check out the react client at vector.im or perhaps the older clunkier but maturer angularjs client at matrix.org/beta. Meanwhile, you can get a server from GitHub - matrix-org/synapse: Synapse: Matrix homeserver written in Python/Twisted., or an IRC bridge from GitHub - matrix-org/matrix-appservice-irc: Node.js IRC bridge for Matrix. Finally, if you were hypothetically customising Vector to brand and reskin it to work nicely with Moz, you’d fork GitHub - element-hq/element-web: A glossy Matrix collaboration client for the web..
All of moznet is now bridged into Matrix, so you can already join anywhere on IRC from Matrix by joining #mozilla_#channelname:matrix.org (e.g. #mozilla_#communityit:matrix.org), and you can catch me there as M-Matthew on IRC or @matthew:matrix.org on Matrix if anyone has any questions.
Quick screenshot of how #communityit appears on Vector, for the record: