One week of successful hacking at the Cambridge collaboration hackfest.
After I already struggled with Telepathy for some while, trying to implement DBus tubes over XMPP, Michael Meeks arranged a collaborative hackfest at Cambridge, where Collabora Ltd. is situated who to a large part are the maintainers of the Telepathy library. Nice to meet some of these guys (btw, if you happen to be in Cambridge and are into good Indian food go for the Golden Curry).
So last week Will Thompson from Collabora was set aside to work with us, who was of great help and immediately spotted why my tube acceptor never caught any offered tube, silly me, not spinning GMainLoop yet another time to wait for a specific state change ... Before, a connection to DBus could already be setup and a session between two contacts initiated and a tube offered, but I didn't get to the point where a tube was really established.
What we achieved from Tuesday to Thursday / Friday morning:
- use Empathy's XMPP account and contact list
- establish a DBus tube between an account and a contact
- transfer a file over the tube (which shall be the document to be worked on)
- intercept Calc input (basic proof of concept)
- transfer input as packet through tube
- receive on other end and use as input
Kudos again to Will, who made the fast progress on the Telepathy bits possible. And Michael for tearing apart Calc's ScDocFunc. That I now have to glue together again somehow ;-)
All happens on the LibreOffice feature/tubes2 branch. You're more than welcome to help out, especially if you're familiar with Telepathy or like to implement some dialogs in VCL such as an account/contact picker or have ideas how to improve our bits. You might also be interested that further work on this topic is offered as a Google Summer of Code (GSoC) project. There's plenty to do.
Btw, the next opportunity to collaboratively hack on collaboration would be at the Hamburg Hackfest on April 14/15 :-)
Michael has some more details with bells and whistles and video over at his blog, video here: