Using Shtoom for VoIP
Created: 20/04/05 by MarkShuttleworth
This spec describes the use of shtoom to provide Voice Over IP (VoIP) services to Ubuntu users. It is envisaged that Breezy will include out of the box support for VoIP with shtoom, allowing Breezy users to call one another over the Internet, free of charge.
VoIP is likely to become a very widely used technology, and it would be a useful feature for Ubuntu users if it worked well out of the box. The first goal would be for ubuntu-to-ubuntu calls to work seamlessly, then we would look at interoperability with other VoIP providers such as Free World Dialup, and finally connecting these calls to traditional POTS (plain Old Telephone Service) numbers.
Scope and Use Cases
- Ken installs Ubuntu and wishes to register with dotUbuntu. He runs the dotUbuntu registration agent which registers him with the system and creates the requisite dotfiles that configure shtoom on his system.
Ken is an Ubuntu user. He wishes to phone his friend Tony, who is also an Ubuntu user. He should be able to enter Tony's dotUbuntu email address into shtoom, which would then route the call correctly.
VoIP support entails more than just a VoIP client. The following items need to be considered and specified:
- Navigating through firewalls, and other call routing issues. We should examine SIP and other session management protocols. Where a firewall is based on Ubuntu, we can provide basic gateway functionality by providing a UPnP server for Ubuntu.
Directory services. It should be possible to contact someone based on their name or email address. Where Ubuntu's VoIP is interoperable with other services, that interop should extend to their directory services as well. dotUbuntu will probably end up running SER (SIP Express Router). When a user registers with dotUbuntu the new username and password is pushed to SER, and then the user is live. The authentication information used in SIP uses HTTP Digest auth - it would probably be good if the dotUbuntu client used SSL to protect the details.
- Enhanced services, such as conference calls, should be feasible.
- dotUbuntu runs its own conferencing software, so audio streams would be going via Canonical servers. This has scalability problems, and Canonical would need to have a charging model.
- ad hoc conferencing - end users run their own conferencing, either by running their own conferencing software, or having this integrated into the shtoom client software. This needs "click'n'drool" configuration.
Shtoom needs to be uploaded to the Ubuntu archive. It needs to be seeded into main with the correct frontends.
ser needs to be packaged, uploaded and seeded. It needs to be installed on a dedicated server in the data center and configured to be able to talk to launchpad for authentication.
We need to be able to automatically configure shtoom to talk to our service. We've suggested that a separate client could be used for this, but it's also possible that we could just configure shtoom by default to talk to dotUbuntu, and then simply prompt for the launchpad login and password. This will be broken out into the DotUbuntuRegistrationClient spec.
src:shtoom - shtoom is already packaged outside of the archive. (See http://people.ubuntu.com/~daf/packages/.) It needs to be checked and then uploaded.
ser - needs packaging for servers/dotUbuntu; looks like a relatively trivial task.
pyalsaaudio - already in universe.
- codecs... - already in universe.
- dotUbuntu client.
User Interface Requirements
dotUbuntu registration client - DotUbuntuRegistrationClient
- shtoom (gnome/gtk)/kde/text interface packages; UI needs HIG love, and support for having notification of calls in the gnome / kde panels.
reasonable alsa configuration interface - this should come from AudioInfrastructure, which also aims to solve the problems inherent with multiple device audio access currently.
Skype support: Skype uses its own magic special sauce protocol, and interop isn't possible. I'd imagine that eventually, Skype will have a SIP<->Skype gateway.
- shtoom may not work with alsa if dmix is enabled !
ALSA lib pcm_dmix.c:812:(snd_pcm_dmix_open) The dmix plugin supports only playback stream ( contact LionelDricot if you are interested in more debug output)
Interesting development to track
Ekiga (formerly GnomeMeeting). Bringing Damian into this project might save some duplicate effort.
Pidgin (Gaim 2.0+) should have VoIP support which is compatible with Google Talk.
OpenWengo is quite Skype-like, but with GPL-code and full SIP-compliancy. Uses Qt currently. Now called Qutecom.