Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Adhearsion 3: The future of Ruby communications

Adhearsion 3: The future of Ruby communications

Presentation covering JRuby, Celluloid, WebRTC and Adhearsion and how they all fit together.

Delivered at RubyConf Brasil, São Paulo, Thursday 29th Aug 2013

Ben Langfeld

August 29, 2013
Tweet

More Decks by Ben Langfeld

Other Decks in Programming

Transcript

  1. P A G E Adhearsion 3: the future of Ruby

    communications Ben Langfeld @benlangfeld [email protected] 1 1 Thursday, 29 August 13
  2. P A G E 5 WHAT IS ADHEARSION? Voice App

    Punchblock AMI FreeSWITCH Logging Plugins Statistics SQL Web Service REST/JSON/XML Carrier APIs 5 Thursday, 29 August 13
  3. P A G E 5 WHAT IS ADHEARSION? •Business logic

    layer for a telephony stack Voice App Punchblock AMI FreeSWITCH Logging Plugins Statistics SQL Web Service REST/JSON/XML Carrier APIs 5 Thursday, 29 August 13
  4. P A G E 5 WHAT IS ADHEARSION? •Business logic

    layer for a telephony stack •Does not process any media or handle signaling directly Voice App Punchblock AMI FreeSWITCH Logging Plugins Statistics SQL Web Service REST/JSON/XML Carrier APIs 5 Thursday, 29 August 13
  5. P A G E 5 WHAT IS ADHEARSION? •Business logic

    layer for a telephony stack •Does not process any media or handle signaling directly •Exercises third-party call control (3PCC) Voice App Punchblock AMI FreeSWITCH Logging Plugins Statistics SQL Web Service REST/JSON/XML Carrier APIs 5 Thursday, 29 August 13
  6. P A G E 5 WHAT IS ADHEARSION? •Business logic

    layer for a telephony stack •Does not process any media or handle signaling directly •Exercises third-party call control (3PCC) •High-level API on top of heavy lifting Voice App Punchblock AMI FreeSWITCH Logging Plugins Statistics SQL Web Service REST/JSON/XML Carrier APIs 5 Thursday, 29 August 13
  7. P A G E 5 WHAT IS ADHEARSION? •Business logic

    layer for a telephony stack •Does not process any media or handle signaling directly •Exercises third-party call control (3PCC) •High-level API on top of heavy lifting •All Ruby Voice App Punchblock AMI FreeSWITCH Logging Plugins Statistics SQL Web Service REST/JSON/XML Carrier APIs 5 Thursday, 29 August 13
  8. P A G E 5 WHAT IS ADHEARSION? •Business logic

    layer for a telephony stack •Does not process any media or handle signaling directly •Exercises third-party call control (3PCC) •High-level API on top of heavy lifting •All Ruby •Allows development of complex telephony apps with a nice language Voice App Punchblock AMI FreeSWITCH Logging Plugins Statistics SQL Web Service REST/JSON/XML Carrier APIs 5 Thursday, 29 August 13
  9. P A G E 5 WHAT IS ADHEARSION? •Business logic

    layer for a telephony stack •Does not process any media or handle signaling directly •Exercises third-party call control (3PCC) •High-level API on top of heavy lifting •All Ruby •Allows development of complex telephony apps with a nice language •Last year I explained what Adhearsion can do Voice App Punchblock AMI FreeSWITCH Logging Plugins Statistics SQL Web Service REST/JSON/XML Carrier APIs 5 Thursday, 29 August 13
  10. P A G E CELLULOID FOR AWESOME CONCURRENCY •Celluloid implements

    the actor pattern 7 7 Thursday, 29 August 13
  11. P A G E CELLULOID FOR AWESOME CONCURRENCY •Celluloid implements

    the actor pattern •José Valim will probably talk about more details of Actors tomorrow 7 7 Thursday, 29 August 13
  12. P A G E CELLULOID FOR AWESOME CONCURRENCY •Celluloid implements

    the actor pattern •José Valim will probably talk about more details of Actors tomorrow •Actors are processes which maintain their own state and modify it by sequentially processing messages from other actors 7 7 Thursday, 29 August 13
  13. P A G E CELLULOID FOR AWESOME CONCURRENCY •Celluloid implements

    the actor pattern •José Valim will probably talk about more details of Actors tomorrow •Actors are processes which maintain their own state and modify it by sequentially processing messages from other actors •ATOM 7 7 Thursday, 29 August 13
  14. P A G E CELLULOID FOR AWESOME CONCURRENCY •Celluloid implements

    the actor pattern •José Valim will probably talk about more details of Actors tomorrow •Actors are processes which maintain their own state and modify it by sequentially processing messages from other actors •ATOM •Celluloid goes beyond simple actors to implement concurrent objects 7 7 Thursday, 29 August 13
  15. P A G E CELLULOID FOR AWESOME CONCURRENCY •Celluloid implements

    the actor pattern •José Valim will probably talk about more details of Actors tomorrow •Actors are processes which maintain their own state and modify it by sequentially processing messages from other actors •ATOM •Celluloid goes beyond simple actors to implement concurrent objects •Concurrent objects can reorder messages and run multiple tasks in parallel 7 7 Thursday, 29 August 13
  16. P A G E CELLULOID FOR AWESOME CONCURRENCY •Celluloid implements

    the actor pattern •José Valim will probably talk about more details of Actors tomorrow •Actors are processes which maintain their own state and modify it by sequentially processing messages from other actors •ATOM •Celluloid goes beyond simple actors to implement concurrent objects •Concurrent objects can reorder messages and run multiple tasks in parallel •bit.ly/yMQjgV 7 7 Thursday, 29 August 13
  17. P A G E CELLULOID FOR AWESOME CONCURRENCY •Celluloid implements

    the actor pattern •José Valim will probably talk about more details of Actors tomorrow •Actors are processes which maintain their own state and modify it by sequentially processing messages from other actors •ATOM •Celluloid goes beyond simple actors to implement concurrent objects •Concurrent objects can reorder messages and run multiple tasks in parallel •bit.ly/yMQjgV •Celluloid allows us to logically break up concurrent concerns and write them in a very simple way 7 7 Thursday, 29 August 13
  18. P A G E CELLULOID FEATURES •Concurrent objects •ATOM •Simple

    actors •Async calls 9 9 Thursday, 29 August 13
  19. P A G E CELLULOID FEATURES •Concurrent objects •ATOM •Simple

    actors •Async calls •Futures 9 9 Thursday, 29 August 13
  20. P A G E CELLULOID FEATURES •Concurrent objects •ATOM •Simple

    actors •Async calls •Futures •Linking 9 9 Thursday, 29 August 13
  21. P A G E CELLULOID FEATURES •Concurrent objects •ATOM •Simple

    actors •Async calls •Futures •Linking •Supervisors 9 9 Thursday, 29 August 13
  22. P A G E CELLULOID FEATURES •Concurrent objects •ATOM •Simple

    actors •Async calls •Futures •Linking •Supervisors •Pools 9 9 Thursday, 29 August 13
  23. P A G E CELLULOID FEATURES •Concurrent objects •ATOM •Simple

    actors •Async calls •Futures •Linking •Supervisors •Pools •Timers 9 9 Thursday, 29 August 13
  24. P A G E CELLULOID FEATURES •Concurrent objects •ATOM •Simple

    actors •Async calls •Futures •Linking •Supervisors •Pools •Timers •FSM 9 9 Thursday, 29 August 13
  25. P A G E CELLULOID FEATURES •Concurrent objects •ATOM •Simple

    actors •Async calls •Futures •Linking •Supervisors •Pools •Timers •FSM •Notifications (PubSub) 9 9 Thursday, 29 August 13
  26. P A G E HOW DOES ADHEARSION WORK? •Represents phone

    calls as actors 10 10 Thursday, 29 August 13
  27. P A G E HOW DOES ADHEARSION WORK? •Represents phone

    calls as actors •Passes messages (commands and events) between the engine and call actors 10 10 Thursday, 29 August 13
  28. P A G E HOW DOES ADHEARSION WORK? •Represents phone

    calls as actors •Passes messages (commands and events) between the engine and call actors •Each call runs its handling logic in its actor thread 10 10 Thursday, 29 August 13
  29. P A G E HOW DOES ADHEARSION WORK? •Represents phone

    calls as actors •Passes messages (commands and events) between the engine and call actors •Each call runs its handling logic in its actor thread •Layers on a synchronous API for simple apps like: 10 10 Thursday, 29 August 13
  30. P A G E JRUBY FOR PARALLELISM AND SPEED 11

    11 Thursday, 29 August 13
  31. P A G E JRUBY FOR PARALLELISM AND SPEED •JIT

    11 11 Thursday, 29 August 13
  32. P A G E JRUBY FOR PARALLELISM AND SPEED •JIT

    •Turns Ruby code into JVM bytecode 11 11 Thursday, 29 August 13
  33. P A G E JRUBY FOR PARALLELISM AND SPEED •JIT

    •Turns Ruby code into JVM bytecode •Repeat execution is much faster 11 11 Thursday, 29 August 13
  34. P A G E JRUBY FOR PARALLELISM AND SPEED •JIT

    •Turns Ruby code into JVM bytecode •Repeat execution is much faster •Takes some time to warm up 11 11 Thursday, 29 August 13
  35. P A G E JRUBY FOR PARALLELISM AND SPEED •JIT

    •Turns Ruby code into JVM bytecode •Repeat execution is much faster •Takes some time to warm up •More specific method cache invalidation => MRI has problems here 11 11 Thursday, 29 August 13
  36. P A G E JRUBY FOR PARALLELISM AND SPEED •JIT

    •Turns Ruby code into JVM bytecode •Repeat execution is much faster •Takes some time to warm up •More specific method cache invalidation => MRI has problems here •Distilling JRuby: The JIT Compiler by R.J. Lorimer - bit.ly/14aCroa 11 11 Thursday, 29 August 13
  37. P A G E JRUBY FOR PARALLELISM AND SPEED •JIT

    •Turns Ruby code into JVM bytecode •Repeat execution is much faster •Takes some time to warm up •More specific method cache invalidation => MRI has problems here •Distilling JRuby: The JIT Compiler by R.J. Lorimer - bit.ly/14aCroa •Invokedynamic, or InDy adds witchcraft to make things faster 11 11 Thursday, 29 August 13
  38. P A G E JRUBY FOR PARALLELISM AND SPEED •JIT

    •Turns Ruby code into JVM bytecode •Repeat execution is much faster •Takes some time to warm up •More specific method cache invalidation => MRI has problems here •Distilling JRuby: The JIT Compiler by R.J. Lorimer - bit.ly/14aCroa •Invokedynamic, or InDy adds witchcraft to make things faster •Designed for dynamic languages on the JVM 11 11 Thursday, 29 August 13
  39. P A G E JRUBY FOR PARALLELISM AND SPEED •JIT

    •Turns Ruby code into JVM bytecode •Repeat execution is much faster •Takes some time to warm up •More specific method cache invalidation => MRI has problems here •Distilling JRuby: The JIT Compiler by R.J. Lorimer - bit.ly/14aCroa •Invokedynamic, or InDy adds witchcraft to make things faster •Designed for dynamic languages on the JVM •@qmx is an InDy wizard 11 11 Thursday, 29 August 13
  40. P A G E JRUBY FOR PARALLELISM AND SPEED 12

    12 Thursday, 29 August 13
  41. P A G E JRUBY FOR PARALLELISM AND SPEED •Garbage

    collector 12 12 Thursday, 29 August 13
  42. P A G E JRUBY FOR PARALLELISM AND SPEED •Garbage

    collector •Generational 12 12 Thursday, 29 August 13
  43. P A G E JRUBY FOR PARALLELISM AND SPEED •Garbage

    collector •Generational •Tunable 12 12 Thursday, 29 August 13
  44. P A G E JRUBY FOR PARALLELISM AND SPEED •Garbage

    collector •Generational •Tunable •JVM’s garbage collector had what MRI has now in 2004 12 12 Thursday, 29 August 13
  45. P A G E JRUBY FOR PARALLELISM AND SPEED •Garbage

    collector •Generational •Tunable •JVM’s garbage collector had what MRI has now in 2004 •To Know a Garbage Collector by Michael R. Bernstein - bit.ly/1bwxhG6 12 12 Thursday, 29 August 13
  46. P A G E JRUBY FOR PARALLELISM AND SPEED •No

    GIL 13 13 Thursday, 29 August 13
  47. P A G E JRUBY FOR PARALLELISM AND SPEED •No

    GIL 13 Diagram credit to @igvita 13 Thursday, 29 August 13
  48. P A G E CLIENTS CARE ABOUT THIS 15 15

    Thursday, 29 August 13
  49. P A G E CLIENTS CARE ABOUT THIS •Performance is

    important for large projects, including open-source 15 15 Thursday, 29 August 13
  50. P A G E CLIENTS CARE ABOUT THIS •Performance is

    important for large projects, including open-source •Some clients really care about licenses 15 15 Thursday, 29 August 13
  51. P A G E CLIENTS CARE ABOUT THIS •Performance is

    important for large projects, including open-source •Some clients really care about licenses •Clients care about project stability and longevity 15 15 Thursday, 29 August 13
  52. P A G E CLIENTS CARE ABOUT THIS •Performance is

    important for large projects, including open-source •Some clients really care about licenses •Clients care about project stability and longevity •Versioning: SemVer 15 15 Thursday, 29 August 13
  53. P A G E CLIENTS CARE ABOUT THIS •Performance is

    important for large projects, including open-source •Some clients really care about licenses •Clients care about project stability and longevity •Versioning: SemVer •Multiple contributors: Brazilian bus drivers are scary 15 15 Thursday, 29 August 13
  54. P A G E CLIENTS CARE ABOUT THIS •Performance is

    important for large projects, including open-source •Some clients really care about licenses •Clients care about project stability and longevity •Versioning: SemVer •Multiple contributors: Brazilian bus drivers are scary •Copyright: What if a major contributor has a bad day? 15 15 Thursday, 29 August 13
  55. P A G E CLIENTS CARE ABOUT THIS •Performance is

    important for large projects, including open-source •Some clients really care about licenses •Clients care about project stability and longevity •Versioning: SemVer •Multiple contributors: Brazilian bus drivers are scary •Copyright: What if a major contributor has a bad day? •Documentation: If only you know how to use it, you’re a big risk 15 15 Thursday, 29 August 13
  56. P A G E CLIENTS CARE ABOUT THIS •Performance is

    important for large projects, including open-source •Some clients really care about licenses •Clients care about project stability and longevity •Versioning: SemVer •Multiple contributors: Brazilian bus drivers are scary •Copyright: What if a major contributor has a bad day? •Documentation: If only you know how to use it, you’re a big risk •Support 15 15 Thursday, 29 August 13
  57. P A G E CLIENTS CARE ABOUT THIS •Performance is

    important for large projects, including open-source •Some clients really care about licenses •Clients care about project stability and longevity •Versioning: SemVer •Multiple contributors: Brazilian bus drivers are scary •Copyright: What if a major contributor has a bad day? •Documentation: If only you know how to use it, you’re a big risk •Support •Retainers 15 15 Thursday, 29 August 13
  58. P A G E CLIENTS CARE ABOUT THIS •Performance is

    important for large projects, including open-source •Some clients really care about licenses •Clients care about project stability and longevity •Versioning: SemVer •Multiple contributors: Brazilian bus drivers are scary •Copyright: What if a major contributor has a bad day? •Documentation: If only you know how to use it, you’re a big risk •Support •Retainers •Feature additions 15 15 Thursday, 29 August 13
  59. P A G E CLIENTS CARE ABOUT THIS •Performance is

    important for large projects, including open-source •Some clients really care about licenses •Clients care about project stability and longevity •Versioning: SemVer •Multiple contributors: Brazilian bus drivers are scary •Copyright: What if a major contributor has a bad day? •Documentation: If only you know how to use it, you’re a big risk •Support •Retainers •Feature additions •Adaptation 15 15 Thursday, 29 August 13
  60. P A G E CLIENTS CARE ABOUT THIS •Performance is

    important for large projects, including open-source •Some clients really care about licenses •Clients care about project stability and longevity •Versioning: SemVer •Multiple contributors: Brazilian bus drivers are scary •Copyright: What if a major contributor has a bad day? •Documentation: If only you know how to use it, you’re a big risk •Support •Retainers •Feature additions •Adaptation •Training 15 15 Thursday, 29 August 13
  61. P A G E ADHEARSION 2.4 •Released this morning •Full

    support for JRuby 16 16 Thursday, 29 August 13
  62. P A G E ADHEARSION 2.4 •Released this morning •Full

    support for JRuby •Lots of performance improvements 16 16 Thursday, 29 August 13
  63. P A G E ADHEARSION 2.4 •Released this morning •Full

    support for JRuby •Lots of performance improvements •Improves cross-engine compatibility 16 16 Thursday, 29 August 13
  64. P A G E ADHEARSION 2.4 •Released this morning •Full

    support for JRuby •Lots of performance improvements •Improves cross-engine compatibility •Adds some handy features 16 16 Thursday, 29 August 13
  65. P A G E ADHEARSION 2.4 •Released this morning •Full

    support for JRuby •Lots of performance improvements •Improves cross-engine compatibility •Adds some handy features •6 months in the making 16 16 Thursday, 29 August 13
  66. P A G E ADHEARSION 2.4 •Released this morning •Full

    support for JRuby •Lots of performance improvements •Improves cross-engine compatibility •Adds some handy features •6 months in the making •I’m really tired 16 16 Thursday, 29 August 13
  67. P A G E BUT IT’S JUST FOR BORING OLD

    PHONES.... 17 17 Thursday, 29 August 13
  68. P A G E BUT IT’S JUST FOR BORING OLD

    PHONES.... 17 17 Thursday, 29 August 13
  69. P A G E BUT IT’S JUST FOR BORING OLD

    PHONES.... 17 17 Thursday, 29 August 13
  70. P A G E BUT IT’S JUST FOR BORING OLD

    PHONES.... 17 17 Thursday, 29 August 13
  71. P A G E BUT IT’S JUST FOR BORING OLD

    PHONES.... 17 17 Thursday, 29 August 13
  72. P A G E BUT IT’S JUST FOR BORING OLD

    PHONES.... 17 Faster -> 17 Thursday, 29 August 13
  73. P A G E BUT IT’S JUST FOR BORING OLD

    PHONES.... 17 Faster -> 17 Thursday, 29 August 13
  74. P A G E BUT IT’S JUST FOR BORING OLD

    PHONES.... 17 Faster -> 17 Thursday, 29 August 13
  75. P A G E BUT IT’S JUST FOR BORING OLD

    PHONES.... 17 Faster -> 17 Thursday, 29 August 13
  76. P A G E BUT IT’S JUST FOR BORING OLD

    PHONES.... 17 Faster -> 17 Thursday, 29 August 13
  77. P A G E BUT IT’S JUST FOR BORING OLD

    PHONES.... 17 Faster -> 17 Thursday, 29 August 13
  78. P A G E THE NEW PHONE IS EVERYWHERE 21

    21 Thursday, 29 August 13
  79. P A G E THE NEW PHONE IS EVERYWHERE •Relevant

    •Specific 21 21 Thursday, 29 August 13
  80. P A G E THE NEW PHONE IS EVERYWHERE •Relevant

    •Specific •Contextual 21 21 Thursday, 29 August 13
  81. P A G E THE NEW PHONE IS EVERYWHERE •Relevant

    •Specific •Contextual •Appropriate 21 21 Thursday, 29 August 13
  82. P A G E THE NEW PHONE IS EVERYWHERE •Relevant

    •Specific •Contextual •Appropriate 21 21 Thursday, 29 August 13
  83. P A G E THE NEW PHONE IS EVERYWHERE •Relevant

    •Specific •Contextual •Appropriate 21 ? 21 Thursday, 29 August 13
  84. P A G E THE NEW PHONE IS EVERYWHERE •Relevant

    •Specific •Contextual •Appropriate 21 ? “Communicating isn’t going to be what you’re doing - it’s what you’ll be doing while you’re doing something else” Geoff Hollingworth Ericsson Head of AT&T Foundry 21 Thursday, 29 August 13
  85. P A G E THE NEW PHONE IS EVERYWHERE •Relevant

    •Specific •Contextual •Appropriate 21 ? Contextual! That means embedded in other interfaces. “Communicating isn’t going to be what you’re doing - it’s what you’ll be doing while you’re doing something else” Geoff Hollingworth Ericsson Head of AT&T Foundry 21 Thursday, 29 August 13
  86. P A G E EXAMPLES: INCIDENT RESPONSE •Immediate communication face-

    to-face •Relevant people without phone numbers 22 22 Thursday, 29 August 13
  87. P A G E EXAMPLES: INCIDENT RESPONSE •Immediate communication face-

    to-face •Relevant people without phone numbers •Rich presence 22 22 Thursday, 29 August 13
  88. P A G E EXAMPLES: INCIDENT RESPONSE •Immediate communication face-

    to-face •Relevant people without phone numbers •Rich presence •Multi-modal communication, including text chat, shared files, etc 22 22 Thursday, 29 August 13
  89. P A G E EXAMPLES: INCIDENT RESPONSE •Immediate communication face-

    to-face •Relevant people without phone numbers •Rich presence •Multi-modal communication, including text chat, shared files, etc •Metadata 22 22 Thursday, 29 August 13
  90. P A G E EXAMPLES: MEDICAL RECORD MANAGEMENT •Automate medical

    claims •Secure caller authentication •Reuse primary auth from Website •Verify using voice biometrics •Cross-check against location •Call recording/transcription •Medical advice transcribed and added to file •Auditing and quality assurance 23 23 Thursday, 29 August 13
  91. P A G E EXAMPLES: DISTRIBUTED CALL CENTRE •A call

    centre in a web browser •Chrome + headset + internet •Relieve some traffic problems by encouraging more home working? 24 24 Thursday, 29 August 13
  92. P A G E WHAT IS WEBRTC? •Spec enabling a

    web browser to access the camera and microphone •Standards for negotiating connections between two peers 25 25 Thursday, 29 August 13
  93. P A G E WHAT IS WEBRTC? •JavaScript Browser API

    for real-time communication (voice & video) 26 26 Thursday, 29 August 13
  94. P A G E WHAT IS WEBRTC? •JavaScript Browser API

    for real-time communication (voice & video) •Standards for interoperability •Opus, G.711, H.263* •SDP* •ICE/STUN/TURN •DTLS-SRTP 26 * Probably 26 Thursday, 29 August 13
  95. P A G E WHAT IS WEBRTC? •JavaScript Browser API

    for real-time communication (voice & video) •Standards for interoperability •Opus, G.711, H.263* •SDP* •ICE/STUN/TURN •DTLS-SRTP 26 * Probably •Mix of several somewhat- related projects: •WebRTC (W3C) - JavaScript APIs •RTC-WEB (IETF) - Codecs, Security, Interop •MMUSIC (IETF) - ICE (NAT traversal), SDP 26 Thursday, 29 August 13
  96. P A G E WHAT IS WEBRTC NOT? 27 27

    Thursday, 29 August 13
  97. P A G E WHAT IS WEBRTC NOT? 27 Telephones

    in Web Browsers! 27 Thursday, 29 August 13
  98. P A G E WHAT IS WEBRTC NOT? 27 Telephones

    in Web Browsers! Morse Code in Telephones! 27 Thursday, 29 August 13
  99. CAN YOU SPEAK MAGIC? 28 http:// Get m e Bob

    please! SDP : v=0 o=alice 20518 0 IN IP4 0.0.0.0 s=- t=0 0 m =audio 54609 RTP/SAVPF 109 Alice Bob 28 Thursday, 29 August 13
  100. CAN YOU SPEAK MAGIC? 28 http:// Get m e Bob

    please! SDP : v=0 o=alice 20518 0 IN IP4 0.0.0.0 s=- t=0 0 m =audio 54609 RTP/SAVPF 109 Alice Bob 28 Thursday, 29 August 13
  101. CAN YOU SPEAK MAGIC? 28 http:// Get m e Bob

    please! SDP : v=0 o=alice 20518 0 IN IP4 0.0.0.0 s=- t=0 0 m =audio 54609 RTP/SAVPF 109 SDP : v=0 o=bob 19915 0 IN IP4 0.0.0.0 s=- t=0 0 m =audio 61001 RTP/SAV PF 109 Alice Bob 28 Thursday, 29 August 13
  102. CAN YOU SPEAK MAGIC? 28 http:// Get m e Bob

    please! SDP : v=0 o=alice 20518 0 IN IP4 0.0.0.0 s=- t=0 0 m =audio 54609 RTP/SAVPF 109 SDP : v=0 o=bob 19915 0 IN IP4 0.0.0.0 s=- t=0 0 m =audio 61001 RTP/SAV PF 109 Alice Bob SRTP SRTP 28 Thursday, 29 August 13
  103. CAN YOU SPEAK MAGIC? 29 SDP : v=0 o=bob 19915

    0 IN IP4 0.0.0.0 s=- t=0 0 m =audio 61001 RTP/SAV PF 109 Alice Bob SRTP SRTP Get m e Bob please! SDP : v=0 o=alice 20518 0 IN IP4 0.0.0.0 s=- t=0 0 m =audio 54609 RTP/SAVPF 109 29 Thursday, 29 August 13
  104. CAN YOU SPEAK MAGIC? 30 Alice Bob Get m e

    Bob please! SDP : v=0 o=alice 20518 0 IN IP4 0.0.0.0 s=- t=0 0 m =audio 54609 RTP/SAVPF 109 30 Thursday, 29 August 13
  105. CAN YOU SPEAK MAGIC? 30 A lice Calling! SDP: v=0

    o=freesw itch 19915 0 IN IP4 0.0.0.0 s=- t=0 0 m =audio 61001 RTP/SAVPF 109 Alice Bob Get m e Bob please! SDP : v=0 o=alice 20518 0 IN IP4 0.0.0.0 s=- t=0 0 m =audio 54609 RTP/SAVPF 109 30 Thursday, 29 August 13
  106. CAN YOU SPEAK MAGIC? 30 A lice Calling! SDP: v=0

    o=freesw itch 19915 0 IN IP4 0.0.0.0 s=- t=0 0 m =audio 61001 RTP/SAVPF 109 Alice Bob Get m e Bob please! SDP : v=0 o=alice 20518 0 IN IP4 0.0.0.0 s=- t=0 0 m =audio 54609 RTP/SAVPF 109 30 Thursday, 29 August 13
  107. CAN YOU SPEAK MAGIC? 30 A lice Calling! SDP: v=0

    o=freesw itch 19915 0 IN IP4 0.0.0.0 s=- t=0 0 m =audio 61001 RTP/SAVPF 109 Alice Bob Get m e Bob please! SDP : v=0 o=alice 20518 0 IN IP4 0.0.0.0 s=- t=0 0 m =audio 54609 RTP/SAVPF 109 30 Thursday, 29 August 13
  108. CAN YOU SPEAK MAGIC? 30 A lice Calling! SDP: v=0

    o=freesw itch 19915 0 IN IP4 0.0.0.0 s=- t=0 0 m =audio 61001 RTP/SAVPF 109 Alice Bob SRTP SRTP Get m e Bob please! SDP : v=0 o=alice 20518 0 IN IP4 0.0.0.0 s=- t=0 0 m =audio 54609 RTP/SAVPF 109 30 Thursday, 29 August 13
  109. CAN YOU SPEAK MAGIC? GOTCHAS •The spec isn’t done :(

    •HUGE SDPs! 31 31 Thursday, 29 August 13
  110. CAN YOU SPEAK MAGIC? GOTCHAS •The spec isn’t done :(

    •HUGE SDPs! •SDP is an opaque blob to apps 31 31 Thursday, 29 August 13
  111. CAN YOU SPEAK MAGIC? GOTCHAS •The spec isn’t done :(

    •HUGE SDPs! •SDP is an opaque blob to apps •Mandatory DTLS-SRTP 31 31 Thursday, 29 August 13
  112. CAN YOU SPEAK MAGIC? GOTCHAS •The spec isn’t done :(

    •HUGE SDPs! •SDP is an opaque blob to apps •Mandatory DTLS-SRTP •MTI video codecs still being fought (VP8/H.264) 31 31 Thursday, 29 August 13
  113. CAN YOU SPEAK MAGIC? GOTCHAS •The spec isn’t done :(

    •HUGE SDPs! •SDP is an opaque blob to apps •Mandatory DTLS-SRTP •MTI video codecs still being fought (VP8/H.264) •The spec isn’t done. 31 31 Thursday, 29 August 13
  114. CAN YOU SPEAK MAGIC? WEBRTC SUPPORT* 32 * “Support” is

    a moving target - not everything works 32 Thursday, 29 August 13
  115. CAN YOU SPEAK MAGIC? WEBRTC SUPPORT* •Client-Side 32 * “Support”

    is a moving target - not everything works 32 Thursday, 29 August 13
  116. CAN YOU SPEAK MAGIC? WEBRTC SUPPORT* •Client-Side •Chrome 32 *

    “Support” is a moving target - not everything works 32 Thursday, 29 August 13
  117. CAN YOU SPEAK MAGIC? WEBRTC SUPPORT* •Client-Side •Chrome •Firefox 32

    * “Support” is a moving target - not everything works 32 Thursday, 29 August 13
  118. CAN YOU SPEAK MAGIC? WEBRTC SUPPORT* •Client-Side •Chrome •Firefox •Opera

    (sorta) 32 * “Support” is a moving target - not everything works 32 Thursday, 29 August 13
  119. CAN YOU SPEAK MAGIC? WEBRTC SUPPORT* •Client-Side •Chrome •Firefox •Opera

    (sorta) 32 * “Support” is a moving target - not everything works •Server-Side 32 Thursday, 29 August 13
  120. CAN YOU SPEAK MAGIC? WEBRTC SUPPORT* •Client-Side •Chrome •Firefox •Opera

    (sorta) 32 * “Support” is a moving target - not everything works •Server-Side •FreeSWITCH (1.4+) 32 Thursday, 29 August 13
  121. CAN YOU SPEAK MAGIC? WEBRTC SUPPORT* •Client-Side •Chrome •Firefox •Opera

    (sorta) 32 * “Support” is a moving target - not everything works •Server-Side •FreeSWITCH (1.4+) •Asterisk (11+) 32 Thursday, 29 August 13
  122. CAN YOU SPEAK MAGIC? WEBRTC SUPPORT* •Client-Side •Chrome •Firefox •Opera

    (sorta) 32 * “Support” is a moving target - not everything works •Server-Side •FreeSWITCH (1.4+) •Asterisk (11+) •Commercial Offerings 32 Thursday, 29 August 13
  123. CAN YOU SPEAK MAGIC? WEBRTC SUPPORT* •Client-Side •Chrome •Firefox •Opera

    (sorta) 32 * “Support” is a moving target - not everything works •Server-Side •FreeSWITCH (1.4+) •Asterisk (11+) •Commercial Offerings •Phono Gateway 32 Thursday, 29 August 13
  124. CAN YOU SPEAK MAGIC? WEBRTC SUPPORT* •Client-Side •Chrome •Firefox •Opera

    (sorta) 32 * “Support” is a moving target - not everything works •Server-Side •FreeSWITCH (1.4+) •Asterisk (11+) •Commercial Offerings •Phono Gateway •TokBox 32 Thursday, 29 August 13
  125. CAN YOU SPEAK MAGIC? WEBRTC SUPPORT* •Client-Side •Chrome •Firefox •Opera

    (sorta) 32 * “Support” is a moving target - not everything works •Server-Side •FreeSWITCH (1.4+) •Asterisk (11+) •Commercial Offerings •Phono Gateway •TokBox •many others... 32 Thursday, 29 August 13
  126. P A G E WHAT TOOLS? 33 Call Routing/Bridging sipML5

    Strophe.js 33 Thursday, 29 August 13
  127. P A G E WHAT TOOLS? 33 Call Routing/Bridging sipML5

    Strophe.js 33 Thursday, 29 August 13
  128. P A G E WHAT TOOLS? 33 Call Routing/Bridging sipML5

    Strophe.js 33 Thursday, 29 August 13
  129. P A G E WHAT TOOLS? 33 Call Routing/Bridging sipML5

    Strophe.js 33 Thursday, 29 August 13
  130. P A G E WHAT TOOLS? 33 Call Routing/Bridging sipML5

    Strophe.js 33 Thursday, 29 August 13
  131. P A G E WHAT TOOLS? 33 Call Routing/Bridging sipML5

    Strophe.js 33 Thursday, 29 August 13
  132. P A G E WHAT TOOLS? 33 Call Routing/Bridging In-Call

    App Functionality sipML5 Strophe.js 33 Thursday, 29 August 13
  133. P A G E WHAT TOOLS? 33 Call Routing/Bridging In-Call

    App Functionality XMPP Messaging/Presence sipML5 Strophe.js 33 Thursday, 29 August 13
  134. P A G E WHAT TOOLS? 33 Call Routing/Bridging In-Call

    App Functionality XMPP Messaging/Presence sipML5 Strophe.js 33 Thursday, 29 August 13
  135. P A G E WHAT TOOLS? 33 Call Routing/Bridging In-Call

    App Functionality XMPP Messaging/Presence sipML5 Strophe.js 33 Thursday, 29 August 13
  136. P A G E WHAT TOOLS? 33 Call Routing/Bridging In-Call

    App Functionality XMPP Messaging/Presence Third Party Messages sipML5 Strophe.js 33 Thursday, 29 August 13
  137. P A G E WHAT TOOLS? 33 Call Routing/Bridging In-Call

    App Functionality XMPP Messaging/Presence Third Party Messages sipML5 Strophe.js 33 Thursday, 29 August 13
  138. P A G E WHAT TOOLS? 33 Call Routing/Bridging In-Call

    App Functionality XMPP Messaging/Presence Third Party Messages sipML5 Strophe.js 33 Thursday, 29 August 13
  139. P A G E WHAT TOOLS? 33 Call Routing/Bridging In-Call

    App Functionality LDAP User Authentication XMPP Messaging/Presence Third Party Messages sipML5 Strophe.js 33 Thursday, 29 August 13
  140. P A G E WHAT TOOLS? 33 Call Routing/Bridging In-Call

    App Functionality LDAP User Authentication XMPP Messaging/Presence Third Party Messages sipML5 Strophe.js 33 Thursday, 29 August 13
  141. P A G E WHAT TOOLS? 33 Call Routing/Bridging In-Call

    App Functionality Web UI Contextual/Visual Interface LDAP User Authentication XMPP Messaging/Presence Third Party Messages sipML5 Strophe.js 33 Thursday, 29 August 13
  142. P A G E WHAT TOOLS? 33 Call Routing/Bridging In-Call

    App Functionality Web UI Contextual/Visual Interface LDAP User Authentication XMPP Messaging/Presence Third Party Messages sipML5 Strophe.js 33 Thursday, 29 August 13
  143. P A G E WHAT TOOLS? 33 Call Routing/Bridging In-Call

    App Functionality Web UI Contextual/Visual Interface LDAP User Authentication XMPP Messaging/Presence Third Party Messages sipML5 Strophe.js 33 Thursday, 29 August 13
  144. P A G E WHAT TOOLS? 33 Call Routing/Bridging In-Call

    App Functionality Web UI Contextual/Visual Interface LDAP User Authentication XMPP Messaging/Presence Third Party Messages sipML5 Strophe.js 33 Thursday, 29 August 13
  145. P A G E ADHEARSION IS FOCUSSED HERE 34 Call

    Routing/Bridging In-Call App Functionality Web UI Contextual/Visual Interface LDAP User Authentication XMPP Messaging/Presence Third Party Messages 34 Thursday, 29 August 13
  146. P A G E ADHEARSION IS FOCUSSED HERE •Doesn’t try

    to do too much 34 Call Routing/Bridging In-Call App Functionality Web UI Contextual/Visual Interface LDAP User Authentication XMPP Messaging/Presence Third Party Messages 34 Thursday, 29 August 13
  147. P A G E ADHEARSION IS FOCUSSED HERE •Doesn’t try

    to do too much •Doesn’t handle media or direct signaling 34 Call Routing/Bridging In-Call App Functionality Web UI Contextual/Visual Interface LDAP User Authentication XMPP Messaging/Presence Third Party Messages 34 Thursday, 29 August 13
  148. P A G E ADHEARSION IS FOCUSSED HERE •Doesn’t try

    to do too much •Doesn’t handle media or direct signaling •Doesn’t maintain any permanent state: calls out to other services 34 Call Routing/Bridging In-Call App Functionality Web UI Contextual/Visual Interface LDAP User Authentication XMPP Messaging/Presence Third Party Messages 34 Thursday, 29 August 13
  149. P A G E ADHEARSION IS FOCUSSED HERE •Doesn’t try

    to do too much •Doesn’t handle media or direct signaling •Doesn’t maintain any permanent state: calls out to other services 34 Call Routing/Bridging In-Call App Functionality Web UI Contextual/Visual Interface LDAP User Authentication XMPP Messaging/Presence Third Party Messages 34 Thursday, 29 August 13
  150. P A G E ADHEARSION IS FOCUSSED HERE •Doesn’t try

    to do too much •Doesn’t handle media or direct signaling •Doesn’t maintain any permanent state: calls out to other services •This is important for a successful open source project, just like for a good app architecture. 34 Call Routing/Bridging In-Call App Functionality Web UI Contextual/Visual Interface LDAP User Authentication XMPP Messaging/Presence Third Party Messages 34 Thursday, 29 August 13
  151. P A G E ADHEARSION IS FOCUSSED HERE •Doesn’t try

    to do too much •Doesn’t handle media or direct signaling •Doesn’t maintain any permanent state: calls out to other services •This is important for a successful open source project, just like for a good app architecture. •When your open-source project has multiple concerns, it becomes more difficult to maintain. 34 Call Routing/Bridging In-Call App Functionality Web UI Contextual/Visual Interface LDAP User Authentication XMPP Messaging/Presence Third Party Messages 34 Thursday, 29 August 13
  152. P A G E ADHEARSION IS FOCUSSED HERE •Doesn’t try

    to do too much •Doesn’t handle media or direct signaling •Doesn’t maintain any permanent state: calls out to other services •This is important for a successful open source project, just like for a good app architecture. •When your open-source project has multiple concerns, it becomes more difficult to maintain. •Scaling an open-source team is more difficult than an internal team 34 Call Routing/Bridging In-Call App Functionality Web UI Contextual/Visual Interface LDAP User Authentication XMPP Messaging/Presence Third Party Messages 34 Thursday, 29 August 13
  153. P A G E ADHEARSION 3? 35 Call Routing/Bridging In-Call

    App Functionality Web UI Contextual/Visual Interface LDAP User Authentication XMPP Messaging/Presence Third Party Messages 35 Thursday, 29 August 13
  154. P A G E ADHEARSION 3? •Better support for WebRTC

    and the kind of applications built with it 35 Call Routing/Bridging In-Call App Functionality Web UI Contextual/Visual Interface LDAP User Authentication XMPP Messaging/Presence Third Party Messages 35 Thursday, 29 August 13
  155. P A G E ADHEARSION 3? •Better support for WebRTC

    and the kind of applications built with it •Greater modularisation and choice of components 35 Call Routing/Bridging In-Call App Functionality Web UI Contextual/Visual Interface LDAP User Authentication XMPP Messaging/Presence Third Party Messages 35 Thursday, 29 August 13
  156. P A G E ADHEARSION 3? •Better support for WebRTC

    and the kind of applications built with it •Greater modularisation and choice of components •Easier integration into Service Oriented Architectures 35 Call Routing/Bridging In-Call App Functionality Web UI Contextual/Visual Interface LDAP User Authentication XMPP Messaging/Presence Third Party Messages 35 Thursday, 29 August 13
  157. P A G E ADHEARSION 3? •Better support for WebRTC

    and the kind of applications built with it •Greater modularisation and choice of components •Easier integration into Service Oriented Architectures •Simpler, faster, more robust and more flexible 35 Call Routing/Bridging In-Call App Functionality Web UI Contextual/Visual Interface LDAP User Authentication XMPP Messaging/Presence Third Party Messages 35 Thursday, 29 August 13
  158. P A G E ADHEARSION 3? •Better support for WebRTC

    and the kind of applications built with it •Greater modularisation and choice of components •Easier integration into Service Oriented Architectures •Simpler, faster, more robust and more flexible •Only just starting to figure out what this might look like 35 Call Routing/Bridging In-Call App Functionality Web UI Contextual/Visual Interface LDAP User Authentication XMPP Messaging/Presence Third Party Messages 35 Thursday, 29 August 13
  159. P A G E ADHEARSION 3? •Better support for WebRTC

    and the kind of applications built with it •Greater modularisation and choice of components •Easier integration into Service Oriented Architectures •Simpler, faster, more robust and more flexible •Only just starting to figure out what this might look like •Contributions would be lovely, especially feedback and ideas 35 Call Routing/Bridging In-Call App Functionality Web UI Contextual/Visual Interface LDAP User Authentication XMPP Messaging/Presence Third Party Messages 35 Thursday, 29 August 13