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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
•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
•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
•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
•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
•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
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
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
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
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
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
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
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
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
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
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
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
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
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
•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
•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
to-face •Relevant people without phone numbers •Rich presence •Multi-modal communication, including text chat, shared files, etc 22 22 Thursday, 29 August 13
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
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
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
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
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
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
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
•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
(sorta) 32 * “Support” is a moving target - not everything works •Server-Side •FreeSWITCH (1.4+) •Asterisk (11+) •Commercial Offerings 32 Thursday, 29 August 13
App Functionality Web UI Contextual/Visual Interface LDAP User Authentication XMPP Messaging/Presence Third Party Messages sipML5 Strophe.js 33 Thursday, 29 August 13
App Functionality Web UI Contextual/Visual Interface LDAP User Authentication XMPP Messaging/Presence Third Party Messages sipML5 Strophe.js 33 Thursday, 29 August 13
App Functionality Web UI Contextual/Visual Interface LDAP User Authentication XMPP Messaging/Presence Third Party Messages sipML5 Strophe.js 33 Thursday, 29 August 13
App Functionality Web UI Contextual/Visual Interface LDAP User Authentication XMPP Messaging/Presence Third Party Messages sipML5 Strophe.js 33 Thursday, 29 August 13
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
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
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
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
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
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
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
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
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
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
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
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
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
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