It’s taken almost five months. but we are finally making tangible inroads in our quest to open-source Aloha, the stuff under the hood of Web21C SDK voice services (including CallFlow).
As Rags and Robbie wrote recently, Aloha is now out there. Whilst we are continuing to push for an OSI approved licence, we are thrilled to be able to share wihat we believe to be a unique tool for developing SIP-based voice applications.
Since this is the first mention of Aloha here, a brief introduction is in order. Essentially, Aloha is several things - a lightweight SIP application server, a set of high level call contol APIs, and a pluggable framework for media server support (currently Convedia / Radisys via MSML, we would love to add Freeswitch).
Aloha has everything SIP application servers don’t: tiny footprint (only a few megs), an intuitive programming model, non-intrusive and flexible integration with apps, and ability to scale down as well as up.
The special sauce that makes this possible has several key ingredients.
Firstly, Spring is the container of choice, keeping things lightweight and affording flexibility required to create nice APIs, with most of the benefits - but without the complexity - of a servlet-based programming model. This also makes it trivial to integrate Aloha with almost any Java app, and extend almost any part of it - media server drivers or persistence mechanisms, for instance.
Secondly, NIST’s reference implementation of the JAIN-SIP API has been invaluable in our drive to simplify and hide some of the gory bits of SIP. Aloha uses it for all of its SIP message and transaction handling, although we found it necessary to rewrite the dialog handling layer as NIST-SIP keeps this in memory.
Thirdly, an impromptu encounter with a passage from Fowler’s Patterns of Enterprise Application Architecture led me to question the orthodoxy of having to use heavyweight containers and pessimistic concurrency handling for SIP. Something that is basically near-real-time asynchronous messaging, where most (but not all) messages flow sequentially within a given context (a dialog, a call, a conference) would surely lend itself to an optimistic concurrency handling scheme? We tried it, we bashed it - and it worked really well, getting only a tiny fraction of concurrent update conflicts even when pumping many messages per second through the server.
Finally, and most importantly, it’s been a privilege to work with several top-notch engineers and incredibly supportive and protective management in making Aloha real. Yes, folks, it does happen.
So - what started life as a lightweight testing tool and a spike on getting Terracotta working with SIP a little over a year ago, currently manages many thousands of calls a day in production, with ability to scale and without astronomical licence fees.
If you have any interest at all in developing voice apps, please do give Aloha a whirl.