Share
Embed
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
Transcript
204 slides
-
P A G E Adhearsion 3: the future of Ruby
communications Ben Langfeld @benlangfeld [email protected] 1 1 Thursday, 29 August 13 -
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 -
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 -
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 -
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 -
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 -
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 -
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 -
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 -
P A G E CELLULOID FOR AWESOME CONCURRENCY 7 7
Thursday, 29 August 13 -
P A G E CELLULOID FOR AWESOME CONCURRENCY •Celluloid implements
the actor pattern 7 7 Thursday, 29 August 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 7 7 Thursday, 29 August 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 7 7 Thursday, 29 August 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 -
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 -
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 -
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 -
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 -
P A G E CELLULOID FEATURES •Concurrent objects 9 9
Thursday, 29 August 13 -
P A G E CELLULOID FEATURES •Concurrent objects •ATOM 9
9 Thursday, 29 August 13 -
P A G E CELLULOID FEATURES •Concurrent objects •ATOM •Simple
actors 9 9 Thursday, 29 August 13 -
P A G E CELLULOID FEATURES •Concurrent objects •ATOM •Simple
actors •Async calls 9 9 Thursday, 29 August 13 -
P A G E CELLULOID FEATURES •Concurrent objects •ATOM •Simple
actors •Async calls •Futures 9 9 Thursday, 29 August 13 -
P A G E CELLULOID FEATURES •Concurrent objects •ATOM •Simple
actors •Async calls •Futures •Linking 9 9 Thursday, 29 August 13 -
P A G E CELLULOID FEATURES •Concurrent objects •ATOM •Simple
actors •Async calls •Futures •Linking •Supervisors 9 9 Thursday, 29 August 13 -
P A G E CELLULOID FEATURES •Concurrent objects •ATOM •Simple
actors •Async calls •Futures •Linking •Supervisors •Pools 9 9 Thursday, 29 August 13 -
P A G E CELLULOID FEATURES •Concurrent objects •ATOM •Simple
actors •Async calls •Futures •Linking •Supervisors •Pools •Timers 9 9 Thursday, 29 August 13 -
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 -
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 -
P A G E HOW DOES ADHEARSION WORK? 10 10
Thursday, 29 August 13 -
P A G E HOW DOES ADHEARSION WORK? •Represents phone
calls as actors 10 10 Thursday, 29 August 13 -
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 -
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 -
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 -
P A G E JRUBY FOR PARALLELISM AND SPEED 11
11 Thursday, 29 August 13 -
P A G E JRUBY FOR PARALLELISM AND SPEED •JIT
11 11 Thursday, 29 August 13 -
P A G E JRUBY FOR PARALLELISM AND SPEED •JIT
•Turns Ruby code into JVM bytecode 11 11 Thursday, 29 August 13 -
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 -
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 -
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 -
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 -
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 -
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 -
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 -
P A G E JRUBY FOR PARALLELISM AND SPEED 12
12 Thursday, 29 August 13 -
P A G E JRUBY FOR PARALLELISM AND SPEED •Garbage
collector 12 12 Thursday, 29 August 13 -
P A G E JRUBY FOR PARALLELISM AND SPEED •Garbage
collector •Generational 12 12 Thursday, 29 August 13 -
P A G E JRUBY FOR PARALLELISM AND SPEED •Garbage
collector •Generational •Tunable 12 12 Thursday, 29 August 13 -
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 -
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 -
P A G E JRUBY FOR PARALLELISM AND SPEED •No
GIL 13 13 Thursday, 29 August 13 -
P A G E JRUBY FOR PARALLELISM AND SPEED •No
GIL 13 Diagram credit to @igvita 13 Thursday, 29 August 13 -
P A G E JRUBY FOR PARALLELISM AND SPEED •Tools!
14 14 Thursday, 29 August 13 -
P A G E CLIENTS CARE ABOUT THIS 15 15
Thursday, 29 August 13 -
P A G E CLIENTS CARE ABOUT THIS •Performance is
important for large projects, including open-source 15 15 Thursday, 29 August 13 -
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 -
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 -
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 -
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 -
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 -
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 -
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 -
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 -
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 -
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 -
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 -
P A G E ADHEARSION 2.4 •Released this morning 16
16 Thursday, 29 August 13 -
P A G E ADHEARSION 2.4 •Released this morning •Full
support for JRuby 16 16 Thursday, 29 August 13 -
P A G E ADHEARSION 2.4 •Released this morning •Full
support for JRuby •Lots of performance improvements 16 16 Thursday, 29 August 13 -
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 -
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 -
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 -
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 -
P A G E BUT IT’S JUST FOR BORING OLD
PHONES.... 17 17 Thursday, 29 August 13 -
P A G E BUT IT’S JUST FOR BORING OLD
PHONES.... 17 17 Thursday, 29 August 13 -
P A G E BUT IT’S JUST FOR BORING OLD
PHONES.... 17 17 Thursday, 29 August 13 -
P A G E BUT IT’S JUST FOR BORING OLD
PHONES.... 17 17 Thursday, 29 August 13 -
P A G E BUT IT’S JUST FOR BORING OLD
PHONES.... 17 17 Thursday, 29 August 13 -
P A G E BUT IT’S JUST FOR BORING OLD
PHONES.... 17 Faster -> 17 Thursday, 29 August 13 -
P A G E BUT IT’S JUST FOR BORING OLD
PHONES.... 17 Faster -> 17 Thursday, 29 August 13 -
P A G E BUT IT’S JUST FOR BORING OLD
PHONES.... 17 Faster -> 17 Thursday, 29 August 13 -
P A G E BUT IT’S JUST FOR BORING OLD
PHONES.... 17 Faster -> 17 Thursday, 29 August 13 -
P A G E BUT IT’S JUST FOR BORING OLD
PHONES.... 17 Faster -> 17 Thursday, 29 August 13 -
P A G E BUT IT’S JUST FOR BORING OLD
PHONES.... 17 Faster -> 17 Thursday, 29 August 13 -
P A G E THEN WE GOT... 18 18 Thursday,
29 August 13 -
P A G E THE NEW PHONE IS EVERYWHERE 21
21 Thursday, 29 August 13 -
P A G E THE NEW PHONE IS EVERYWHERE •Relevant
21 21 Thursday, 29 August 13 -
P A G E THE NEW PHONE IS EVERYWHERE •Relevant
•Specific 21 21 Thursday, 29 August 13 -
P A G E THE NEW PHONE IS EVERYWHERE •Relevant
•Specific •Contextual 21 21 Thursday, 29 August 13 -
P A G E THE NEW PHONE IS EVERYWHERE •Relevant
•Specific •Contextual •Appropriate 21 21 Thursday, 29 August 13 -
P A G E THE NEW PHONE IS EVERYWHERE •Relevant
•Specific •Contextual •Appropriate 21 21 Thursday, 29 August 13 -
P A G E THE NEW PHONE IS EVERYWHERE •Relevant
•Specific •Contextual •Appropriate 21 ? 21 Thursday, 29 August 13 -
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 -
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 -
P A G E EXAMPLES: INCIDENT RESPONSE 22 22 Thursday,
29 August 13 -
P A G E EXAMPLES: INCIDENT RESPONSE •Immediate communication face-
to-face 22 22 Thursday, 29 August 13 -
P A G E EXAMPLES: INCIDENT RESPONSE •Immediate communication face-
to-face •Relevant people without phone numbers 22 22 Thursday, 29 August 13 -
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 -
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 -
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 -
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 -
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 -
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 -
P A G E WHAT IS WEBRTC? 26 26 Thursday,
29 August 13 -
P A G E WHAT IS WEBRTC? •JavaScript Browser API
for real-time communication (voice & video) 26 26 Thursday, 29 August 13 -
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 -
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 -
P A G E WHAT IS WEBRTC NOT? 27 27
Thursday, 29 August 13 -
P A G E WHAT IS WEBRTC NOT? 27 Telephones
in Web Browsers! 27 Thursday, 29 August 13 -
P A G E WHAT IS WEBRTC NOT? 27 Telephones
in Web Browsers! Morse Code in Telephones! 27 Thursday, 29 August 13 -
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 -
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 -
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 -
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 -
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 -
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 -
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 -
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 -
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 -
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 -
CAN YOU SPEAK MAGIC? GOTCHAS •The spec isn’t done :(
31 31 Thursday, 29 August 13 -
CAN YOU SPEAK MAGIC? GOTCHAS •The spec isn’t done :(
•HUGE SDPs! 31 31 Thursday, 29 August 13 -
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 -
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 -
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 -
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 -
CAN YOU SPEAK MAGIC? WEBRTC SUPPORT* 32 * “Support” is
a moving target - not everything works 32 Thursday, 29 August 13 -
CAN YOU SPEAK MAGIC? WEBRTC SUPPORT* •Client-Side 32 * “Support”
is a moving target - not everything works 32 Thursday, 29 August 13 -
CAN YOU SPEAK MAGIC? WEBRTC SUPPORT* •Client-Side •Chrome 32 *
“Support” is a moving target - not everything works 32 Thursday, 29 August 13 -
CAN YOU SPEAK MAGIC? WEBRTC SUPPORT* •Client-Side •Chrome •Firefox 32
* “Support” is a moving target - not everything works 32 Thursday, 29 August 13 -
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 -
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 -
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 -
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 -
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 -
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 -
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 -
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 -
P A G E WHAT TOOLS? 33 33 Thursday, 29
August 13 -
P A G E WHAT TOOLS? 33 33 Thursday, 29
August 13 -
P A G E WHAT TOOLS? 33 33 Thursday, 29
August 13 -
P A G E WHAT TOOLS? 33 Strophe.js 33 Thursday,
29 August 13 -
P A G E WHAT TOOLS? 33 sipML5 Strophe.js 33
Thursday, 29 August 13 -
P A G E WHAT TOOLS? 33 sipML5 Strophe.js 33
Thursday, 29 August 13 -
P A G E WHAT TOOLS? 33 sipML5 Strophe.js 33
Thursday, 29 August 13 -
P A G E WHAT TOOLS? 33 sipML5 Strophe.js 33
Thursday, 29 August 13 -
P A G E WHAT TOOLS? 33 Call Routing/Bridging sipML5
Strophe.js 33 Thursday, 29 August 13 -
P A G E WHAT TOOLS? 33 Call Routing/Bridging sipML5
Strophe.js 33 Thursday, 29 August 13 -
P A G E WHAT TOOLS? 33 Call Routing/Bridging sipML5
Strophe.js 33 Thursday, 29 August 13 -
P A G E WHAT TOOLS? 33 Call Routing/Bridging sipML5
Strophe.js 33 Thursday, 29 August 13 -
P A G E WHAT TOOLS? 33 Call Routing/Bridging sipML5
Strophe.js 33 Thursday, 29 August 13 -
P A G E WHAT TOOLS? 33 Call Routing/Bridging sipML5
Strophe.js 33 Thursday, 29 August 13 -
P A G E WHAT TOOLS? 33 Call Routing/Bridging In-Call
App Functionality sipML5 Strophe.js 33 Thursday, 29 August 13 -
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 -
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 -
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 -
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 -
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 -
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 -
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 -
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 -
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 -
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 -
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 -
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 -
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 -
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 -
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 -
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 -
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 -
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 -
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 -
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 -
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 -
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 -
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 -
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 -
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 -
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 -
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 -
P A G E INTERESTED IN MORE? 36 36 Thursday,
29 August 13