2600Hz Project Provides Preview of “Whistle”
People attending the most recent SFTelephony Meetup were treated to a preview of “Whistle,” a very impressive suite of call processing fabric designed to work on multiple processors at high-volumes with high reliability. For those not familiar with the 2600Hz Project, it is a group of developers organized by VoIP Inc. to create open source telephony software, meaning clusters of components and APIs that enables the use of the FreeSWITCH, Asterisk and YATE switching libraries.
…and “yes,” both the name “2600Hz Project” and “Whistle” are references to the first “phone hacks” (back in the 1960s), which used a plastic whistle that came as prize in boxes of Cap’n Crunch cereal in order to generate audible tones (2600Hz) that spoofed the network into providing free long-distance service. Today, as co-founder Darren Schreiber explained to the Meet-up attendees, the company has found that today’s developers appreciate the availability of freely circulated software that can control the popular open source call processing resources, specifically FreeSwitch, but also including the Asterisk and YATE libraries.
Instead of a plastic whistle, the Whistle suite uses other tools of the trade. OpenSIPS, an open source rendition of a SIP Server, provides for basic call control. Flexibility and scalability are ensured by the use of computer languages and database schema that are relatively new to the telephony domain. The system employs the document-oriented CouchDB. As an open source product from Erlang Ltd, its scripts and programs are written in Erlang, which is described in company-provided documentation as “a general-purpose concurrent programming language and runtime system.”
Then there’s Chef, “an open source systems integration framework” from OpsCode. It is process automation software that allows developers to write source code that describes how they want each part of the infrastructure to be built, then it applies apply those descriptions to the servers. Thus it creates a fully automated way to add or take away servers.
I’m told by the folks who anticipate using Whistle for some heavy-duty call processing that direct access to AMQP (the Advanced Message Queuing Protocol) is also the secret to scaling, right-sizing and load-balancing. As Zhao Lu, organizer of the SFTelephony Meetup explains in his evaluation of the meeting, “Direct access to AMQP will be extremely useful for some of my use cases.” Presumably, granular control of message queuing is especially interesting when the call volumes (need to establish and tear down calls) are hard-to-predict or highly variable.
All in all, I was amazed at how quickly things are changing in the world of telco app development and multi-modal mashups. Whistle, which is designed to run in a highly-distributed way can be instantiated locally (or on premises) or in any number of hosted platforms (for example Voxeo’s Tropo, Twilio or Amazon Web Services EC2). With its JSON-based API’s it can make easy access to highly-reliable, open source call processing and voice processing resources a reality.

By the way, the 2600hz project is scheduled to be the topic of FLOSS Weekly podcast on the 23rd of March.
Thanks for this great write-up. It was also great to learn about your voice recognition research over at Opus – seems like I owe you a blog article, too
A few things to add, if I may.
We are not yet able to interact with, or utilize, services from providers like Twilio or Tropo, but we anticipate the community (or ourselves) will build such bridges. It seems logical. The integrations today are more directly done via service providers like Rackspace or VoIP-centric companies like Synapse Global.
Also, we anticipate adding media engines for Asterisk and/or YATE (as we added Asterisk support to blue.box, for example) but it’s going to depend on demand. By abstracting the calling engine differently this time around then we did with blue.box, it is truly independent and easier to add later, but we’re not going to waste time on that unless there is interest.
A more likely scenario would be to integrate with hardware-based media gateways from Ditech, Dialogic or Sangoma.
One last thing – Erlang is specifically designed for telephony and is 20 years old. It’s just not “popular”. But it’s absolutely the right language for the job.