So I got kind of allowance to post a little bit about Skype development – how it goes, what problems I face, how I solve them and so on. Kinda daily boring stuff.
I’m still uncertain to what level undisclosure is allowed, so bear with me, I probably will have to edit some posts
First bit I’ll start off with is Public API support. Over the last year I haven’t seen much applications using Skype Public API under Linux. It was probably because of D-BUS API instability, or absence of dbus daemons running on user desktops, but anyway – really annoyed with D-BUS constant changes I decided to drop D-BUS support for next release, and while D-BUS interface will be present, it will be mostly nominal, obsolete version of dbus. Hopefully, when D-BUS is mature enough and all distros have approximately the same, compatible dbus versions installed by default — we will have it back.
]]>Right now I’m implementing message passing via X11 ClientMessages, the interface that is very mature and stable. To allow future enhancements I split the Public API handler in two parts — the API::Dispatcher class that carries main business logic, like keeping track of attached clients and performing commands for them, and several API::Transport classes, API::Transport::X11, API::Transport::DBus and so on. These Transport classes perform actual communication with client programs.
In theory, it should be possible to communicate with Skype from all interfaces at once – due to common Dispatcher you could register via X11, make calls via dbus and open chats via dcop.
I’m also pondering if it is a good idea to make separate skype-dbus, skype-dcop etc. applications and open source them as examples of using Skype Public API via X11.