Whatever happened to Zap?
Some of you might remember a little project called "Zap". Zap was about bringing SIP - the IETF's Session Initiation Protocol - to Mozilla. Zap had a XULRunner-based GUI, but its APIs were also designed to be used as a library in their own right; the idea was not to build yet another VoIP client, but a solid framework on which the next generation of interactive internet communication applications could be built.
For a while things progressed very rapidly: After a few months of development, we took Zap to the 2005 SipIt interop event in Stockholm to pit its protocol stack against other clients and servers. Soon after, we released a very arcane looking version 0.1. Other projects such as Cockatoo started building on the ZAP APIs. Zap quickly moved from version 0.1 to version 0.2.1, at which time it actually became usable as an endpoint for SIP services such as Free World Dialup or OpenWengo. In 2006, I presented Zap at FOSDEM (slides) and we made another release, version 0.2.2.
Then it went a bit quiet around Zap. Development never stopped (as you can see from the checkin logs), but you could say that Zap went into a kind of "maintenance mode". No big features were added, especially on the GUI side, but we took great care to keep the code in sync with the latest Mozilla code and prevent it from bit-rotting.
At the same time, Zap was being used by projects such as the nic.at Emergency Call Project, which extended Zap with an implementation of the IETF's Emergency Call Framework.
Another place where Zap was being used was in the Joost client; although not for its SIP stack, but for Zap's GStreamer-like media processing framework (the ZMK) and JavaScript class system. Quite a bit of work in these areas was fed back by Joost to Zap.
Recently we've started to put some serious focus behind Zap again. At 8x8, my colleague Eilon Yardeni and myself are working full-time on the code. The emphasis at the moment is not so much on the GUI (yet), but on implementing a solid API stack in areas such as UDP sockets, SRV/NAPTR DNS queries, NAT traversal (STUN, TURN, ICE), and of course SIP with its multitude of associated standards.
So in effect what is happening at the moment is a little 'reboot' of the Zap project. The code has been migrated from our Mozilla CVS branch to its own mercurial 'zap-central' repository which tracks the mozilla-central sources. Eilon has implemented the new STUN/TURN drafts (rfc3489bis-17, turn-09), and I have been overhauling some of the backend code and set up a buildbot cluster for our 4 major target platforms (Linux i686 and amd64, OS X, Win32).
If you are interested in finding out more, please visit our recently updated project website.
Expect to hear more of Zap soon!