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.
Decentralised 
Communication 
matthew@matrix.org
WebRTC deliberately 
specifies no specific 
signaling protocol. 
2
3 
è It makes interoperability 
and federation hard. 
è It creates silos.
As a user: 
4
5
I want to use my preferred 
apps and services to 
communicate 
6
Not be forced into specific 
services chosen by my 
contacts. 
7
If email gives me that 
flexibility, why not VoIP and 
IM? 
8
Current signaling protocol 
options include: 
9 
• SIP 
• XMPP 
• WebRTC Data Channel 
(e.g. Open Peer) 
• Assorted HTTP A...
SIP: 
10 
• Heavyweight 
• Complicated specification 
• Complicated stack 
• Buys little over HTTP
XMPP/Jingle: 
11 
• Streamed XML is debatable 
• Relatively complicated spec 
• Jingle has relatively little 
uptake 
• Cu...
HTTP APIs: 
12 
• Simple 
• But fragmented 
• And often proprietary 
• Or closed (Firebase, Pusher, 
PubNub...)
Introducing Matrix 
13
Introducing Matrix 
• New Open Source project (launched Sept 2014) 
14
Introducing Matrix 
• New Open Source project (launched Sept 2014) 
• Setting up as non-profit org (matrix.org) 
15
Introducing Matrix 
• New Open Source project (launched Sept 2014) 
• Setting up as non-profit org (matrix.org) 
• Publish...
Introducing Matrix 
• New Open Source project (launched Sept 2014) 
• Setting up as non-profit org (matrix.org) 
• Publish...
Introducing Matrix 
• New Open Source project (launched Sept 2014) 
• Setting up as non-profit org (matrix.org) 
• Publish...
Who is Matrix? 
Matthew Hodgson 
• Technical Leader of matrix.org 
• Set up and runs the Unified 
Communications line of b...
Key Characteristics 
• Entirely open: 
– open standard; open source; open project. 
• Message History as first-class citiz...
Demo time! 
21
Architecture 
Clients 
Home 
Servers 
Identity 
Servers 
Application 
Servers
Federation Demo 
23
The client-server API 
To send a message: 
curl 
-­‐XPOST 
-­‐d 
'{"msgtype":"m.text", 
"body":"hello"}' 
"https://alice.c...
The client-server API 
To set up a WebRTC call: 
curl 
-­‐XPOST 
–d 
'{ 
"version": 
0, 
 
"call_id": 
"12345”, 
 
"offer"...
The client-server API 
To persist some MIDI: 
curl 
-­‐XPOST 
–d 
'{ 
"note": 
"71", 
"velocity": 
68, 
"state": 
"on", 
"...
The client-server API 
…or to persist some tap gestures for animating an Avatar… 
curl 
-­‐XPOST 
–d 
'{ 
"thumbnail": 
"h...
The server-server API 
curl 
–XPOST 
–H 
‘Authorization: 
X-­‐Matrix 
origin=matrix.org,key=”898be4…”,sig=“j7JXfIcPFDWl1pd...
What about IoT? 
29
30 
CoAP: 
• REST over UDP (sort of) 
• Everything’s a server! 
(and a client) 
• Maps onto HTTP APIs. 
MQTT: 
• PubSub ov...
31 
Both are very different. 
But neither provide: 
• Global federated messaging 
• Message History 
• Message Signing 
• ...
echo 
'{"msgtype":"m.text", 
"body":"hello"}' 
| 
perl 
–MCBOR::XS 
–MJSON 
–pe 
'$_=encode_cbor 
decode_json' 
| 
coap-­‐...
33 
Any CoAP device can persist 
data into Matrix, and act on 
data pushed from Matrix. 
A Matrix-aware MQTT Broker 
could...
Current Progress 
• Began May 2014 
• First public release in Sept 2014 
• Crypto and iOS/Android landed Oct 2014 
• Next ...
Get involved! 
• Run a server 
è host your own data or be a trusted provider 
for your customers 
• Build something (anyt...
THANK YOU! 
http://matrix.org 
matrix: @matthew:matrix.org 
mail: matthew@matrix.org 
twitter: @matrixdotorg 
36
Why not XMPP? 
• We used to use XMPP (ejabberd, OpenFire, Spectrum, 
psyced, Psi, Pidgin, ASmack, Spark, XMPP.Framework) 
...
Upcoming SlideShare
Loading in …5
×

Matrix.org decentralised communication, Matthew Hodgson, TADSummit

1,328 views

Published on

Matrix.org decentralised communication, Matthew Hodgson, TADSummit 12-13 November 2014. Istanbul Turkey. Point Hotel.

Published in: Technology
  • Be the first to comment

Matrix.org decentralised communication, Matthew Hodgson, TADSummit

  1. 1. Decentralised Communication matthew@matrix.org
  2. 2. WebRTC deliberately specifies no specific signaling protocol. 2
  3. 3. 3 è It makes interoperability and federation hard. è It creates silos.
  4. 4. As a user: 4
  5. 5. 5
  6. 6. I want to use my preferred apps and services to communicate 6
  7. 7. Not be forced into specific services chosen by my contacts. 7
  8. 8. If email gives me that flexibility, why not VoIP and IM? 8
  9. 9. Current signaling protocol options include: 9 • SIP • XMPP • WebRTC Data Channel (e.g. Open Peer) • Assorted HTTP APIs
  10. 10. SIP: 10 • Heavyweight • Complicated specification • Complicated stack • Buys little over HTTP
  11. 11. XMPP/Jingle: 11 • Streamed XML is debatable • Relatively complicated spec • Jingle has relatively little uptake • Custom stack
  12. 12. HTTP APIs: 12 • Simple • But fragmented • And often proprietary • Or closed (Firebase, Pusher, PubNub...)
  13. 13. Introducing Matrix 13
  14. 14. Introducing Matrix • New Open Source project (launched Sept 2014) 14
  15. 15. Introducing Matrix • New Open Source project (launched Sept 2014) • Setting up as non-profit org (matrix.org) 15
  16. 16. Introducing Matrix • New Open Source project (launched Sept 2014) • Setting up as non-profit org (matrix.org) • Publishing pragmatic simple HTTP API standard for federated VoIP (WebRTC), IM and generic messaging. 16
  17. 17. Introducing Matrix • New Open Source project (launched Sept 2014) • Setting up as non-profit org (matrix.org) • Publishing pragmatic simple HTTP API standard for federated VoIP (WebRTC), IM and generic messaging. • Defines client-server and server-server APIs (and, shortly, server<->application-server APIs). 17
  18. 18. Introducing Matrix • New Open Source project (launched Sept 2014) • Setting up as non-profit org (matrix.org) • Publishing pragmatic simple HTTP API standard for federated VoIP (WebRTC), IM and generic messaging. • Defines client-server and server-server APIs (and, shortly, server<->application-server APIs). • Provides Apache-Licensed reference implementations of the server and clients (web, iOS, Android, Python, Perl...) 18
  19. 19. Who is Matrix? Matthew Hodgson • Technical Leader of matrix.org • Set up and runs the Unified Communications line of business within Amdocs (formerly MX Telecom) • 11 years of experience building IP telephony solutions and leading units Amandine Le Pape • Business Leader of matrix.org • Set up and co-runs the Unified Communications line of business within Amdocs as a Product Manager • 10 years of experience in mobile services and telecommunications 19 The Dev Team • A dozen of experienced developers specialized in VoIP and IM mobile app development • Most of them originally from the Amdocs Unified Communications team (flagship deployment: blah.com) Matrix comes from realising that VoIP and IM fragmentation is holding back the whole industry - we didn't want to be part of the problem, but try to solve it.
  20. 20. Key Characteristics • Entirely open: – open standard; open source; open project. • Message History as first-class citizen • Group communication as first-class citizen – Fully distributed room state (cryptographically signed) - no SPOFs or SPOCs. • Strong cryptographic identity to prevent spoofing • Identity agnostic • End-to-end encryption (RSN) 20
  21. 21. Demo time! 21
  22. 22. Architecture Clients Home Servers Identity Servers Application Servers
  23. 23. Federation Demo 23
  24. 24. The client-server API To send a message: curl -­‐XPOST -­‐d '{"msgtype":"m.text", "body":"hello"}' "https://alice.com:8448/_matrix/client/api/v1/rooms/ ROOM_ID/send/m.room.message?access_token=ACCESS_TOKEN" { "event_id": "YUwRidLecu" } 24
  25. 25. The client-server API To set up a WebRTC call: curl -­‐XPOST –d '{ "version": 0, "call_id": "12345”, "offer": { "type" : "offer”, "sdp" : "v=0rno=-­‐ 658458 2 IN IP4 127.0.0.1…" } }' "https://alice.com:8448/_matrix/client/api/v1/rooms/ ROOM_ID/send/m.call.invite?access_token=ACCESS_TOKEN" { "event_id": "ZruiCZBu” } 25
  26. 26. The client-server API To persist some MIDI: curl -­‐XPOST –d '{ "note": "71", "velocity": 68, "state": "on", "channel": 1, "midi_ts": 374023441 }' "https://alice.com:8448/_matrix/client/api/v1/rooms/ ROOM_ID/send/org.matrix.midi?access_token=ACCESS_TOKEN" { "event_id": “ORzcZn2” } 26
  27. 27. The client-server API …or to persist some tap gestures for animating an Avatar… curl -­‐XPOST –d '{ "thumbnail": "http://matrix.org:8080/_matrix/content/ QGtlZ2FuOm1hdHJpeC5vcmcvNupjfhmFhjxDPquSZGaGlYj.aW1hZ2UvcG5n.png", "actions": [ {"x": "0.5521607", "y": "6.224353", "t": "0.9479785"}, {"x": "0.5511537", "y": "6.220354", "t": "0.9701037"}, {"x": "0.5510949", "y": "6.214756", "t": "0.9804187"}, {"x": "0.5499267", "y": "6.213634", "t": "0.9972034"}, {"x": "0.5492241", "y": "6.210211", "t": "1.013744"}, {"x": "0.5486694", "y": "6.206304", "t": "1.030284"}, {"x": "0.5482137", "y": "6.201648", "t": "1.046764"}, ... {"x": "0.9997056", "y": "4.022976", "t": "8.970592"}, {"x": "0.9995697", "y": "4.043199", "t": "8.987072"} ] }' "https://alice.com:8448/_matrix/client/api/v1/rooms/ROOM_ID/send/ org.matrix.demos.unity.stickmen?access_token=ACCESS_TOKEN" { "event_id": “ORzcZn2” } 27
  28. 28. The server-server API curl –XPOST –H ‘Authorization: X-­‐Matrix origin=matrix.org,key=”898be4…”,sig=“j7JXfIcPFDWl1pdJz…”’ –d ‘{ "ts": 1413414391521, "origin": "matrix.org", "destination": "alice.com", "prev_ids": ["e1da392e61898be4d2009b9fecce5325"], "pdus": [{ "age": 314, "content": { "body": "hello world", "msgtype": "m.text" }, "context": "!fkILCTRBTHhftNYgkP:matrix.org", "depth": 26, "hashes": { "sha256": "MqVORjmjauxBDBzSyN2+Yu+KJxw0oxrrJyuPW8NpELs" }, "is_state": false, "origin": "matrix.org", "pdu_id": "rKQFuZQawa", "pdu_type": "m.room.message", "prev_pdus": [ ["PaBNREEuZj", "matrix.org"] ], "signatures": { "matrix.org": { "ed25519:auto": "jZXTwAH/7EZbjHFhIFg8Xj6HGoSI+j7JXfIcPFDWl1pdJz+JJPMHTDIZRha75oJ7lg7UM+CnhNAayHWZsUY3Ag" } }, "origin_server_ts": 1413414391521, "user_id": "@matthew:matrix.org" }] }’ https://alice.com:8448/_matrix/federation/v1/send/916d630ea616342b42e98a3be0b74113 28
  29. 29. What about IoT? 29
  30. 30. 30 CoAP: • REST over UDP (sort of) • Everything’s a server! (and a client) • Maps onto HTTP APIs. MQTT: • PubSub over TCP (sort of) • Everything can pub & sub! (via a broker). • Maps onto message passing.
  31. 31. 31 Both are very different. But neither provide: • Global federated messaging • Message History • Message Signing • E2E Encryption Matrix to the rescue?
  32. 32. echo '{"msgtype":"m.text", "body":"hello"}' | perl –MCBOR::XS –MJSON –pe '$_=encode_cbor decode_json' | coap-­‐client –m post coaps://alice.com/_m/c/a/v1/r/ROOM_ID/s/m.room.message? a=ACCESS_TOKEN is the same as… curl -­‐XPOST -­‐d '{"msgtype":"m.text", "body":"hello"}' "https://alice.com:8448/_matrix/client/api/v1/rooms/ ROOM_ID/send/m.room.message?access_token=ACCESS_TOKEN" 32 Exposing Matrix via CoAP is trivial:
  33. 33. 33 Any CoAP device can persist data into Matrix, and act on data pushed from Matrix. A Matrix-aware MQTT Broker could similarly store history to Matrix, and expose Matrix history and pubsub to MQTT clients.
  34. 34. Current Progress • Began May 2014 • First public release in Sept 2014 • Crypto and iOS/Android landed Oct 2014 • Next up: – Complete the spec – Complete federation implementation – Declare reference server production ready – UX polish for the reference clients – Define Application Server APIs – End-to-End Encryption – IoT implementations! 34
  35. 35. Get involved! • Run a server è host your own data or be a trusted provider for your customers • Build something (anything!) on top • Build interoperability gateways è add a whole new ecosystem to your community Check out http://matrix.org! Follow us at @matrixdotorg! 35
  36. 36. THANK YOU! http://matrix.org matrix: @matthew:matrix.org mail: matthew@matrix.org twitter: @matrixdotorg 36
  37. 37. Why not XMPP? • We used to use XMPP (ejabberd, OpenFire, Spectrum, psyced, Psi, Pidgin, ASmack, Spark, XMPP.Framework) • We built an alternative because: – Single server per MUC is single point of control – Synchronised history is a very 2nd class citizen – Stanzas aren't framed or reliably delivered – XMPP stacks are not easy to implement in a web environment – Jingle is complicated and exotic – XML is needlessly verbose and unwieldy – The baseline feature-set is too minimal – JIDs haven't taken off like Email or MSISDNs – Not designed for mobile use cases (e.g. push; low bw) – Well documented spam and identity/security issues – ejabberd

×