Summer of Code is finished. I have just uploaded my code to Google's repository, as requested by Google itself.
During the last 3 months I've been implementing entity capabilities, jingle protocol, jingle audio specification. I used farsight and libjingle for handling the connection, especially the ICE protocol used to pass NATs. I've written (still partially complete) farsight python bindings to use farsight in Gajim. Finally, I glued farsight and gstreamer (for playing/recording voice) with Gajim code.
The jingle protocol was more difficult than it looks. To get voice working, you actually need to implement several protocols, like ICE, rtp and jingle. And this set is still evolving (ICE and jingle are not drafts yet). Different libraries handle different versions of protocols; Debian has libjingle in its package repository, but I was told it is too old to talk with GoogleTalk. Therefore it is hard to maintain compatibility with other VoIP-capable communicators. My knowledge about GStreamer, Farsight and libjingle (libraries used to add VoIP to gajim), and the protocols is also still evolving. All this means that there's plenty of work still to do.
I'd like to thank my mentor Yann Le Boulanger for mentorship, XSF for supporting studends and Google for providing this wonderful opportunity.