Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Matrix, The Year To Date, Ben Parsons, TADSummit 2018


Published on

Matrix, The Year To Date
Ben Parsons, Developer Advocate, Matrix

Matrix is an open standard for communication over the Internet.

I will talk about the matrix standard, both the technical implementation and the reasons for its creation.

We will focus on the changes and progress that has been made in the previous year, particularly getting the specification out of beta, and the growth of the ecosystem.

Finally, the Matrix environment continues to develop, and we'll look at the roadmap for the future.

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Matrix, The Year To Date, Ben Parsons, TADSummit 2018

  1. 1. What is it? What’s changed lately? What’s next?
 @matrixdotorg 1
  2. 2. 2 What is Matrix?
  3. 3. What is Matrix? Matrix is an open standard for interoperable, decentralised, real-time communication over the Internet. "3
  4. 4. What is Matrix? Matrix provides a standard HTTP API for publishing and subscribing to real-time data in specified channels… "4
  5. 5. What is Matrix? …which means it can be used to power IM, VoIP/WebRTC signalling, IoT communication… "5
  6. 6. What is Matrix? … and anything else that can be expressed as JSON and needs to be transmitted in real-time over HTTP. "6
  7. 7. Matrix: Distributed Architecture Clients Home Servers Identity Servers Application Servers
  8. 8. "8 Telegram Slack Gitter IRC Github
  9. 9. "9 Telegram Slack Gitter IRC Github
  10. 10. No single party owns your conversations.
 Conversations are shared over all participants. "10
  11. 11. End to End Crypto with Olm and Megolm • Without end-to-end encryption, Matrix’s replicated conversation history is a privacy problem. • ➔ Two years spent building decentralised E2E crypto into the heart of Matrix. "11
  12. 12. Security Assessment • libolm 1.3.0 assessed by NCC Group in Sept 2016 • Findings released to the public! cryptographic-review • Olm: 2x low risk finding, 1x informational • Megolm: 1x high, 1x medium, 4x low risk. • All findings fixed in libolm or the Matrix Client SDKs. • No issues found in libolm since the audit! "12
  13. 13. • Turning it on by default! • Improved UX for managing device trust • Cross-signing device keys • Better device verification • Better push notification UX for E2E rooms • Matrix daemon support • Negotiating E2E with legacy clients "13 Olm: What’s next?
  14. 14. 14 Ecosystem
  15. 15. Matrix Open Source Ecosystem The Matrix Specification (Client/Server API) client-sideserver-side Other Servers: Ruma (Rust),
 Jeon (Java)… Synapse
 (1st gen Matrix Server) Application Services and Bridges Other Clients: …and many many more Matrix iOS Console MatrixKit (iOS) matrix-ios-sdk Matrix Web Console matrix-js-sdk Matrix Android Console matrix-android-sdk Dendrite
 (2nd gen Server) Other Services: Bridges, Bots, Integs… Nheko! (Qt/C++) Quaternion (Qt/C++) gomuksThunderbird Seaglass (macOS)Fractal (Gtk+/Rust) matrix-react-sdk
  16. 16. Clients • Clients available for every platform, with far more available this year • Many client-side SDKs: • Official: JS, React, iOS, Android • Semi-official: Python, Perl5, Go • Community: Erlang, Java, Scala, Ruby, Perl6, Lisp, Elixir, Haskell, Rust… "16
  17. 17. Home servers • Synapse: reference Matrix home server from the core team. • Huge codebase in Python/Twisted. • Some major perf and maintainability challenges… • … though lots of perf gains lately • Dendrite: next-generation, work in progress HS from the core team • ~30K lines of Golang • Received love this summer from interns and GSOC (more later) • Other home servers from the community using Rust, Java TypeScript and more "17
  18. 18. More home server implementation? With the release of r0, we expect to see an increase in home server project activity. "18
  19. 19. The Matrix APIs • Client-Server API • Server-Server API • Application Service API • Identity Server API
  20. 20. The Client-Server API To send a message: curl -XPOST -d '{"msgtype":"m.text", "body":"hello"}' "https://" { "event_id": "YUwRidLecu" } "20
  21. 21. To control a Hue light: curl -XPOST –d '{ "room": "1", "light": 2, "brightness": 0.5, }' " org.matrix.midi?access_token=ACCESS_TOKEN" { "event_id": “ORzcZn2” } The Client-Server API "21
  22. 22. Server-Sever API • Synchronises messages and room state between servers, in real-time • Can retrieve historic messages from each other • Query profile and presence information about users on each other's servers "22 Application Services API • Have privileged access to the server • Can subscribe to server traffic to provide custom application logic • They can masquerade as 'virtual users'.
  23. 23. 23 Bridges
  24. 24. Bridges • IRC • Discord • Telegram • Slack • SMS "24 • Gitter • RocketChat • Email • Mastodon • …more
  25. 25. 25 Bridge 3rd party Server 3rd party Clients Building Bridges
  26. 26. Typical Bridging Stack "26 matrix- appservice-
 irc matrix-appservice-bridge matrix-appservice-node matrix-js-sdk Node JS matrix- appservice- slack matrix- appservice- purple …
  27. 27. Matrix to IRC matrix- appservice-irc ircd (e.g. Freenode) IRC clients
  28. 28. Matrix to IOT… Janus WebRTC Gateway (from MeetEcho) Parrot Bebop Drone
  29. 29. 29 What’s New?
  30. 30. 30 Client Ecosystem Explosion
  31. 31. Client Ecosystem explosion There were a lot of clients 12 months ago, but now there is a genuine choice of clients for day-to-day use Not all of these were first released in the last year, but still, an “explosion” of work and client development is fair to claim! "31
  32. 32. Nheko 32 • Qt • Supports E2E • Looks great
  33. 33. Quaternion • Qt, looks like a Qt app • Creator is also creator of libQMatrixClient, which supports many projects 33
  34. 34. Spectral • Qt, uses libQMatrixClient • Looks great 34
  35. 35. Seaglass • Native macOS app • supports E2E • looks great 35
  36. 36. Fractal • Gnome/GTK • Rust • rapidly evolving • strong community • Adding E2E soon, at the Rust-level, so will be client agnostic • Supported by Purism for librem5 device 36
  37. 37. Gomuks • TUI • written in Go 37
  38. 38. Client Ecosystem explosion • Nheko - Qt, supports E2E, looks great • Quaternion - Qt, looks like a Qt app • Creator is also creator of libQMatrix, which supports many projects • Spectral - Qt, looks great • Seaglass - Native macOS app, supports E2E, looks great • Fractal - Gnome/GTK, Rust, rapidly evolving, strong community • Gomuks - TUI, written in Go "38
  39. 39. Spec Progress • A known bottleneck • Permanent Core Team member focused on driving this forwards • So close…….. • Client Server API is ready • Application Service (bots & bridges) API is ready "39
  40. 40. "40
  41. 41. Synapse improvements • Reference implementation and 99.999% of active home servers • Regular incremental performance improvements • Regular security improvements • Noticeable improvement in responsiveness on • It’s now Python 3 • Installation streamlined and docs improved (thanks Robin) "41
  42. 42. Google Summer of Code • Two students working with the core team • One made huge progress adding E2E bindings for the Python SDK • Another helped push Dendrite toward feature-completeness • Gnome Project had two students working on Fractal (Gtk Client) • Assisting with redesign and implementation of fundamental features like room config screen "42
  43. 43. DINSIC (French Government usage) • Direction interministérielle du numérique et du système d'information et de communication de l'État • Deploying a huge private federation of Matrix homeservers spanning the whole government • Decentralised organisations (such as govt and academia) appreciate the decentralised design of matrix, they can have separate servers linked • they can have different settings for many things, event security - eg. AV severity "43
  44. 44. DINSIC (French Government usage) • Developed a fork of Riot for use as their official secure communications client • Now ready on iOS, Android, Web • Now live with 15 servers, one per ministry • Security Audit (with involvement from ANSSI, Intelligence Service) happening today! • We expect an increase in rollout speed after this "44
  45. 45. Lazy Loading • Specifically Lazy Loading of member list for rooms • Can be a bottleneck for client performance but can be solved by the server. • Current implementation suggests an initial RAM usage reduction of around 6x. "45
  46. 46. The Foundation • A UK non-profit company • Guardians (five total, including some not from the Matrix community) • In progress: • Property being transferred • Articles of Association "46
  47. 47. New users • TADHack! • 1946 total users on • using for their internal comms with a custom Riot theme "47
  48. 48. 48 Hosted Homeservers
  49. 49. • Hosted Homeservers: paid hosting from the creators of Matrix • Matrix as a SaaS (“MaaS”? “MaaSaaS”?) • using it internally • Other adopters not yet announced… soon! "49
  50. 50. Next steps • Smaller servers for individuals • Custom DNS • Migration path for existing home servers "50
  51. 51. 51 What’s Next?
  52. 52. Spec r0 release • Stable release of Matrix Spec • We are so close! • Client Server API is ready • Application Service (bots & bridges) API is ready • Federation API expected this year • "52
  53. 53. Riot Redesign • Current Riot is not always attractive • The colours are not …. right • Messaging software ecosystem is mature, there are things which users are known to like (…Slack) • Riot will be a glossy client, with other clients available to taste "53
  54. 54. "54
  55. 55. "55
  56. 56. State Resolution: Reloaded • The state of a room at an event is built up and updated by sending state events into the room. • View of the state of the room should be consistent across all servers. • Problem: room graph forks and then merges again (e.g. if two servers send events at the same time). State has to be resolved from the state of the two branches: this is called the state resolution algorithm. • Entirely new consensus algorithm • Ideal algorithm should not allow malicious servers to avoid moderation action by forking and merging the room graph "56
  57. 57. Cross-signing • Keep security, improve convenience "57
  58. 58. e2e in new clients • Currently in Riot, Nheko, Seaglass • Needs more • We should aim to enable e2e on private rooms by default • Big progress happening in Fractal, will be client-agnostic "58
  59. 59. What’s Next Summary • Spec r0 release • Riot Redesign • E2E in more clients • State Res reloaded • Cross-signing "59
  60. 60. 60 What comes after what comes next?
  61. 61. What’s after that? • Dendrite, with other home servers filling the ecosystem • Aggregations • Emoji Reactions • Editable messages • Threading - future idea • Decentralised identity • Foundation "61
  62. 62. Thank You! Swag is available!