Telepathy is a set of specification that allows real time conversation through DBus. Basically you can have a bunch of backends and clients all connected with dbus and speaking the same language to do IM/VOIP/IRC/etc (you chose one). You can see the specification here :
Telepathy Specs.
I've looked around to see what open source OSCAR libraries are available and the best I've found is
joscar/oscar.jar. It is a well written/documented library that implements most of the OSCAR specs, it is BSD like licensed and Adium (a popular IM client on OS X) swtiched from libgaim to joscar. Only potential problem : it is written in Java.
So I started to code my prototype for the OSCAR backend using java + java DBus bindings + joscar. I found out that the DBus bindings were really nice to use (I had to tweak some parts and send some tiny patches, thx mjj29 for the help) and that the joscar library is definitly usefull. In one day I got the DBus backend done with login support and the next day I had support for the contact-list. I'm using
cohoba, a sleek gnome telepathy client written by
Raphaël Slinckx.
So now I'm faced with 3 soultions :
1) I stick to java and add the video conference negotiation support to joscar
2) Find another library (a C library), try to use it and extend it
3) Port joscar to C
I'm quite balanced between 1) and 3) ,
for solution 1) there are concerns about using java as it isn't open source (especially that java 1.5 is needed for both the bindings and joscar)
but there are open implementations that starts to support the java 1.5 stufs (generics and annotations, see gnu-classpath-generics and jamvm)
for solution 3) it seems quite difficult to do a clean port from a garbage collected language to a hand manged memory one. So instead of C I could port to mono or to python.
For now, I'll keep going with java, implement all the stuff needed for conversation/presence support. Then I'll add the video conferencing negotiation to joscar. When this part is done I'll see if it is a good idea to switch to another language